[yum] - updated latest-head4rawhide.sh to work with fedpkg/git - new yum head patch - bump to 3.2.28-2
Seth Vidal
skvidal at fedoraproject.org
Mon Aug 9 19:15:31 UTC 2010
commit f2d61696c31aa4f04ef2e287248a70480ace47f3
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Mon Aug 9 15:03:26 2010 -0400
- updated latest-head4rawhide.sh to work with fedpkg/git
- new yum head patch
- bump to 3.2.28-2
latest-head4rawhide.sh | 4 +-
yum-HEAD.patch |27296 +-----------------------------------------------
yum.spec | 10 +-
3 files changed, 282 insertions(+), 27028 deletions(-)
---
diff --git a/latest-head4rawhide.sh b/latest-head4rawhide.sh
index 8d19d67..14ef5b9 100755
--- a/latest-head4rawhide.sh
+++ b/latest-head4rawhide.sh
@@ -8,7 +8,7 @@ if [ "x$1" = "xjames" ]; then
fi
if [ "x$1" = "xseth" ]; then
done=true
- cvs=~/proj/fedora/yum/devel
+ cvs=~/proj/fedora/yum/master
git=~/proj/yum/3.2.X
fi
if ! $done; then
@@ -22,7 +22,7 @@ if ! $done; then
fi
cd $cvs
-ver=$(make verrel | perl -lpe 's/-[^-]+$//' | sed s/\\\./-/g)
+ver=$(/usr/bin/fedpkg verrel | perl -lpe 's/-[^-]+$//' | sed s/\\\./-/g)
cd $git
git diff -r $ver > $cvs/yum-HEAD.patch
diff --git a/yum-HEAD.patch b/yum-HEAD.patch
index 1849258..b1666fa 100644
--- a/yum-HEAD.patch
+++ b/yum-HEAD.patch
@@ -1,27063 +1,311 @@
-diff --git a/Makefile b/Makefile
-index d75b220..8065899 100644
---- a/Makefile
-+++ b/Makefile
-@@ -34,7 +34,7 @@ install:
- install -m 755 bin/yum-updatesd.py $(DESTDIR)/usr/sbin/yum-updatesd
-
- mkdir -p $(DESTDIR)/var/cache/yum
-- mkdir -p $(DESTDIR)/var/lib/yum
-+ mkdir -p $(DESTDIR)/var/lib/yum
-
- for d in $(SUBDIRS); do make PYTHON=$(PYTHON) DESTDIR=`cd $(DESTDIR); pwd` -C $$d install; [ $$? = 0 ] || exit 1; done
-
-diff --git a/cli.py b/cli.py
-index f5ed53d..9542b7a 100644
---- a/cli.py
-+++ b/cli.py
-@@ -100,6 +100,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- self.registerCommand(yumcommands.VersionCommand())
- self.registerCommand(yumcommands.HistoryCommand())
- self.registerCommand(yumcommands.CheckRpmdbCommand())
-+ self.registerCommand(yumcommands.DistroSyncCommand())
-
- def registerCommand(self, command):
- for name in command.getNames():
-@@ -149,7 +150,34 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- usage += "%s\n" % command.getNames()[0]
-
- return usage
--
-+
-+ def _parseSetOpts(self, setopts):
-+ """parse the setopts list handed to us and saves the results as
-+ repo_setopts and main_setopts in the yumbase object"""
-+
-+ repoopts = {}
-+ mainopts = yum.misc.GenericHolder()
-+ mainopts.items = []
-+
-+ for item in setopts:
-+ k,v = item.split('=')
-+ period = k.find('.')
-+ if period != -1:
-+ repo = k[:period]
-+ k = k[period+1:]
-+ if repo not in repoopts:
-+ repoopts[repo] = yum.misc.GenericHolder()
-+ repoopts[repo].items = []
-+ setattr(repoopts[repo], k, v)
-+ repoopts[repo].items.append(k)
-+ else:
-+ setattr(mainopts, k, v)
-+ mainopts.items.append(k)
-+
-+ self.main_setopts = mainopts
-+ self.repo_setopts = repoopts
-+
-+
- def getOptionsConfig(self, args):
- """parses command line arguments, takes cli args:
- sets up self.conf and self.cmds as well as logger objects
-@@ -166,6 +194,13 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- opts.quiet = True
- opts.verbose = False
-
-+ # go through all the setopts and set the global ones
-+ self._parseSetOpts(opts.setopts)
-+
-+ if self.main_setopts:
-+ for opt in self.main_setopts.items:
-+ setattr(opts, opt, getattr(self.main_setopts, opt))
-+
- # get the install root to use
- root = self.optparser.getRoot(opts)
-
-@@ -189,7 +224,12 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- pc.enabled_plugins = self.optparser._splitArg(opts.enableplugins)
- pc.releasever = opts.releasever
- self.conf
--
-+
-+ # now set all the non-first-start opts from main from our setopts
-+ if self.main_setopts:
-+ for opt in self.main_setopts.items:
-+ setattr(self.conf, opt, getattr(self.main_setopts, opt))
-+
- except yum.Errors.ConfigError, e:
- self.logger.critical(_('Config Error: %s'), e)
- sys.exit(1)
-@@ -305,7 +345,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- p = re.compile('needs (\d+)MB on the (\S+) filesystem')
- disk = {}
- for m in p.finditer(errstring):
-- if not disk.has_key(m.group(2)):
-+ if m.group(2) not in disk:
- disk[m.group(2)] = int(m.group(1))
- if disk[m.group(2)] < int(m.group(1)):
- disk[m.group(2)] = int(m.group(1))
-@@ -376,12 +416,18 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
-
- # Check which packages have to be downloaded
- downloadpkgs = []
-+ rmpkgs = []
- stuff_to_download = False
- install_only = True
-+ remove_only = True
- for txmbr in self.tsInfo.getMembers():
- if txmbr.ts_state not in ('i', 'u'):
- install_only = False
-+ po = txmbr.po
-+ if po:
-+ rmpkgs.append(po)
- else:
-+ remove_only = False
- stuff_to_download = True
- po = txmbr.po
- if po:
-@@ -394,7 +440,9 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
-
- # Report the total download size to the user, so he/she can base
- # the answer on this info
-- if stuff_to_download:
-+ if not stuff_to_download:
-+ self.reportRemoveSize(rmpkgs)
-+ else:
- self.reportDownloadSize(downloadpkgs, install_only)
-
- # confirm with user
-@@ -594,6 +642,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
-
- oldcount = len(self.tsInfo)
-
-+ done = False
- for arg in userlist:
- if (arg.endswith('.rpm') and (yum.misc.re_remote_url(arg) or
- os.path.exists(arg))):
-@@ -608,8 +657,13 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- self.term.MODE['bold'], arg,
- self.term.MODE['normal'])
- self._maybeYouMeant(arg)
-+ else:
-+ done = True
- if len(self.tsInfo) > oldcount:
- return 2, [_('Package(s) to install')]
-+
-+ if not done:
-+ return 1, [_('Nothing to do')]
- return 0, [_('Nothing to do')]
-
- def updatePkgs(self, userlist, quiet=0):
-@@ -649,6 +703,75 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- else:
- return 0, [_('No Packages marked for Update')]
-
-+ # Note that we aren't in __init__ yet for a couple of reasons, but we
-+ # probably will get there for 3.2.28.
-+ def distroSyncPkgs(self, userlist):
-+ """ This does either upgrade/downgrade, depending on if the latest
-+ installed version is older or newer. We allow "selection" but not
-+ local packages (use tmprepo, or something). """
-+
-+ dupdates = []
-+ ipkgs = {}
-+ for pkg in sorted(self.rpmdb.returnPackages(patterns=userlist)):
-+ ipkgs[pkg.name] = pkg
-+
-+ obsoletes = []
-+ if self.conf.obsoletes:
-+ obsoletes = self.up.getObsoletesTuples(newest=1)
-+
-+ for (obsoleting, installed) in obsoletes:
-+ if installed[0] not in ipkgs:
-+ continue
-+ dupdates.extend(self.update(pkgtup=installed))
-+ for (obsoleting, installed) in obsoletes:
-+ if installed[0] not in ipkgs:
-+ continue
-+ del ipkgs[installed[0]]
-+
-+ apkgs = {}
-+ pkgs = []
-+ if ipkgs:
-+ try:
-+ pkgs = self.pkgSack.returnNewestByName(patterns=ipkgs.keys())
-+ except yum.Errors.PackageSackError:
-+ pkgs = []
-+
-+ for pkg in pkgs:
-+ if pkg.name not in ipkgs:
-+ continue
-+ apkgs[pkg.name] = pkg
-+
-+ for ipkgname in ipkgs:
-+ if ipkgname not in apkgs:
-+ continue
-+
-+ ipkg = ipkgs[ipkgname]
-+ apkg = apkgs[ipkgname]
-+ if ipkg.verEQ(apkg):
-+ continue
-+ if self.allowedMultipleInstalls(apkg):
-+ found = False
-+ for napkg in self.rpmdb.searchNames([apkg.name]):
-+ if napkg.verEQ(apkg):
-+ found = True
-+ elif napkg.verGT(apkg):
-+ dupdates.extend(self.remove(po=napkg))
-+ if found:
-+ continue
-+ dupdates.extend(self.install(pattern=apkg.name))
-+ elif ipkg.verLT(apkg):
-+ n,a,e,v,r = apkg.pkgtup
-+ dupdates.extend(self.update(name=n, epoch=e, ver=v, rel=r))
-+ else:
-+ n,a,e,v,r = apkg.pkgtup
-+ dupdates.extend(self.downgrade(name=n, epoch=e, ver=v, rel=r))
-+
-+ if dupdates:
-+ msg = _('%d packages marked for Distribution Synchronization') % len(dupdates)
-+ return 2, [msg]
-+ else:
-+ return 0, [_('No Packages marked for Distribution Synchronization')]
-+
- def erasePkgs(self, userlist):
- """take user commands and populate a transaction wrapper with packages
- to be erased/removed"""
-@@ -710,15 +833,15 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- except yum.Errors.ReinstallRemoveError:
- self._checkMaybeYouMeant(arg, always_output=False)
- except yum.Errors.ReinstallInstallError, e:
-- ipkg = self.rpmdb.returnPackages(patterns=[arg])[0]
-- xmsg = ''
-- if 'from_repo' in ipkg.yumdb_info:
-- xmsg = ipkg.yumdb_info.from_repo
-- xmsg = _(' (from %s)') % xmsg
-- self.verbose_logger.log(yum.logginglevels.INFO_2,
-- _('Installed package %s%s%s%s not available.'),
-- self.term.MODE['bold'], ipkg,
-- self.term.MODE['normal'], xmsg)
-+ for ipkg in e.failed_pkgs:
-+ xmsg = ''
-+ if 'from_repo' in ipkg.yumdb_info:
-+ xmsg = ipkg.yumdb_info.from_repo
-+ xmsg = _(' (from %s)') % xmsg
-+ msg = _('Installed package %s%s%s%s not available.')
-+ self.verbose_logger.log(yum.logginglevels.INFO_2, msg,
-+ self.term.MODE['bold'], ipkg,
-+ self.term.MODE['normal'], xmsg)
- except yum.Errors.ReinstallError, e:
- assert False, "Shouldn't happen, but just in case"
- self.verbose_logger.log(yum.logginglevels.INFO_2, e)
-@@ -740,6 +863,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
-
- installing = False
- for pkg in filelist:
-+ if not pkg.endswith('.rpm'):
-+ self.verbose_logger.log(yum.logginglevels.INFO_2,
-+ "Skipping: %s, filename does not end in .rpm.", pkg)
-+ continue
- txmbrs = self.installLocal(pkg, updateonly=updateonly)
- if txmbrs:
- installing = True
-@@ -891,6 +1018,9 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
- def cleanCli(self, userlist):
- hdrcode = pkgcode = xmlcode = dbcode = expccode = 0
- pkgresults = hdrresults = xmlresults = dbresults = expcresults = []
-+ msg = self.fmtKeyValFill(_('Cleaning repos: '),
-+ ' '.join([ x.id for x in self.repos.listEnabled()]))
-+ self.verbose_logger.log(yum.logginglevels.INFO_2, msg)
- if 'all' in userlist:
- self.verbose_logger.log(yum.logginglevels.INFO_2,
- _('Cleaning up Everything'))
-@@ -1149,7 +1279,8 @@ class YumOptionParser(OptionParser):
- args = _filtercmdline(
- ('--noplugins','--version','-q', '-v', "--quiet", "--verbose"),
- ('-c', '-d', '-e', '--installroot',
-- '--disableplugin', '--enableplugin', '--releasever'),
-+ '--disableplugin', '--enableplugin', '--releasever',
-+ '--setopt'),
- args)
- except ValueError, arg:
- self.base.usage()
-@@ -1383,7 +1514,8 @@ class YumOptionParser(OptionParser):
- help=_("control whether color is used"))
- group.add_option("", "--releasever", dest="releasever", default=None,
- help=_("set value of $releasever in yum config and repo files"))
--
-+ group.add_option("", "--setopt", dest="setopts", default=[],
-+ action="append", help=_("set arbitrary config and repo options"))
-
-
- def _filtercmdline(novalopts, valopts, args):
-diff --git a/docs/yum.8 b/docs/yum.8
-index 8d42d9d..281bf17 100644
---- a/docs/yum.8
-+++ b/docs/yum.8
-@@ -27,6 +27,8 @@ gnome\-packagekit application\&.
- .br
- .I \fR * upgrade [package1] [package2] [\&.\&.\&.]
- .br
-+.I \fR * distribution-synchronization [package1] [package2] [\&.\&.\&.]
-+.br
- .I \fR * remove | erase package1 [package2] [\&.\&.\&.]
- .br
- .I \fR * list [\&.\&.\&.]
-@@ -56,8 +58,10 @@ gnome\-packagekit application\&.
- .I \fR * resolvedep dep1 [dep2] [\&.\&.\&.]
- .br
- .I \fR * localinstall rpmfile1 [rpmfile2] [\&.\&.\&.]
-+ (maintained for legacy reasons only - use install)
- .br
--.I \fR * localupdate rpmfile1 [rpmfile2] [\&.\&.\&.]
-+.I \fR * localupdate rpmfile1 [rpmfile2] [\&.\&.\&.]
-+ (maintained for legacy reasons only - use update)
- .br
- .I \fR * reinstall package1 [package2] [\&.\&.\&.]
- .br
-@@ -67,9 +71,9 @@ gnome\-packagekit application\&.
- .br
- .I \fR * repolist [all|enabled|disabled]
- .br
--.I \fR * version [all|installed|available|group-*|grouplist|groupinfo]
-+.I \fR * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
- .br
--.I \fR * history [info|list|summary|redo|undo|new]
-+.I \fR * history [info|list|summary|redo|undo|new|addon-info]
- .br
- .I \fR * check
- .br
-@@ -87,7 +91,9 @@ group of packages while ensuring that all dependencies are
- satisfied\&. (See \fBSpecifying package names\fP for more information)
- If no package matches the given package name(s), they are assumed to be a shell
- glob and any matches are then installed\&. If the name starts with an
--@ character the rest of the name is used as though passed to the groupinstall command\&. If the name is a file, then install works
-+@ character the rest of the name is used as though passed to the groupinstall
-+command\&. If the name starts with a - character, then a search is done within
-+the transaction and any matches are removed. If the name is a file, then install works
- like localinstall\&. If the name doesn't match a package, then package
- "provides" are searched (Eg. "_sqlitecache.so()(64bit)") as are
- filelists (Eg. "/usr/bin/yum"). Also note that for filelists, wildcards will
-@@ -119,11 +125,24 @@ Running in verbose mode also shows obsoletes.
- Is the same as the update command with the \-\-obsoletes flag set. See update
- for more details.
- .IP
-+.IP "\fBdistribution\-synchronization\fP or \fBdistro\-sync\fP"
-+Synchronizes the installed package set with the latest packages available, this
-+is done by either obsoleting, upgrading or downgrading as appropriate. This will
-+"normally" do the same thing as the upgrade command however if you have the
-+package FOO installed at version 4, and the latest available is only
-+version 3, then this command will \fBdowngrade\fP FOO to version 3.
-+
-+This command does not perform operations on groups, local packages or negative
-+selections.
-+.IP
- .IP "\fBremove\fP or \fBerase\fP"
- Are used to remove the specified packages from the system
- as well as removing any packages which depend on the package being
- removed\&. remove operates on groups, files, provides and filelists just like
- the "install" command\&.(See \fBSpecifying package names\fP for more information)
-+
-+Note that "yum" is included in the protected_packages configuration, by default.
-+So you can't accidentally remove yum itself.
- .IP
- .IP "\fBlist\fP"
- Is used to list various information about available
-@@ -180,6 +199,9 @@ Is used to remove all of the packages in a group, unlike "groupinstall" this
- will remove everything regardless of group_package_types. It is worth pointing
- out that packages can be in more than one group, so "groupinstall X Y" followed
- by "groupremove Y" does not do give you the same result as "groupinstall X".
-+
-+The groupremove_leaf_only configuration changes the behaviour of this command
-+to only remove packages which aren't required by something else.
- .IP
- .IP "\fBgroupinfo\fP"
- Is used to give the description and package list of a group (and which type
-@@ -200,14 +222,16 @@ package is listed per dependency.
- .IP "\fBlocalinstall\fP"
- Is used to install a set of local rpm files. If required the enabled
- repositories will be used to resolve dependencies. Note that the install command
--will do a local install, if given a filename.
-+will do a local install, if given a filename. This option is maintained for legacy
-+reasons only.
- .IP
- .IP "\fBlocalupdate\fP"
- Is used to update the system by specifying local rpm files. Only the specified
- rpm files of which an older version is already installed will be installed,
- the remaining specified packages will be ignored.
- If required the enabled repositories will be used to resolve dependencies. Note
--that the update command will do a local install, if given a filename.
-+that the update command will do a local update, if given a filename. This option is maintained for
-+legacy reasons only.
- .IP
- .IP "\fBreinstall\fP"
- Will reinstall the identically versioned package as is currently installed.
-@@ -220,7 +244,7 @@ previously highest version (or the specified version).
- The depsolver will not necessarily work, but if you specify all the packages it
- should work (and thus. all the simple cases will work). Also this does not
- work for "installonly" packages, like Kernels. downgrade operates
--on groups, files, provides and filelists just like the "install" command\&.
-+on groups, files, provides, filelists and rpm files just like the "install" command\&.
- .IP
- .IP "\fBdeplist\fP"
- Produces a list of all dependencies and what packages provide those
-@@ -254,6 +278,24 @@ information is listed. The version is calculated by taking a sha1 hash of the
- packages (in sorted order), and the checksum_type/checksum_data entries from
- the yumdb. Note that this rpmdb version is now also used significantly within
- yum (esp. in yum history).
-+
-+The version command will now show "groups" of packages as a separate version,
-+and so takes sub-commands:
-+
-+"version grouplist" - List the defined version groups.
-+
-+"version groupinfo" - Get the complete list of packages within one or more version groups.
-+
-+"version installed" - This is the default, only show the version information for installed packages.
-+
-+"version available" - Only show the version information for available packages.
-+
-+"version all" - Show the version information for installed and available packages.
-+
-+"version nogroups | nogroups-*" - Just show the main version information.
-+
-+"version group-*" - Just show the grouped version information, if more arguments are given then only show the data for those groups.
-+
- .IP
- .IP "\fBhistory\fP"
- The history command allows the user to view what has happened in past
-@@ -280,6 +322,12 @@ if there was something not good with the transaction.
- .br
- .I \fB#\fR - The transaction completed, but with a non-zero status.
- .br
-+.I \fBE\fR - The transaction completed fine, but had warning/error output during the transaction.
-+.br
-+.I \fBP\fR - The transaction completed fine, but problems already existed in the rpmdb.
-+.br
-+.I \fBs\fR - The transaction completed fine, but --skip-broken was enabled and had to skip some packages.
-+.br
-
- .IP
- .IP "\fBcheck\fP"
-@@ -403,6 +451,11 @@ $releasever in your cachedir configuration to stop this).
- .IP "\fB\-t, \-\-tolerant\fP"
- This option currently does nothing.
- .br
-+.IP "\fB\-\-setopt=option=value\fP"
-+Set any config option in yum config or repo files. For options in the global
-+config just use: \-\-setopt=option=value for repo options use: \-\-setopt=repoid.option=value
-+.PP
-+
- .SH "LIST OPTIONS"
- The following are the ways which you can invoke \fByum\fP in list
- mode\&. Note that all \fBlist\fP commands include information on the
-diff --git a/docs/yum.conf.5 b/docs/yum.conf.5
-index cca3db7..49d98c6 100644
---- a/docs/yum.conf.5
-+++ b/docs/yum.conf.5
-@@ -62,6 +62,17 @@ Debug scriptlet output level. 'info' is the default, other
- options are: 'critical', 'emergency', 'error', 'warn' and 'debug'.
-
- .IP
-+\fBprotected_packages\fR
-+This is a list of packages that yum should never completely remove. They are
-+protected via. Obsoletes as well as user/plugin removals.
-+
-+The default is: yum glob:/etc/yum/protected.d/*.conf
-+So any packages which should be protected can do so by including a file in
-+/etc/yum/protected.d with their package name in it.
-+
-+Also if this configuration is set to anything, then yum will protect the
-+package corresponding to the running version of the kernel.
-+.IP
- \fBlogfile\fR
- Full directory and file name for where yum should write its log file.
-
-@@ -167,6 +178,14 @@ repository will be used. If \fBoverwrite_groups\fR is `0' then the groups
- from all matching repositories will be merged together as one large group.
-
- .IP
-+\fBgroupremove_leaf_only \fR
-+Either `0' or `1'. Used to determine yum's behaviour when the groupremove
-+command is run. If \fBgroupremove_leaf_only\fR is `0' (default) then
-+all packages in the group will be removed. If \fBgroupremove_leaf_only\fR is
-+`1' then only those packages in the group that aren't required by another
-+package will be removed.
-+
-+.IP
- \fBenable_group_conditionals\fR
- Either `0' or `1'. Determines whether yum will allow the use of conditionals
- packages. Default is `1' (package conditionals are allowed).
-@@ -198,7 +217,9 @@ diskspace before a RPM transaction is run. Default is `1' (perform the check).
- .IP
- \fBtsflags\fR
- Comma or space separated list of transaction flags to pass to the rpm
--transaction set. These include 'noscripts', 'notriggers', 'nodocs', 'test', and 'repackage'.
-+transaction set. These include 'noscripts', 'notriggers', 'nodocs', 'test',
-+'justdb' and 'nocontexts'. 'repackage' is also available but that does nothing
-+with newer rpm versions.
- You can set all/any of them. However, if you don't know what these do in the
- context of an rpm transaction set you're best leaving it alone. Default is
- an empty list.
-@@ -289,6 +310,17 @@ lot of information about what has happened before, and display it to the user
- with the history info/list/summary commands. yum also provides the
- history undo/redo commands. Defaults to True.
-
-+Note that if history is recorded, yum uses that information to see if any
-+modifications to the rpmdb have been done outside of yum. These are always bad,
-+from yum's point of view, and so yum will issue a warning and automatically
-+run some of "yum check" to try and find some of the worst problems altering
-+the rpmdb might have caused.
-+.IP
-+This means that turning this option off will stop yum from being able to
-+detect when the rpmdb has changed and thus. it will never warn you or
-+automatically run "yum check". The problems will likely still be there, and
-+yumdb etc. will still be wrong but yum will not warn you about it.
-+
- .IP
- \fBhistory_record_packages \fR
- This is a list of package names that should be recorded as having helped the
-@@ -304,11 +336,17 @@ on the command line (eg. "update foo bar baz quux"). None of the short options
-
- .IP
- \fBsyslog_ident \fR
--XXX not implemented yet
-+Identification (program name) for syslog messages.
-
- .IP
- \fBsyslog_facility \fR
--XXX not implemented yet
-+Facility name for syslog messages, see syslog(3). Default is `LOG_USER'.
-+
-+.IP
-+\fBsyslog_device \fR
-+Where to log syslog messages. Can be a local device (path) or a host:port
-+string to use a remote syslog. If empty or points to a nonexistent device,
-+syslog logging is disabled. Default is `/dev/log'.
-
- .IP
- \fBproxy \fR
-@@ -720,6 +758,14 @@ The configuration file will be inserted at the position of the "include=" line.
- Included files may contain further include lines. Yum will abort with an error
- if an inclusion loop is detected.
-
-+.SH "GLOB: FOR LIST OPTIONS"
-+.LP
-+Any of the configurations options which are a list of items can be specfied
-+using the glob syntax: \fBglob:/etc/path/somewhere.d/*.conf\fR. This
-+will read in all files matching that glob and include all lines in each file
-+(excluding comments and blank lines) as items in the list.
-+.LP
-+
- .SH "VARIABLES"
- .LP
- There are a number of variables you can use to ease maintenance of yum's
-@@ -755,12 +801,25 @@ These will be replaced with the value of the shell environment variable of
- the same name. If the shell environment variable does not exist then the
- configuration file variable will not be replaced.
-
-+.LP
-+As of 3.2.28, any file in /etc/yum/vars is turned into a variable named after
-+the filename (or overrides any of the above variables).
-+
-+Note that no warnings/errors are given if the files are unreadable, so creating
-+files that only root can read may be confusing for users.
-+
-+Also note that only the first line will be read and all new line
-+characters are removed, as a convenience. However, no other checking is
-+performed on the data. This means it is possible to have bad character
-+data in any value.
-
- .SH "FILES"
- .nf
- /etc/yum/yum.conf
- /etc/yum/repos.d/
- /etc/yum/pluginconf.d/
-+/etc/yum/protected.d
-+/etc/yum/vars
-
- .SH "SEE ALSO"
- .LP
-diff --git a/etc/Makefile b/etc/Makefile
-index 68dd3c2..a512cdf 100644
---- a/etc/Makefile
-+++ b/etc/Makefile
-@@ -8,7 +8,9 @@ clean:
-
- install:
- mkdir -p $(DESTDIR)/etc/yum/
-+ mkdir -p $(DESTDIR)/etc/yum/protected.d
- mkdir -p $(DESTDIR)/etc/yum/repos.d
-+ mkdir -p $(DESTDIR)/etc/yum/vars
-
- install -m 644 yum.conf $(YUMETC)/yum.conf
-
-diff --git a/etc/yum.bash b/etc/yum.bash
-index 5dfdb64..3e6e243 100644
---- a/etc/yum.bash
-+++ b/etc/yum.bash
-@@ -81,13 +81,13 @@ _yum()
- local prev=$3
- local cmds=( check check-update clean deplist downgrade groupinfo
- groupinstall grouplist groupremove help history info install list
-- localinstall makecache provides reinstall remove repolist resolvedep
-- search shell update upgrade version )
-+ localinstall localupdate makecache provides reinstall remove repolist resolvedep
-+ search shell update upgrade version distro-sync )
-
- local i c cmd
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do
- for c in ${cmds[@]} check-rpmdb erase groupupdate grouperase \
-- whatprovides ; do
-+ whatprovides distribution-synchronization ; do
- [ ${COMP_WORDS[i]} = $c ] && cmd=$c && break
- done
- [ -z $cmd ] || break
-@@ -102,7 +102,7 @@ _yum()
- ;;
-
- check-update|grouplist|makecache|provides|whatprovides|resolvedep|\
-- search|version)
-+ search)
- return 0
- ;;
-
-@@ -132,7 +132,7 @@ _yum()
- return 0
- ;;
-
-- erase|remove)
-+ erase|remove|distro-sync|distribution-synchronization)
- _yum_list installed "$cur"
- return 0
- ;;
-@@ -214,6 +214,13 @@ _yum()
- fi
- return 0
- ;;
-+ version)
-+ if [ "$prev" = version ] ; then
-+ COMPREPLY=( $( compgen -W 'all installed available nogroups
-+ grouplist groupinfo' -- "$cur" ) )
-+ fi
-+ return 0
-+ ;;
- esac
-
- local split=false
-@@ -274,7 +281,7 @@ _yum()
- ;;
-
- -R|--randomwait|-x|--exclude|-h|--help|--version|--releasever|--cve|\
-- --bz|--advisory|--tmprepo|--verify-filenames)
-+ --bz|--advisory|--tmprepo|--verify-filenames|--setopt)
- return 0
- ;;
-
-@@ -302,7 +309,7 @@ _yum()
- --quiet --verbose --assumeyes --version --installroot --enablerepo
- --disablerepo --exclude --disableexcludes --obsoletes --noplugins
- --nogpgcheck --disableplugin --enableplugin --skip-broken --color
-- --releasever ${cmds[@]}' -- "$cur" ) )
-+ --releasever --setopt ${cmds[@]}' -- "$cur" ) )
- } &&
- complete -F _yum -o filenames yum yummain.py
-
-diff --git a/output.py b/output.py
-index b09730a..3a90995 100755
---- a/output.py
-+++ b/output.py
-@@ -379,10 +379,24 @@ class YumOutput:
- for d in range(0, cols):
- data[d] = sorted(pdata[d].items())
-
-+ # We start allocating 1 char to everything but the last column, and a
-+ # space between each (again, except for the last column). Because
-+ # at worst we are better with:
-+ # |one two three|
-+ # | four |
-+ # ...than:
-+ # |one two three|
-+ # | f|
-+ # |our |
-+ # ...the later being what we get if we pre-allocate the last column, and
-+ # thus. the space, due to "three" overflowing it's column by 2 chars.
- if columns is None:
-- columns = [1] * cols
-+ columns = [1] * (cols - 1)
-+ columns.append(0)
-
- total_width -= (sum(columns) + (cols - 1) + utf8_width(indent))
-+ if not columns[-1]:
-+ total_width += 1
- while total_width > 0:
- # Find which field all the spaces left will help best
- helps = 0
-@@ -406,6 +420,10 @@ class YumOutput:
- # that column and start again with any remaining space.
- if helps:
- diff = data[val].pop(0)[0] - columns[val]
-+ if not columns[val] and (val == (cols - 1)):
-+ # If we are going from 0 => N on the last column, take 1
-+ # for the space before the column.
-+ total_width -= 1
- columns[val] += diff
- total_width -= diff
- continue
-@@ -452,8 +470,10 @@ class YumOutput:
- (hibeg, hiend) = self._highlight(highlight)
- return (val, width, hibeg, hiend)
-
-- def fmtColumns(self, columns, msg=u'', end=u''):
-- """ Return a string for columns of data, which can overflow."""
-+ def fmtColumns(self, columns, msg=u'', end=u'', text_width=utf8_width):
-+ """ Return a string for columns of data, which can overflow.
-+ text_width parameter finds the width of columns, this defaults to
-+ utf8 but can be changed to len() if you know it'll be fine. """
-
- total_width = len(msg)
- data = []
-@@ -466,11 +486,16 @@ class YumOutput:
- continue
-
- (align, width) = self._fmt_column_align_width(width)
-- if utf8_width(val) <= width:
-- msg += u"%s "
-- val = utf8_width_fill(val, width, left=(align == u'-'),
-- prefix=hibeg, suffix=hiend)
-- data.append(val)
-+ val_width = text_width(val)
-+ if val_width <= width:
-+ # Don't use utf8_width_fill() because it sucks performance
-+ # wise for 1,000s of rows. Also allows us to use len(), when
-+ # we can.
-+ msg += u"%s%s%s%s "
-+ if (align == u'-'):
-+ data.extend([hibeg, val, " " * (width - val_width), hiend])
-+ else:
-+ data.extend([hibeg, " " * (width - val_width), val, hiend])
- else:
- msg += u"%s%s%s\n" + " " * (total_width + width + 1)
- data.extend([hibeg, val, hiend])
-@@ -495,7 +520,7 @@ class YumOutput:
- hi_cols = [highlight, 'normal', 'normal']
- rid = pkg.ui_from_repo
- columns = zip((na, ver, rid), columns, hi_cols)
-- print self.fmtColumns(columns)
-+ print self.fmtColumns(columns, text_width=len)
-
- def simpleEnvraList(self, pkg, ui_overflow=False,
- indent='', highlight=False, columns=None):
-@@ -508,7 +533,7 @@ class YumOutput:
- hi_cols = [highlight, 'normal', 'normal']
- rid = pkg.ui_from_repo
- columns = zip((envra, rid), columns, hi_cols)
-- print self.fmtColumns(columns)
-+ print self.fmtColumns(columns, text_width=len)
-
- def fmtKeyValFill(self, key, val):
- """ Return a key value pair in the common two column output format. """
-@@ -551,27 +576,42 @@ class YumOutput:
-
- def infoOutput(self, pkg, highlight=False):
- (hibeg, hiend) = self._highlight(highlight)
-- print _("Name : %s%s%s") % (hibeg, to_unicode(pkg.name), hiend)
-- print _("Arch : %s") % to_unicode(pkg.arch)
-+ print _("Name : %s%s%s") % (hibeg, to_unicode(pkg.name), hiend)
-+ print _("Arch : %s") % to_unicode(pkg.arch)
- if pkg.epoch != "0":
-- print _("Epoch : %s") % to_unicode(pkg.epoch)
-- print _("Version : %s") % to_unicode(pkg.version)
-- print _("Release : %s") % to_unicode(pkg.release)
-- print _("Size : %s") % self.format_number(float(pkg.size))
-- print _("Repo : %s") % to_unicode(pkg.repoid)
-+ print _("Epoch : %s") % to_unicode(pkg.epoch)
-+ print _("Version : %s") % to_unicode(pkg.version)
-+ print _("Release : %s") % to_unicode(pkg.release)
-+ print _("Size : %s") % self.format_number(float(pkg.size))
-+ print _("Repo : %s") % to_unicode(pkg.repoid)
- if pkg.repoid == 'installed' and 'from_repo' in pkg.yumdb_info:
-- print _("From repo : %s") % to_unicode(pkg.yumdb_info.from_repo)
-+ print _("From repo : %s") % to_unicode(pkg.yumdb_info.from_repo)
- if self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3):
-- print _("Committer : %s") % to_unicode(pkg.committer)
-- print _("Committime : %s") % time.ctime(pkg.committime)
-- print _("Buildtime : %s") % time.ctime(pkg.buildtime)
-+ print _("Committer : %s") % to_unicode(pkg.committer)
-+ print _("Committime : %s") % time.ctime(pkg.committime)
-+ print _("Buildtime : %s") % time.ctime(pkg.buildtime)
- if hasattr(pkg, 'installtime'):
-- print _("Installtime: %s") % time.ctime(pkg.installtime)
-- print self.fmtKeyValFill(_("Summary : "), self._enc(pkg.summary))
-+ print _("Install time: %s") % time.ctime(pkg.installtime)
-+ if pkg.repoid == 'installed':
-+ uid = None
-+ if 'installed_by' in pkg.yumdb_info:
-+ try:
-+ uid = int(pkg.yumdb_info.installed_by)
-+ except ValueError: # In case int() fails
-+ uid = None
-+ print _("Installed by: %s") % self._pwd_ui_username(uid)
-+ uid = None
-+ if 'changed_by' in pkg.yumdb_info:
-+ try:
-+ uid = int(pkg.yumdb_info.changed_by)
-+ except ValueError: # In case int() fails
-+ uid = None
-+ print _("Changed by : %s") % self._pwd_ui_username(uid)
-+ print self.fmtKeyValFill(_("Summary : "), self._enc(pkg.summary))
- if pkg.url:
-- print _("URL : %s") % to_unicode(pkg.url)
-- print self.fmtKeyValFill(_("License : "), to_unicode(pkg.license))
-- print self.fmtKeyValFill(_("Description: "), self._enc(pkg.description))
-+ print _("URL : %s") % to_unicode(pkg.url)
-+ print self.fmtKeyValFill(_("License : "), to_unicode(pkg.license))
-+ print self.fmtKeyValFill(_("Description : "),self._enc(pkg.description))
- print ""
-
- def updatesObsoletesList(self, uotup, changetype, columns=None):
-@@ -927,6 +967,26 @@ class YumOutput:
- self.verbose_logger.log(logginglevels.INFO_1,
- _("Installed size: %s"),
- self.format_number(insize))
-+
-+ def reportRemoveSize(self, packages):
-+ """Report the total size of packages being removed. """
-+ totsize = 0
-+ error = False
-+ for pkg in packages:
-+ # Just to be on the safe side, if for some reason getting
-+ # the package size fails, log the error and don't report download
-+ # size
-+ try:
-+ size = int(pkg.size)
-+ totsize += size
-+ except:
-+ error = True
-+ self.logger.error(_('There was an error calculating installed size'))
-+ break
-+ if (not error):
-+ self.verbose_logger.log(logginglevels.INFO_1,
-+ _("Installed size: %s"),
-+ self.format_number(totsize))
-
- def listTransaction(self):
- """returns a string rep of the transaction in an easy-to-read way."""
-@@ -1030,22 +1090,29 @@ Transaction Summary
- out.append(summary)
- num_in = len(self.tsInfo.installed + self.tsInfo.depinstalled)
- num_up = len(self.tsInfo.updated + self.tsInfo.depupdated)
-- summary = _("""\
--Install %5.5s Package(s)
--Upgrade %5.5s Package(s)
--""") % (num_in, num_up,)
-- if num_in or num_up: # Always do this?
-- out.append(summary)
- num_rm = len(self.tsInfo.removed + self.tsInfo.depremoved)
- num_re = len(self.tsInfo.reinstalled)
- num_dg = len(self.tsInfo.downgraded)
-- summary = _("""\
-+ if num_in:
-+ out.append(_("""\
-+Install %5.5s Package(s)
-+""") % num_in)
-+ if num_up:
-+ out.append(_("""\
-+Upgrade %5.5s Package(s)
-+""") % num_up)
-+ if num_rm:
-+ out.append(_("""\
- Remove %5.5s Package(s)
-+""") % num_rm)
-+ if num_re:
-+ out.append(_("""\
- Reinstall %5.5s Package(s)
-+""") % num_re)
-+ if num_dg:
-+ out.append(_("""\
- Downgrade %5.5s Package(s)
--""") % (num_rm, num_re, num_dg)
-- if num_rm or num_re or num_dg:
-- out.append(summary)
-+""") % num_dg)
-
- return ''.join(out)
-
-@@ -1121,19 +1188,31 @@ Downgrade %5.5s Package(s)
- # progress bars - this is hacky - I'm open to other options
- # One of these is a download
- if self.conf.debuglevel < 2 or not sys.stdout.isatty():
-- self.repos.setProgressBar(None)
-- self.repos.callback = None
-+ progressbar = None
-+ callback = None
- else:
-- self.repos.setProgressBar(YumTextMeter(fo=sys.stdout))
-- self.repos.callback = CacheProgressCallback()
-+ progressbar = YumTextMeter(fo=sys.stdout)
-+ callback = CacheProgressCallback()
-
- # setup our failure report for failover
- freport = (self.failureReport,(),{})
-- self.repos.setFailureCallback(freport)
-+ failure_callback = freport
-
- # setup callback for CTRL-C's
-- self.repos.setInterruptCallback(self.interrupt_callback)
--
-+ interrupt_callback = self.interrupt_callback
-+ if hasattr(self, 'prerepoconf'):
-+ self.prerepoconf.progressbar = progressbar
-+ self.prerepoconf.callback = callback
-+ self.prerepoconf.failure_callback = failure_callback
-+ self.prerepoconf.interrupt_callback = interrupt_callback
-+ else:
-+ # Just in case some API user decides to do self.repos before
-+ # calling us.
-+ self.repos.setProgressBar(progressbar)
-+ self.repos.callback = callback
-+ self.repos.setFailureCallback(failure_callback)
-+ self.repos.setInterruptCallback(interrupt_callback)
-+
- # setup our depsolve progress callback
- dscb = DepSolveProgressCallBack(weakref(self))
- self.dsCallback = dscb
-@@ -1143,8 +1222,14 @@ Downgrade %5.5s Package(s)
- self.setupProgressCallbacks()
-
- def setupKeyImportCallbacks(self):
-- self.repos.confirm_func = self._cli_confirm_gpg_key_import
-- self.repos.gpg_import_func = self.getKeyForRepo
-+ confirm_func = self._cli_confirm_gpg_key_import
-+ gpg_import_func = self.getKeyForRepo
-+ if hasattr(self, 'prerepoconf'):
-+ self.prerepoconf.confirm_func = confirm_func
-+ self.prerepoconf.gpg_import_func = gpg_import_func
-+ else:
-+ self.repos.confirm_func = confirm_func
-+ self.repos.gpg_import_func = gpg_import_func
-
- def interrupt_callback(self, cbobj):
- '''Handle CTRL-C's during downloads
-@@ -1232,20 +1317,29 @@ to exit.
- return count, "".join(list(actions))
-
- def _pwd_ui_username(self, uid, limit=None):
-- # loginuid is set to -1 on init.
-- if uid is None or uid == 0xFFFFFFFF:
-+ # 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):
- loginid = _("<unset>")
- name = _("System") + " " + loginid
- if limit is not None and len(name) > limit:
- name = loginid
- return to_unicode(name)
-
-+ def _safe_split_0(text, *args):
-+ """ Split gives us a [0] for everything _but_ '', this function
-+ returns '' in that case. """
-+ ret = text.split(*args)
-+ if not ret:
-+ return ''
-+ return ret[0]
-+
- try:
- user = pwd.getpwuid(uid)
-- fullname = user.pw_gecos.split(';', 2)[0]
-+ fullname = _safe_split_0(user.pw_gecos, ';', 2)
- name = "%s <%s>" % (fullname, user.pw_name)
- if limit is not None and len(name) > limit:
-- name = "%s ... <%s>" % (fullname.split()[0], user.pw_name)
-+ name = "%s ... <%s>" % (_safe_split_0(fullname), user.pw_name)
- if len(name) > limit:
- name = "<%s>" % user.pw_name
- return to_unicode(name)
-@@ -1280,7 +1374,7 @@ to exit.
-
- tids, printall = self._history_list_transactions(extcmds)
- if tids is None:
-- return 1, ['Failed history info']
-+ return 1, ['Failed history list']
-
- fmt = "%s | %s | %s | %s | %s"
- print fmt % (utf8_width_fill(_("ID"), 6, 6),
-@@ -1310,6 +1404,13 @@ to exit.
- rmark = lmark = '*'
- elif old.return_code:
- rmark = lmark = '#'
-+ # We don't check .errors, because return_code will be non-0
-+ elif old.output:
-+ rmark = lmark = 'E'
-+ elif old.rpmdb_problems:
-+ rmark = lmark = 'P'
-+ elif old.trans_skip:
-+ rmark = lmark = 's'
- if old.altered_lt_rpmdb:
- rmark = '<'
- if old.altered_gt_rpmdb:
-@@ -1413,6 +1514,41 @@ to exit.
- def _historyInfoCmd(self, old, pats=[]):
- name = self._pwd_ui_username(old.loginuid)
-
-+ _pkg_states_installed = {'i' : _('Installed'), 'e' : _('Erased'),
-+ 'o' : _('Updated'), 'n' : _('Downgraded')}
-+ _pkg_states_available = {'i' : _('Installed'), 'e' : _('Not installed'),
-+ 'o' : _('Older'), 'n' : _('Newer')}
-+ # max() only in 2.5.z
-+ maxlen = sorted([len(x) for x in (_pkg_states_installed.values() +
-+ _pkg_states_available.values())])[-1]
-+ _pkg_states_installed['maxlen'] = maxlen
-+ _pkg_states_available['maxlen'] = maxlen
-+ def _simple_pkg(pkg, prefix_len, was_installed=False, highlight=False):
-+ prefix = " " * prefix_len
-+ if was_installed:
-+ _pkg_states = _pkg_states_installed
-+ else:
-+ _pkg_states = _pkg_states_available
-+ state = _pkg_states['i']
-+ ipkgs = self.rpmdb.searchNames([hpkg.name])
-+ ipkgs.sort()
-+ if not ipkgs:
-+ state = _pkg_states['e']
-+ elif hpkg.pkgtup in (ipkg.pkgtup for ipkg in ipkgs):
-+ pass
-+ elif ipkgs[-1] > hpkg:
-+ state = _pkg_states['o']
-+ elif ipkgs[0] < hpkg:
-+ state = _pkg_states['n']
-+ else:
-+ assert False, "Impossible, installed not newer and not older"
-+ if highlight:
-+ (hibeg, hiend) = self._highlight('bold')
-+ else:
-+ (hibeg, hiend) = self._highlight('normal')
-+ state = utf8_width_fill(state, _pkg_states['maxlen'])
-+ print "%s%s%s%s %s" % (prefix, hibeg, state, hiend, hpkg)
-+
- print _("Transaction ID :"), old.tid
- begtm = time.ctime(old.beg_timestamp)
- print _("Begin time :"), begtm
-@@ -1448,25 +1584,38 @@ to exit.
- print _("Return-Code :"), _("Failure:"), old.return_code
- else:
- print _("Return-Code :"), _("Success")
-+
-+ if old.cmdline is not None:
-+ print _("Command Line :"), old.cmdline
-+
-+ addon_info = self.history.return_addon_data(old.tid)
-+
-+ # for the ones we create by default - don't display them as there
-+ default_addons = set(['config-main', 'config-repos'])
-+ non_default = set(addon_info).difference(default_addons)
-+ if len(non_default) > 0:
-+ print _("Additional non-default information stored: %d"
-+ % len(non_default))
-+
- print _("Transaction performed with:")
- for hpkg in old.trans_with:
-- prefix = " " * 4
-- state = _('Installed')
-- ipkgs = self.rpmdb.searchNames([hpkg.name])
-- ipkgs.sort()
-- if not ipkgs:
-- state = _('Erased')
-- elif hpkg.pkgtup in (ipkg.pkgtup for ipkg in ipkgs):
-- pass
-- elif ipkgs[-1] > hpkg:
-- state = _('Updated')
-- elif ipkgs[0] < hpkg:
-- state = _('Downgraded')
-- else: # multiple versions installed, both older and newer
-- state = _('Weird')
-- print "%s%s %s" % (prefix, utf8_width_fill(state, 12), hpkg)
-+ _simple_pkg(hpkg, 4, was_installed=True)
- print _("Packages Altered:")
- self.historyInfoCmdPkgsAltered(old, pats)
-+
-+ if old.trans_skip:
-+ print _("Packages Skipped:")
-+ for hpkg in old.trans_skip:
-+ _simple_pkg(hpkg, 4)
-+
-+ if old.rpmdb_problems:
-+ print _("Rpmdb Problems:")
-+ for prob in old.rpmdb_problems:
-+ key = "%s%s: " % (" " * 4, prob.problem)
-+ print self.fmtKeyValFill(key, prob.text)
-+ for hpkg in prob.packages:
-+ _simple_pkg(hpkg, 8, was_installed=True, highlight=hpkg.main)
-+
- if old.output:
- print _("Scriptlet output:")
- num = 0
-@@ -1482,6 +1631,27 @@ to exit.
-
- def historyInfoCmdPkgsAltered(self, old, pats=[]):
- last = None
-+ # 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.
-+ all_uistates = {'True-Install' : _('Install'),
-+ 'Install' : _('Install'),
-+ 'Dep-Install' : _('Dep-Install'),
-+ 'Obsoleted' : _('Obsoleted'),
-+ 'Obsoleting' : _('Obsoleting'),
-+ 'Erase' : _('Erase'),
-+ 'Reinstall' : _('Reinstall'),
-+ 'Downgrade' : _('Downgrade'),
-+ 'Downgraded' : _('Downgraded'),
-+ 'Update' : _('Update'),
-+ 'Updated' : _('Updated'),
-+ }
-+ maxlen = 0
-+ for hpkg in old.trans_data:
-+ uistate = all_uistates.get(hpkg.state, hpkg.state)
-+ if maxlen < len(uistate):
-+ maxlen = len(uistate)
-+
- for hpkg in old.trans_data:
- prefix = " " * 4
- if not hpkg.done:
-@@ -1498,19 +1668,8 @@ to exit.
- # so we have to do it by hand ... *sigh*.
- cn = hpkg.ui_nevra
-
-- uistate = {'True-Install' : _('Install'),
-- 'Install' : _('Install'),
-- 'Dep-Install' : _('Dep-Install'),
-- 'Obsoleted' : _('Obsoleted'),
-- 'Obsoleting' : _('Obsoleting'),
-- 'Erase' : _('Erase'),
-- 'Reinstall' : _('Reinstall'),
-- 'Downgrade' : _('Downgrade'),
-- 'Downgraded' : _('Downgraded'),
-- 'Update' : _('Update'),
-- 'Updated' : _('Updated'),
-- }.get(hpkg.state, hpkg.state)
-- uistate = utf8_width_fill(uistate, 12, 12)
-+ uistate = all_uistates.get(hpkg.state, hpkg.state)
-+ uistate = utf8_width_fill(uistate, maxlen)
- # Should probably use columns here...
- if False: pass
- elif (last is not None and
-@@ -1587,10 +1746,55 @@ to exit.
- count, uiacts = self._history_uiactions(hpkgs)
- uperiod = _period2user[period]
- # Should probably use columns here, esp. for uiacts?
-- print fmt % (utf8_width_fill(name, 22, 22),
-+ print fmt % (utf8_width_fill(name, 26, 26),
- utf8_width_fill(uperiod, 19, 19),
- utf8_width_fill(uiacts, 16, 16), count)
-
-+ def historyAddonInfoCmd(self, extcmds):
-+ tid = None
-+ if len(extcmds) > 1:
-+ tid = extcmds[1]
-+ try:
-+ int(tid)
-+ except ValueError:
-+ self.logger.critical(_('No transaction ID given'))
-+ return 1, ['Failed history addon-info']
-+ except TypeError:
-+ pass # No tid arg. passed, use last...
-+
-+ if tid is not None:
-+ old = self.history.old(tids=[tid])
-+ else:
-+ old = [self.history.last(complete_transactions_only=False)]
-+ if old[0] is None:
-+ self.logger.critical(_('No transaction ID, or package, given'))
-+ return 1, ['Failed history addon-info']
-+
-+ if not old:
-+ self.logger.critical(_('No Transaction %s found') % tid)
-+ return 1, ['Failed history addon-info']
-+
-+ hist_data = old[0]
-+ addon_info = self.history.return_addon_data(hist_data.tid)
-+ if len(extcmds) <= 2:
-+ print _("Transaction ID:"), hist_data.tid
-+ print _('Available additional history information:')
-+ for itemname in self.history.return_addon_data(hist_data.tid):
-+ print ' %s' % itemname
-+ print ''
-+
-+ return 0, ['history addon-info']
-+
-+ for item in extcmds[2:]:
-+ if item in addon_info:
-+ print '%s:' % item
-+ print self.history.return_addon_data(hist_data.tid, item)
-+ else:
-+ print _('%s: No additional data found by this name') % item
-+
-+ print ''
-+
-+
-
- class DepSolveProgressCallBack:
- """provides text output callback functions for Dependency Solver callback"""
-@@ -1605,7 +1809,9 @@ class DepSolveProgressCallBack:
- modedict = { 'i': _('installed'),
- 'u': _('updated'),
- 'o': _('obsoleted'),
-- 'e': _('erased')}
-+ 'e': _('erased'),
-+ 'r': _('reinstalled'),
-+ 'd': _('downgraded')}
- (n, a, e, v, r) = pkgtup
- modeterm = modedict[mode]
- self.verbose_logger.log(logginglevels.INFO_2,
-@@ -1639,6 +1845,10 @@ class DepSolveProgressCallBack:
- _('--> Processing Dependency: %s for package: %s'), formatted_req,
- po)
-
-+ def groupRemoveReq(self, po, hits):
-+ self.verbose_logger.log(logginglevels.INFO_2,
-+ _('---> Keeping package: %s'), po)
-+
- def unresolved(self, msg):
- self.verbose_logger.log(logginglevels.INFO_2, _('--> Unresolved Dependency: %s'),
- msg)
-@@ -1660,24 +1870,52 @@ class DepSolveProgressCallBack:
- if not yb:
- return msg
-
-+ def _msg_pkg(action, pkg, needname):
-+ " Add a package to the message, including any provides matches. "
-+ msg = _('\n %s: %s (%s)') % (action, pkg, pkg.ui_from_repo)
-+ needtup = (needname, None, (None, None, None))
-+ done = False
-+ for pkgtup in pkg.matchingPrcos('provides', needtup):
-+ done = True
-+ msg += _('\n %s') % yum.misc.prco_tuple_to_string(pkgtup)
-+ if not done:
-+ msg += _('\n Not found')
-+ return msg
-+
- ipkgs = set()
- for pkg in sorted(yb.rpmdb.getProvides(needname)):
-- ipkgs.add(pkg.pkgtup)
-+ nevr = (pkg.name, pkg.epoch, pkg.version, pkg.release)
-+ ipkgs.add(nevr)
- action = _('Installed')
-- if yb.tsInfo.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES):
-+ rmed = yb.tsInfo.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES)
-+ if rmed:
- action = _('Removing')
-- msg += _('\n %s: %s (%s)') % (action, pkg, pkg.ui_from_repo)
-+ msg += _msg_pkg(action, pkg, needname)
-+ # These should be the only three things we care about:
-+ relmap = {'updatedby' : _('Updated By'),
-+ 'downgradedby' : _('Downgraded By'),
-+ 'obsoletedby' : _('Obsoleted By'),
-+ }
-+ for txmbr in rmed:
-+ for (rpkg, rtype) in txmbr.relatedto:
-+ if rtype not in relmap:
-+ continue
-+ nevr = (rpkg.name, rpkg.epoch, rpkg.version, rpkg.release)
-+ ipkgs.add(nevr)
-+ msg += _msg_pkg(relmap[rtype], rpkg, needname)
-+
- last = None
- for pkg in sorted(yb.pkgSack.getProvides(needname)):
- # We don't want to see installed packages, or N packages of the
- # same version, from different repos.
-- if pkg.pkgtup in ipkgs or pkg.verEQ(last):
-+ nevr = (pkg.name, pkg.epoch, pkg.version, pkg.release)
-+ if nevr in ipkgs or (pkg.verEQ(last) and pkg.arch == last.arch):
- continue
- last = pkg
- action = _('Available')
- if yb.tsInfo.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES):
- action = _('Installing')
-- msg += _('\n %s: %s (%s)') % (action, pkg, pkg.repoid)
-+ msg += _msg_pkg(action, pkg, needname)
- return msg
-
- def procConflict(self, name, confname):
-diff --git a/po/cs.po b/po/cs.po
-index d369345..d4ec7d8 100644
---- a/po/cs.po
-+++ b/po/cs.po
-@@ -1,48 +1,51 @@
--# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
--# This file is distributed under the same license as the PACKAGE package.
-+# Copyright (C) 2010 Yum's copyright holder
-+# This file is distributed under the same license as the yum package.
-+#
-+# Adam Pribyl <pribyl at lowlevel.cz>, 2009, 2010.
-+# Petr Pisar <ppisar at redhat.com>, 2010.
- #
--# Adam Pribyl <pribyl at lowlevel.cz>, 2009.
- msgid ""
- msgstr ""
--"Project-Id-Version: \n"
-+"Project-Id-Version: yum 3.2.x\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2009-10-15 15:45+0200\n"
--"PO-Revision-Date: 2009-10-15 15:30+0200\n"
--"Last-Translator: Adam Pribyl <pribyl at lowlevel.cz>\n"
--"Language-Team: American English <fedora-cs-list at redhat.com>\n"
-+"POT-Creation-Date: 2010-02-11 10:54-0500\n"
-+"PO-Revision-Date: 2010-06-14 10:55+0200\n"
-+"Last-Translator: Petr Pisar <ppisar at redhat.com>\n"
-+"Language-Team: Czech Fedora <diskuse at lists.l10n.cz>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- "X-Generator: Lokalize 1.0\n"
- "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
--#: ../callback.py:48 ../output.py:940 ../yum/rpmtrans.py:71
-+#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
- msgid "Updating"
- msgstr "Aktualizuje se"
-
--#: ../callback.py:49 ../yum/rpmtrans.py:72
-+#: ../callback.py:49 ../yum/rpmtrans.py:73
- msgid "Erasing"
- msgstr "Maže se"
-
--#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:939
--#: ../yum/rpmtrans.py:73 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:76
-+#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:946
-+#: ../output.py:1659 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
-+#: ../yum/rpmtrans.py:77
- msgid "Installing"
- msgstr "Instaluje se"
-
--#: ../callback.py:52 ../callback.py:58 ../yum/rpmtrans.py:75
-+#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
- msgid "Obsoleted"
- msgstr "Zastaralé"
-
--#: ../callback.py:54 ../output.py:1063 ../output.py:1403
-+#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
- msgid "Updated"
- msgstr "Aktualizováno"
-
--#: ../callback.py:55 ../output.py:1399
-+#: ../callback.py:55 ../output.py:1438
- msgid "Erased"
- msgstr "Smazáno"
-
--#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1061
--#: ../output.py:1395
-+#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
-+#: ../output.py:1434 ../output.py:1646
- msgid "Installed"
- msgstr "Nainstalováno"
-
-@@ -64,68 +67,73 @@ msgstr "Chyba: neplatný výstupní stav: %s pro %s"
- msgid "Erased: %s"
- msgstr "Smazáno: %s"
-
--#: ../callback.py:217 ../output.py:941
-+#: ../callback.py:217 ../output.py:948 ../output.py:1648
- msgid "Removing"
- msgstr "Odstraňuje se"
-
--#: ../callback.py:219 ../yum/rpmtrans.py:77
-+#: ../callback.py:219 ../yum/rpmtrans.py:78
- msgid "Cleanup"
--msgstr "Čiští se"
-+msgstr "Čistí se"
-
--#: ../cli.py:106
-+#: ../cli.py:107
- #, python-format
- msgid "Command \"%s\" already defined"
--msgstr "Přikaz \"%s\" již definován"
-+msgstr "Příkaz „%s“ již definován"
-
--#: ../cli.py:118
-+#: ../cli.py:119
- msgid "Setting up repositories"
- msgstr "Nastavují se repozitáře"
-
--#: ../cli.py:129
-+#: ../cli.py:130
- msgid "Reading repository metadata in from local files"
- msgstr "Načítají se metadata repozitářů z lokálních souborů"
-
--#: ../cli.py:192 ../utils.py:107
-+#: ../cli.py:194 ../utils.py:193
- #, python-format
- msgid "Config Error: %s"
- msgstr "Chyba konfigurace: %s"
-
--#: ../cli.py:195 ../cli.py:1251 ../utils.py:110
-+#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
- #, python-format
- msgid "Options Error: %s"
- msgstr "Chybná volba: %s"
-
--#: ../cli.py:223
-+#: ../cli.py:227
- #, python-format
- msgid " Installed: %s-%s at %s"
- msgstr " Nainstalováno: %s-%s na %s"
-
--#: ../cli.py:225
-+#: ../cli.py:229
- #, python-format
- msgid " Built : %s at %s"
- msgstr " Sestaveno : %s na %s"
-
--#: ../cli.py:227
-+#: ../cli.py:231
- #, python-format
- msgid " Committed: %s at %s"
- msgstr " Odesláno : %s na %s"
-
--#: ../cli.py:266
-+#: ../cli.py:270
- msgid "You need to give some command"
- msgstr "Musíte zadat nějaký příkaz"
-
--#: ../cli.py:309
-+#: ../cli.py:284
-+#, python-format
-+msgid "No such command: %s. Please use %s --help"
-+msgstr "Neexistující příkaz: %s. Použijte %s --help"
-+
-+#: ../cli.py:314
- msgid "Disk Requirements:\n"
- msgstr "Diskové požadavky:\n"
-
--#: ../cli.py:311
-+#: ../cli.py:316
- #, python-format
--msgid " At least %dMB needed on the %s filesystem.\n"
--msgstr " Je potřeba alespoň %dMB na souborovém systému %s.\n"
-+msgid " At least %dMB more space needed on the %s filesystem.\n"
-+msgstr " Je potřeba alespoň o %dMB více místa na souborovém systému %s.\n"
-
- #. TODO: simplify the dependency errors?
- #. Fixup the summary
--#: ../cli.py:316
-+#: ../cli.py:321
- msgid ""
- "Error Summary\n"
- "-------------\n"
-@@ -133,144 +141,145 @@ msgstr ""
- "Přehled chyb\n"
- "------------\n"
-
--#: ../cli.py:359
-+#: ../cli.py:364
- msgid "Trying to run the transaction but nothing to do. Exiting."
- msgstr "Pokus o spuštění transakce, ale není co dělat. Ukončeno."
-
--#: ../cli.py:395
-+#: ../cli.py:403
- msgid "Exiting on user Command"
--msgstr "Ukončeno na přikaz uživatele"
-+msgstr "Ukončeno na příkaz uživatele"
-
--#: ../cli.py:399
-+#: ../cli.py:407
- msgid "Downloading Packages:"
- msgstr "Stahují se balíčky:"
-
--#: ../cli.py:404
-+#: ../cli.py:412
- msgid "Error Downloading Packages:\n"
- msgstr "Chyba stahování balíčků:\n"
-
--#: ../cli.py:418 ../yum/__init__.py:4014
-+#: ../cli.py:426 ../yum/__init__.py:4195
- msgid "Running rpm_check_debug"
--msgstr "Spuští se rpm_check_debug"
-+msgstr "Spouští se rpm_check_debug"
-
--#: ../cli.py:427 ../yum/__init__.py:4023
-+#: ../cli.py:435 ../yum/__init__.py:4204
- msgid "ERROR You need to update rpm to handle:"
- msgstr "CHYBA Je potřeba aktualizovat rpm k provedení:"
-
--#: ../cli.py:429 ../yum/__init__.py:4026
-+#: ../cli.py:437 ../yum/__init__.py:4207
- msgid "ERROR with rpm_check_debug vs depsolve:"
- msgstr "CHYBA v rpm_check_debug vs depsolve:"
-
--#: ../cli.py:435
-+#: ../cli.py:443
- msgid "RPM needs to be updated"
- msgstr "Je potřeba aktualizovat RPM"
-
--#: ../cli.py:436
-+#: ../cli.py:444
- #, python-format
- msgid "Please report this error in %s"
- msgstr "Oznamte prosím tuto chybu v %s"
-
--#: ../cli.py:442
-+#: ../cli.py:450
- msgid "Running Transaction Test"
- msgstr "Spouští se test transakcí"
-
--#: ../cli.py:458
--msgid "Finished Transaction Test"
--msgstr "Test transakcí dokončen"
--
--#: ../cli.py:460
-+#: ../cli.py:466
- msgid "Transaction Check Error:\n"
- msgstr "Chyba při kontrole transakcí:\n"
-
--#: ../cli.py:467
-+#: ../cli.py:473
- msgid "Transaction Test Succeeded"
- msgstr "Test transakcí uspěl"
-
--#: ../cli.py:489
-+#: ../cli.py:495
- msgid "Running Transaction"
- msgstr "Spouští se transakce"
-
--#: ../cli.py:519
-+#: ../cli.py:525
- msgid ""
- "Refusing to automatically import keys when running unattended.\n"
- "Use \"-y\" to override."
- msgstr ""
- "Nelze automaticky importovat klíče při spuštění bez obsluhy.\n"
--"Použite \"-y\" k potlačení."
-+"Použijte \"-y\" k potlačení."
-
--#: ../cli.py:538 ../cli.py:572
-+#: ../cli.py:544 ../cli.py:578
- msgid " * Maybe you meant: "
- msgstr " * Možná jste myslel: "
-
--#: ../cli.py:555 ../cli.py:563
-+#: ../cli.py:561 ../cli.py:569
- #, python-format
- msgid "Package(s) %s%s%s available, but not installed."
- msgstr "Balíček(y) %s%s%s dostupný/é, ale nenainstalovaný/é."
-
--#: ../cli.py:569 ../cli.py:600 ../cli.py:678
-+#: ../cli.py:575 ../cli.py:607 ../cli.py:687
- #, python-format
- msgid "No package %s%s%s available."
- msgstr "Balíček %s%s%s není dostupný."
-
--#: ../cli.py:605 ../cli.py:738
-+#: ../cli.py:612 ../cli.py:748
- msgid "Package(s) to install"
- msgstr "Balíček(y) k instalaci"
-
--#: ../cli.py:606 ../cli.py:684 ../cli.py:717 ../cli.py:739
--#: ../yumcommands.py:159
-+#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
-+#: ../yumcommands.py:160
- msgid "Nothing to do"
- msgstr "Není co dělat"
-
--#: ../cli.py:639
-+#: ../cli.py:647
- #, python-format
- msgid "%d packages marked for Update"
- msgstr "%d balíčků označeno k aktualizaci"
-
--#: ../cli.py:642
-+#: ../cli.py:650
- msgid "No Packages marked for Update"
- msgstr "Žádné balíčky označené k aktualizaci"
-
--#: ../cli.py:656
-+#: ../cli.py:664
- #, python-format
- msgid "%d packages marked for removal"
- msgstr "%d balíčků označeno ke smazání"
-
--#: ../cli.py:659
-+#: ../cli.py:667
- msgid "No Packages marked for removal"
- msgstr "Žádné balíčky označené k odstranění"
-
--#: ../cli.py:683
-+#: ../cli.py:692
- msgid "Package(s) to downgrade"
- msgstr "Balíček(y) ke snížení verze"
-
--#: ../cli.py:707
-+#: ../cli.py:717
- #, python-format
- msgid " (from %s)"
- msgstr " (z %s)"
-
--#: ../cli.py:709
-+#: ../cli.py:719
- #, python-format
- msgid "Installed package %s%s%s%s not available."
- msgstr "Instalované balíčky %s%s%s%s nejsou dostupné"
-
--#: ../cli.py:716
-+#: ../cli.py:726
- msgid "Package(s) to reinstall"
- msgstr "Balíček(y) k reinstalaci"
-
--#: ../cli.py:729
-+#: ../cli.py:739
- msgid "No Packages Provided"
- msgstr "Žádný balíček neposkytuje"
-
--#: ../cli.py:813
-+#: ../cli.py:818
-+#, python-format
-+msgid "Matched: %s"
-+msgstr "Shoda: %s"
-+
-+#: ../cli.py:825
- #, python-format
- msgid "Warning: No matches found for: %s"
- msgstr "Varování: Žádný balíček odpovídající: %s"
-
--#: ../cli.py:816
-+#: ../cli.py:828
- msgid "No Matches found"
- msgstr "Nebyla nalezena shoda"
-
--#: ../cli.py:855
-+#: ../cli.py:868
- #, python-format
- msgid ""
- "Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
-@@ -279,106 +288,110 @@ msgstr ""
- "Varování: 3.0.x verze yumu by chybně hledala shodu se jménem souboru.\n"
- " Můžete použít \"%s*/%s%s\" a/nebo \"%s*bin/%s%s\" k dosažení tohoto chování"
-
--#: ../cli.py:871
-+#: ../cli.py:884
- #, python-format
- msgid "No Package Found for %s"
- msgstr "Nebyly nalezeny balíčky pro %s"
-
--#: ../cli.py:883
-+#: ../cli.py:896
- msgid "Cleaning up Everything"
- msgstr "Čistí se vše"
-
--#: ../cli.py:897
-+#: ../cli.py:912
- msgid "Cleaning up Headers"
- msgstr "Čistí se hlavičky"
-
--#: ../cli.py:900
-+#: ../cli.py:915
- msgid "Cleaning up Packages"
- msgstr "Čistí se balíčky"
-
--#: ../cli.py:903
-+#: ../cli.py:918
- msgid "Cleaning up xml metadata"
- msgstr "Čistí se XML metadata"
-
--#: ../cli.py:906
-+#: ../cli.py:921
- msgid "Cleaning up database cache"
- msgstr "Čistí se skladiště databáze"
-
--#: ../cli.py:909
-+#: ../cli.py:924
- msgid "Cleaning up expire-cache metadata"
--msgstr "Čistí se vypršelá metadata ze skladiště"
-+msgstr "Ze skladiště se odstraňují zastaralá metadata"
-
--#: ../cli.py:912
-+#: ../cli.py:927
-+msgid "Cleaning up cached rpmdb data"
-+msgstr "Čistí se skladiště rpmdb dat"
-+
-+#: ../cli.py:930
- msgid "Cleaning up plugins"
- msgstr "Čistí se zásuvné moduly"
-
--#: ../cli.py:937
-+#: ../cli.py:955
- msgid "Installed Groups:"
--msgstr "Naintalované skupiny:"
-+msgstr "Nainstalované skupiny:"
-
--#: ../cli.py:949
-+#: ../cli.py:967
- msgid "Available Groups:"
- msgstr "Dostupné skupiny:"
-
--#: ../cli.py:959
-+#: ../cli.py:977
- msgid "Done"
- msgstr "Dokončeno"
-
--#: ../cli.py:970 ../cli.py:988 ../cli.py:994 ../yum/__init__.py:2629
-+#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
- #, python-format
- msgid "Warning: Group %s does not exist."
- msgstr "Varování: skupina %s neexistuje."
-
--#: ../cli.py:998
-+#: ../cli.py:1016
- msgid "No packages in any requested group available to install or update"
- msgstr ""
- "V žádné z požadovaných skupin nejsou balíčky k instalaci nebo aktualizaci"
-
--#: ../cli.py:1000
-+#: ../cli.py:1018
- #, python-format
- msgid "%d Package(s) to Install"
- msgstr "%d balíček(ů) k instalaci"
-
--#: ../cli.py:1010 ../yum/__init__.py:2641
-+#: ../cli.py:1028 ../yum/__init__.py:2800
- #, python-format
- msgid "No group named %s exists"
- msgstr "Neexistuje skupina se jménem %s"
-
--#: ../cli.py:1016
-+#: ../cli.py:1034
- msgid "No packages to remove from groups"
- msgstr "Žádné balíčky k odstranění ve skupině"
-
--#: ../cli.py:1018
-+#: ../cli.py:1036
- #, python-format
- msgid "%d Package(s) to remove"
- msgstr "%d balíček(ů) k odstranění"
-
--#: ../cli.py:1060
-+#: ../cli.py:1078
- #, python-format
- msgid "Package %s is already installed, skipping"
- msgstr "Balíček %s je již nainstalován, přeskakuje se"
-
--#: ../cli.py:1071
-+#: ../cli.py:1089
- #, python-format
- msgid "Discarding non-comparable pkg %s.%s"
- msgstr "Skartuje se neporovnatelný balíček %s.%s"
-
- #. we've not got any installed that match n or n+a
--#: ../cli.py:1097
-+#: ../cli.py:1115
- #, python-format
- msgid "No other %s installed, adding to list for potential install"
- msgstr "Žádný jiný %s nainstalován, přidán do seznamu k potenciální instalaci"
-
--#: ../cli.py:1117
-+#: ../cli.py:1135
- msgid "Plugin Options"
- msgstr "Možnosti zásuvného modulu"
-
--#: ../cli.py:1125
-+#: ../cli.py:1143
- #, python-format
- msgid "Command line error: %s"
- msgstr "Chyba příkazové řádky: %s"
-
--#: ../cli.py:1138
-+#: ../cli.py:1156
- #, python-format
- msgid ""
- "\n"
-@@ -389,106 +402,115 @@ msgstr ""
- "\n"
- "%s: %s volba vyžaduje argument"
-
--#: ../cli.py:1191
-+#: ../cli.py:1209
- msgid "--color takes one of: auto, always, never"
- msgstr "--color přijímá jeden z: auto, always, never"
-
--#: ../cli.py:1298
-+#: ../cli.py:1319
- msgid "show this help message and exit"
- msgstr "ukázat tuto nápovědu a skončit"
-
--#: ../cli.py:1302
-+#: ../cli.py:1323
- msgid "be tolerant of errors"
- msgstr "tolerovat chyby"
-
--#: ../cli.py:1304
--msgid "run entirely from cache, don't update cache"
--msgstr "spustit vše z neaktualizovaného skladiště"
-+#: ../cli.py:1326
-+msgid "run entirely from system cache, don't update cache"
-+msgstr "spustit vše ze systémového skladiště, bez jeho aktualizace"
-
--#: ../cli.py:1306
-+#: ../cli.py:1329
- msgid "config file location"
- msgstr "umístění konfiguračního souboru"
-
--#: ../cli.py:1308
-+#: ../cli.py:1332
- msgid "maximum command wait time"
- msgstr "maximální čas čekání na příkaz"
-
--#: ../cli.py:1310
-+#: ../cli.py:1334
- msgid "debugging output level"
- msgstr "úroveň výstupních ladících informací"
-
--#: ../cli.py:1314
-+#: ../cli.py:1338
- msgid "show duplicates, in repos, in list/search commands"
- msgstr "ukázat duplikáty v repozitářích, v list/search příkazech"
-
--#: ../cli.py:1316
-+#: ../cli.py:1340
- msgid "error output level"
- msgstr "úroveň výstupu chyb"
-
--#: ../cli.py:1319
-+#: ../cli.py:1343
-+msgid "debugging output level for rpm"
-+msgstr "úroveň výstupních ladících informací pro rpm"
-+
-+#: ../cli.py:1346
- msgid "quiet operation"
- msgstr "tichý chod"
-
--#: ../cli.py:1321
-+#: ../cli.py:1348
- msgid "verbose operation"
- msgstr "užvaněný chod"
-
--#: ../cli.py:1323
-+#: ../cli.py:1350
- msgid "answer yes for all questions"
- msgstr "odpovědět ano na všechny otázky"
-
--#: ../cli.py:1325
-+#: ../cli.py:1352
- msgid "show Yum version and exit"
- msgstr "ukázat verzi yumu a skončit"
-
--#: ../cli.py:1326
-+#: ../cli.py:1353
- msgid "set install root"
- msgstr "nastavit kořen instalace "
-
--#: ../cli.py:1330
-+#: ../cli.py:1357
- msgid "enable one or more repositories (wildcards allowed)"
- msgstr "povolit jeden nebo více repozitářů (zástupné znaky povoleny)"
-
--#: ../cli.py:1334
-+#: ../cli.py:1361
- msgid "disable one or more repositories (wildcards allowed)"
- msgstr "zakázat jeden nebo více repozitářů (zástupné znaky povoleny)"
-
--#: ../cli.py:1337
-+#: ../cli.py:1364
- msgid "exclude package(s) by name or glob"
- msgstr "vyřadit balíček(y) podle jména nebo globálně"
-
--#: ../cli.py:1339
-+#: ../cli.py:1366
- msgid "disable exclude from main, for a repo or for everything"
- msgstr "zakázat vyřazení z hlavní části, pro repozitář nebo pro vše"
-
--#: ../cli.py:1342
-+#: ../cli.py:1369
- msgid "enable obsoletes processing during updates"
- msgstr "povolit zpracování zastaralých během aktualizací"
-
--#: ../cli.py:1344
-+#: ../cli.py:1371
- msgid "disable Yum plugins"
- msgstr "zakázat zásuvné moduly yumu"
-
--#: ../cli.py:1346
-+#: ../cli.py:1373
- msgid "disable gpg signature checking"
- msgstr "zakázat kontrolu GPG podpisů"
-
--#: ../cli.py:1348
-+#: ../cli.py:1375
- msgid "disable plugins by name"
- msgstr "zakázat zásuvné moduly podle jména"
-
--#: ../cli.py:1351
-+#: ../cli.py:1378
- msgid "enable plugins by name"
- msgstr "povolit zásuvné moduly podle jména"
-
--#: ../cli.py:1354
-+#: ../cli.py:1381
- msgid "skip packages with depsolving problems"
- msgstr "přeskočit balíčky s problémy v závislostech"
-
--#: ../cli.py:1356
-+#: ../cli.py:1383
- msgid "control whether color is used"
- msgstr "kontrola zda jsou použity barvy"
-
-+#: ../cli.py:1385
-+msgid "set value of $releasever in yum config and repo files"
-+msgstr "nastavte hodnotu $releasever v konfiguraci yumu a repo souborech"
-+
-+# FIXME: Do not hardoce month abbreviations, use glibc instead
- #: ../output.py:305
- msgid "Jan"
- msgstr "Led"
-@@ -527,7 +549,7 @@ msgstr "Zář"
-
- #: ../output.py:306
- msgid "Oct"
--msgstr "Řij"
-+msgstr "Říj"
-
- #: ../output.py:306
- msgid "Nov"
-@@ -541,105 +563,104 @@ msgstr "Pro"
- msgid "Trying other mirror."
- msgstr "Zkouší se jiné zrcadlo"
-
--#: ../output.py:538
-+#: ../output.py:534
- #, python-format
- msgid "Name : %s%s%s"
- msgstr "Jméno : %s%s%s"
-
--#: ../output.py:539
-+#: ../output.py:535
- #, python-format
- msgid "Arch : %s"
- msgstr "Arch : %s"
-
--#: ../output.py:541
-+#: ../output.py:537
- #, python-format
- msgid "Epoch : %s"
- msgstr "Epocha : %s"
-
--#: ../output.py:542
-+#: ../output.py:538
- #, python-format
- msgid "Version : %s"
- msgstr "Verze : %s"
-
--#: ../output.py:543
-+#: ../output.py:539
- #, python-format
- msgid "Release : %s"
- msgstr "Vydání : %s"
-
--#: ../output.py:544
-+#: ../output.py:540
- #, python-format
- msgid "Size : %s"
- msgstr "Velikost : %s"
-
--#: ../output.py:545
-+#: ../output.py:541
- #, python-format
- msgid "Repo : %s"
- msgstr "Repo : %s"
-
--#: ../output.py:547
-+#: ../output.py:543
- #, python-format
- msgid "From repo : %s"
- msgstr "Z repa : %s"
-
--#: ../output.py:549
-+#: ../output.py:545
- #, python-format
- msgid "Committer : %s"
- msgstr "Vloženo : %s"
-
--#: ../output.py:550
-+#: ../output.py:546
- #, python-format
- msgid "Committime : %s"
- msgstr "Čas vložení : %s"
-
--#: ../output.py:551
-+#: ../output.py:547
- #, python-format
- msgid "Buildtime : %s"
- msgstr "Sestaveno : %s"
-
--#: ../output.py:553
-+#: ../output.py:549
- #, python-format
- msgid "Installtime: %s"
- msgstr "Instalováno: %s"
-
--#: ../output.py:554
-+#: ../output.py:550
- msgid "Summary : "
- msgstr "Souhrn : "
-
--#: ../output.py:556
-+#: ../output.py:552
- #, python-format
- msgid "URL : %s"
- msgstr "URL : %s"
-
--#: ../output.py:557
--#, python-format
--msgid "License : %s"
--msgstr "Licence : %s"
-+#: ../output.py:553
-+msgid "License : "
-+msgstr "Licence : "
-
--#: ../output.py:558
-+#: ../output.py:554
- msgid "Description: "
- msgstr "Popis : "
-
--#: ../output.py:626
-+#: ../output.py:622
- msgid "y"
- msgstr "a"
-
--#: ../output.py:626
-+#: ../output.py:622
- msgid "yes"
- msgstr "ano"
-
--#: ../output.py:627
-+#: ../output.py:623
- msgid "n"
- msgstr "n"
-
--#: ../output.py:627
-+#: ../output.py:623
- msgid "no"
- msgstr "ne"
-
--#: ../output.py:631
-+#: ../output.py:627
- msgid "Is this ok [y/N]: "
- msgstr "V pořádku [a/N]: "
-
--#: ../output.py:722
-+#: ../output.py:715
- #, python-format
- msgid ""
- "\n"
-@@ -648,150 +669,151 @@ msgstr ""
- "\n"
- "Skupina: %s"
-
--#: ../output.py:726
-+#: ../output.py:719
- #, python-format
- msgid " Group-Id: %s"
- msgstr " ID skupiny: %s"
-
--#: ../output.py:731
-+#: ../output.py:724
- #, python-format
- msgid " Description: %s"
- msgstr " Popis: %s"
-
--#: ../output.py:733
-+#: ../output.py:726
- msgid " Mandatory Packages:"
- msgstr " Povinné balíčky:"
-
--#: ../output.py:734
-+#: ../output.py:727
- msgid " Default Packages:"
- msgstr " Výchozí balíčky:"
-
--#: ../output.py:735
-+#: ../output.py:728
- msgid " Optional Packages:"
- msgstr " Volitelné balíčky:"
-
--#: ../output.py:736
-+#: ../output.py:729
- msgid " Conditional Packages:"
- msgstr " Podmínečné balíčky:"
-
--#: ../output.py:756
-+#: ../output.py:749
- #, python-format
- msgid "package: %s"
- msgstr "balíčky: %s"
-
--#: ../output.py:758
-+#: ../output.py:751
- msgid " No dependencies for this package"
- msgstr " Pro tento balíček nejsou žádné závislosti"
-
--#: ../output.py:763
-+#: ../output.py:756
- #, python-format
- msgid " dependency: %s"
- msgstr " závislosti: %s"
-
--#: ../output.py:765
-+#: ../output.py:758
- msgid " Unsatisfied dependency"
- msgstr " Neuspokojené závislosti"
-
--#: ../output.py:837
-+#: ../output.py:830
- #, python-format
- msgid "Repo : %s"
- msgstr "Repo : %s"
-
--#: ../output.py:838
-+#: ../output.py:831
- msgid "Matched from:"
- msgstr "Shoda s:"
-
--#: ../output.py:847
-+#: ../output.py:840
- msgid "Description : "
- msgstr "Popis : "
-
--#: ../output.py:850
-+#: ../output.py:843
- #, python-format
- msgid "URL : %s"
- msgstr "URL : %s"
-
--#: ../output.py:853
-+#: ../output.py:846
- #, python-format
- msgid "License : %s"
- msgstr "Licence : %s"
-
--#: ../output.py:856
-+#: ../output.py:849
- #, python-format
- msgid "Filename : %s"
- msgstr "Soubor : %s"
-
--#: ../output.py:860
-+#: ../output.py:853
- msgid "Other : "
- msgstr "Další : "
-
--#: ../output.py:893
-+#: ../output.py:896
- msgid "There was an error calculating total download size"
- msgstr "Při výpočtu celkové velikosti stahování nastala chyba"
-
--#: ../output.py:898
-+#: ../output.py:901
- #, python-format
- msgid "Total size: %s"
- msgstr "Celková velikost: %s"
-
--#: ../output.py:901
-+#: ../output.py:904
- #, python-format
- msgid "Total download size: %s"
- msgstr "Celková velikost stahování: %s"
-
--#: ../output.py:942
-+#: ../output.py:908
-+#, python-format
-+msgid "Installed size: %s"
-+msgstr "Nainstalovaná velikost: %s"
-+
-+#: ../output.py:949
- msgid "Reinstalling"
--msgstr "Reinstaluje se"
-+msgstr "Přeinstalovává se"
-
--#: ../output.py:943
-+#: ../output.py:950
- msgid "Downgrading"
- msgstr "Snižuje se verze"
-
--#: ../output.py:944
-+#: ../output.py:951
- msgid "Installing for dependencies"
- msgstr "Instaluje se kvůli závislostem"
-
--#: ../output.py:945
-+#: ../output.py:952
- msgid "Updating for dependencies"
- msgstr "Aktualizuje se kvůli závislostem"
-
--#: ../output.py:946
-+#: ../output.py:953
- msgid "Removing for dependencies"
- msgstr "Odstraňuje se kvůli závislostem"
-
--#: ../output.py:953 ../output.py:1065
-+#: ../output.py:960 ../output.py:1072
- msgid "Skipped (dependency problems)"
- msgstr "Přeskočeno (problémy se závislostmi)"
-
--#: ../output.py:976
-+#: ../output.py:983
- msgid "Package"
- msgstr "Balíček"
-
--#: ../output.py:976
-+#: ../output.py:983
- msgid "Arch"
- msgstr "Arch"
-
--#: ../output.py:977
-+#: ../output.py:984
- msgid "Version"
- msgstr "Verze"
-
--#: ../output.py:977
-+#: ../output.py:984
- msgid "Repository"
- msgstr "Repozitář"
-
--#: ../output.py:978
-+#: ../output.py:985
- msgid "Size"
- msgstr "Vel."
-
--#: ../output.py:990
-+#: ../output.py:997
- #, python-format
--msgid ""
--" replacing %s%s%s.%s %s\n"
--"\n"
--msgstr ""
--" nahrazuje se %s%s%s.%s %s\n"
--"\n"
-+msgid " replacing %s%s%s.%s %s\n"
-+msgstr " nahrazuje se %s%s%s.%s %s\n"
-
--#: ../output.py:999
-+#: ../output.py:1006
- #, python-format
- msgid ""
- "\n"
-@@ -802,7 +824,7 @@ msgstr ""
- "Shrnutí transakce\n"
- "%s\n"
-
--#: ../output.py:1006
-+#: ../output.py:1013
- #, python-format
- msgid ""
- "Install %5.5s Package(s)\n"
-@@ -811,7 +833,7 @@ msgstr ""
- "Instalace %5.5s balíčku/ů\n"
- "Aktualizace %5.5s balíčku/ů\n"
-
--#: ../output.py:1015
-+#: ../output.py:1022
- #, python-format
- msgid ""
- "Remove %5.5s Package(s)\n"
-@@ -822,40 +844,41 @@ msgstr ""
- "Reinstalace %5.5s balíčku/ů\n"
- "Snížení verze %5.5s balíčku/ů\n"
-
--#: ../output.py:1059
-+#: ../output.py:1066
- msgid "Removed"
- msgstr "Odstraněno"
-
--#: ../output.py:1060
-+#: ../output.py:1067
- msgid "Dependency Removed"
- msgstr "Odstraněné závislosti"
-
--#: ../output.py:1062
-+#: ../output.py:1069
- msgid "Dependency Installed"
- msgstr "Nainstalované závislosti"
-
--#: ../output.py:1064
-+#: ../output.py:1071
- msgid "Dependency Updated"
- msgstr "Aktualizované závislosti"
-
--#: ../output.py:1066
-+#: ../output.py:1073
- msgid "Replaced"
- msgstr "Nahrazeno"
-
--#: ../output.py:1067
-+#: ../output.py:1074
- msgid "Failed"
- msgstr "Selhalo"
-
- #. Delta between C-c's so we treat as exit
--#: ../output.py:1133
-+#: ../output.py:1140
- msgid "two"
- msgstr "dvě"
-
-+# FIXME: plurals
- #. 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.
--#: ../output.py:1144
-+#: ../output.py:1151
- #, python-format
- msgid ""
- "\n"
-@@ -864,210 +887,368 @@ msgid ""
- "to exit.\n"
- msgstr ""
- "\n"
--" Aktuální stahování přerušeno, %spřerušte (ctrl-c) znovu%s během %s%s%s "
--"sekund pro ukončení.\n"
-+"Aktuální stahování zrušeno, běh lze ukončit %sopakovaným přerušením "
-+"(ctrl-c)%s\n"
-+"během %s%s%s sekund.\n"
-
--#: ../output.py:1155
-+#: ../output.py:1162
- msgid "user interrupt"
- msgstr "Přerušeno uživatelem"
-
--#: ../output.py:1173
-+#: ../output.py:1180
- msgid "Total"
- msgstr "Celkem"
-
-+#: ../output.py:1202
-+msgid "I"
-+msgstr "I"
-+
- #: ../output.py:1203
-+msgid "O"
-+msgstr "O"
-+
-+#: ../output.py:1204
-+msgid "E"
-+msgstr "E"
-+
-+#: ../output.py:1205
-+msgid "R"
-+msgstr "R"
-+
-+#: ../output.py:1206
-+msgid "D"
-+msgstr "D"
-+
-+#: ../output.py:1207
-+msgid "U"
-+msgstr "U"
-+
-+#: ../output.py:1217
- msgid "<unset>"
- msgstr "<nenastaveno>"
-
--#: ../output.py:1204
-+#: ../output.py:1218
- msgid "System"
- msgstr "Systém"
-
--#: ../output.py:1240
-+#: ../output.py:1254
- msgid "Bad transaction IDs, or package(s), given"
--msgstr "Zadáné špatné ID transakce nebo balíčku/ů"
-+msgstr "Zadáno špatné ID transakce nebo balíčku/ů"
-+
-+#: ../output.py:1266
-+msgid "ID"
-+msgstr "ID"
-+
-+#: ../output.py:1267 ../output.py:1520
-+msgid "Login user"
-+msgstr "Přihlášení uživatele"
-
--#: ../output.py:1284 ../yumcommands.py:1149 ../yum/__init__.py:1067
--msgid "Warning: RPMDB has been altered since the last yum transaction."
--msgstr "Varování: RPMDB byla od poslední yum transakce změněna"
-+#: ../output.py:1268
-+msgid "Date and time"
-+msgstr "Datum a čas"
-
--#: ../output.py:1289
-+#: ../output.py:1269 ../output.py:1522
-+msgid "Action(s)"
-+msgstr "Akce"
-+
-+#: ../output.py:1270 ../output.py:1523
-+msgid "Altered"
-+msgstr "Pozměněno"
-+
-+#: ../output.py:1310
- msgid "No transaction ID given"
- msgstr "Nezadáno ID transakce"
-
--#: ../output.py:1297
-+#: ../output.py:1336
- msgid "Bad transaction ID given"
- msgstr "Špatné ID transakce"
-
--#: ../output.py:1302
-+#: ../output.py:1341
- msgid "Not found given transaction ID"
- msgstr "Zadané ID transakce nenalezeno"
-
--#: ../output.py:1310
-+#: ../output.py:1349
- msgid "Found more than one transaction ID!"
- msgstr "Nalezeno více než jedno ID transakce!"
-
--#: ../output.py:1331
-+#: ../output.py:1370
- msgid "No transaction ID, or package, given"
- msgstr "Nebylo zadáno ID transakce nebo balíčku/ů"
-
--#: ../output.py:1357
-+#: ../output.py:1396
- msgid "Transaction ID :"
- msgstr "ID transakce:"
-
--#: ../output.py:1359
-+#: ../output.py:1398
- msgid "Begin time :"
- msgstr "Počáteční čas :"
-
--#: ../output.py:1362 ../output.py:1364
-+#: ../output.py:1401 ../output.py:1403
- msgid "Begin rpmdb :"
- msgstr "Začátek rpmdb :"
-
--#: ../output.py:1378
-+#: ../output.py:1417
- #, python-format
- msgid "(%s seconds)"
- msgstr "(%s sekund)"
-
--#: ../output.py:1379
-+#: ../output.py:1418
- msgid "End time :"
- msgstr "Konečný čas :"
-
--#: ../output.py:1382 ../output.py:1384
-+#: ../output.py:1421 ../output.py:1423
- msgid "End rpmdb :"
- msgstr "Konec rpmdb :"
-
--#: ../output.py:1385
-+#: ../output.py:1424
- msgid "User :"
- msgstr "Uživatel :"
-
--#: ../output.py:1387 ../output.py:1389 ../output.py:1391
-+#: ../output.py:1426 ../output.py:1428 ../output.py:1430
- msgid "Return-Code :"
- msgstr "Návratový kód :"
-
--#: ../output.py:1387
-+#: ../output.py:1426
- msgid "Aborted"
- msgstr "Přerušeno"
-
--#: ../output.py:1389
-+#: ../output.py:1428
- msgid "Failure:"
- msgstr "Selhalo:"
-
--#: ../output.py:1391
-+#: ../output.py:1430
- msgid "Success"
- msgstr "Úspěch"
-
--#: ../output.py:1392
-+#: ../output.py:1431
- msgid "Transaction performed with:"
- msgstr "Transakce proběhla s:"
-
--#: ../output.py:1405
-+#: ../output.py:1444 ../output.py:1489
- msgid "Downgraded"
- msgstr "Snížena verze"
-
- #. multiple versions installed, both older and newer
--#: ../output.py:1407
-+#: ../output.py:1446
- msgid "Weird"
- msgstr "Divné"
-
--#: ../output.py:1409
-+#: ../output.py:1448
- msgid "Packages Altered:"
- msgstr "Pozměněné balíčky:"
-
--#: ../output.py:1412
-+#: ../output.py:1451
- msgid "Scriptlet output:"
- msgstr "Výstup skriptletu:"
-
--#: ../output.py:1418
-+#: ../output.py:1457
- msgid "Errors:"
- msgstr "Chyby:"
-
--#: ../output.py:1489
-+#: ../output.py:1481 ../output.py:1482
-+msgid "Install"
-+msgstr "Instalovat"
-+
-+#: ../output.py:1483
-+msgid "Dep-Install"
-+msgstr "Instalovat závislosti"
-+
-+#: ../output.py:1485
-+msgid "Obsoleting"
-+msgstr "Zastaralé"
-+
-+#: ../output.py:1486
-+msgid "Erase"
-+msgstr "Smazat"
-+
-+#: ../output.py:1487
-+msgid "Reinstall"
-+msgstr "Přeinstalovat"
-+
-+#: ../output.py:1488
-+msgid "Downgrade"
-+msgstr "Snížit verzi"
-+
-+#: ../output.py:1490
-+msgid "Update"
-+msgstr "Aktualizovat"
-+
-+#: ../output.py:1521
-+msgid "Time"
-+msgstr "Čas"
-+
-+#: ../output.py:1547
- msgid "Last day"
- msgstr "Poslední den"
-
--#: ../output.py:1490
-+#: ../output.py:1548
- msgid "Last week"
- msgstr "Poslední týden"
-
--#: ../output.py:1491
-+#: ../output.py:1549
- msgid "Last 2 weeks"
- msgstr "Poslední 2 týdny"
-
- #. US default :p
--#: ../output.py:1492
-+#: ../output.py:1550
- msgid "Last 3 months"
- msgstr "Poslední 3 měsíce"
-
--#: ../output.py:1493
-+#: ../output.py:1551
- msgid "Last 6 months"
- msgstr "Posledních 6 měsíců"
-
--#: ../output.py:1494
-+#: ../output.py:1552
- msgid "Last year"
- msgstr "Poslední rok"
-
--#: ../output.py:1495
-+#: ../output.py:1553
- msgid "Over a year ago"
- msgstr "Více než rok"
-
--#: ../output.py:1524
-+#: ../output.py:1585
- msgid "installed"
- msgstr "instalaci"
-
--#: ../output.py:1525
-+#: ../output.py:1586
- msgid "updated"
- msgstr "aktualizaci"
-
--#: ../output.py:1526
-+#: ../output.py:1587
- msgid "obsoleted"
- msgstr "zastarání"
-
--#: ../output.py:1527
-+#: ../output.py:1588
- msgid "erased"
- msgstr "smazání"
-
--#: ../output.py:1531
-+#: ../output.py:1592
- #, python-format
- msgid "---> Package %s.%s %s:%s-%s set to be %s"
- msgstr "---> Balíček %s.%s %s:%s-%s nastaven k %s"
-
--#: ../output.py:1538
-+#: ../output.py:1599
- msgid "--> Running transaction check"
- msgstr "--> Spouští se kontrola transakce"
-
--#: ../output.py:1543
-+#: ../output.py:1604
- msgid "--> Restarting Dependency Resolution with new changes."
- msgstr "--> Restartuje se řešení závislostí s novými změnami."
-
--#: ../output.py:1548
-+#: ../output.py:1609
- msgid "--> Finished Dependency Resolution"
- msgstr "--> Řešení závislostí dokončeno"
-
--#: ../output.py:1553 ../output.py:1558
-+#: ../output.py:1614 ../output.py:1619
- #, python-format
- msgid "--> Processing Dependency: %s for package: %s"
- msgstr "--> Zpracování závislosti: %s pro balíček: %s"
-
--#: ../output.py:1562
-+#: ../output.py:1623
- #, python-format
- msgid "--> Unresolved Dependency: %s"
- msgstr "--> Nevyřešená závislost: %s"
-
--#: ../output.py:1568 ../output.py:1573
-+#: ../output.py:1634
-+#, python-format
-+msgid "Package: %s"
-+msgstr "Balíček: %s"
-+
-+#: ../output.py:1636
-+#, python-format
-+msgid ""
-+"\n"
-+" Requires: %s"
-+msgstr ""
-+"\n"
-+" Vyžaduje: %s"
-+
-+#: ../output.py:1649 ../output.py:1660
-+#, python-format
-+msgid ""
-+"\n"
-+" %s: %s (%s)"
-+msgstr ""
-+"\n"
-+" %s: %s (%s)"
-+
-+#: ../output.py:1657
-+msgid "Available"
-+msgstr "Dostupné"
-+
-+#: ../output.py:1665 ../output.py:1670
- #, python-format
- msgid "--> Processing Conflict: %s conflicts %s"
- msgstr "--> Zpracování konfliktu: %s je v konfliktu s %s"
-
--#: ../output.py:1577
-+#: ../output.py:1674
- msgid "--> Populating transaction set with selected packages. Please wait."
- msgstr "--> Do transakční sady se přidávají vybrané balíčky. Čekejte prosím."
-
--#: ../output.py:1581
-+#: ../output.py:1678
- #, python-format
- msgid "---> Downloading header for %s to pack into transaction set."
- msgstr "---> Stahují se hlavičky %s pro přidání do transakce."
-
--#: ../utils.py:137 ../yummain.py:42
-+#: ../utils.py:93
-+msgid "Running"
-+msgstr "Běží"
-+
-+#: ../utils.py:94
-+msgid "Sleeping"
-+msgstr "Spí"
-+
-+#: ../utils.py:95
-+msgid "Uninterruptible"
-+msgstr "Nepřerušitelné"
-+
-+#: ../utils.py:96
-+msgid "Zombie"
-+msgstr "Zombie"
-+
-+#: ../utils.py:97
-+msgid "Traced/Stopped"
-+msgstr "Trasován/Zastaven"
-+
-+#: ../utils.py:98 ../yumcommands.py:917
-+msgid "Unknown"
-+msgstr "Neznámý"
-+
-+#: ../utils.py:109
-+msgid " The other application is: PackageKit"
-+msgstr " Další aplikace je: PackageKit"
-+
-+#: ../utils.py:111
-+#, python-format
-+msgid " The other application is: %s"
-+msgstr " Další aplikace je: %s"
-+
-+#: ../utils.py:114
-+#, python-format
-+msgid " Memory : %5s RSS (%5sB VSZ)"
-+msgstr " Paměť : %5s RSS (%5sB VSZ)"
-+
-+#: ../utils.py:119
-+#, python-format
-+msgid " Started: %s - %s ago"
-+msgstr " Spuštěn: %s - %s nazpět"
-+
-+#: ../utils.py:121
-+#, python-format
-+msgid " State : %s, pid: %d"
-+msgstr " Stav : %s, pid: %d"
-+
-+#: ../utils.py:199
-+#, python-format
-+msgid "PluginExit Error: %s"
-+msgstr "Chyba PluginExit: %s"
-+
-+#: ../utils.py:202
-+#, python-format
-+msgid "Yum Error: %s"
-+msgstr "Chyba Yumu: %s"
-+
-+#: ../utils.py:235 ../yummain.py:42
- msgid ""
- "\n"
- "\n"
-@@ -1077,7 +1258,7 @@ msgstr ""
- "\n"
- "Ukončeno na základě pokynu uživatele"
-
--#: ../utils.py:143 ../yummain.py:48
-+#: ../utils.py:241 ../yummain.py:48
- msgid ""
- "\n"
- "\n"
-@@ -1087,7 +1268,7 @@ msgstr ""
- "\n"
- "Ukončeno kvůli nefunkční rouře"
-
--#: ../utils.py:145 ../yummain.py:50
-+#: ../utils.py:243 ../yummain.py:50
- #, python-format
- msgid ""
- "\n"
-@@ -1098,15 +1279,15 @@ msgstr ""
- "\n"
- "%s"
-
--#: ../utils.py:184 ../yummain.py:273
-+#: ../utils.py:282 ../yummain.py:211
- msgid "Complete!"
- msgstr "Hotovo!"
-
--#: ../yumcommands.py:42
-+#: ../yumcommands.py:43
- msgid "You need to be root to perform this command."
- msgstr "Pro spuštění tohoto příkazu potřebujete být root."
-
--#: ../yumcommands.py:49
-+#: ../yumcommands.py:50
- msgid ""
- "\n"
- "You have enabled checking of packages via GPG keys. This is a good thing. \n"
-@@ -1137,335 +1318,335 @@ msgstr ""
- "\n"
- "Více informací získáte u svého distributora nebo správce balíčku.\n"
-
--#: ../yumcommands.py:69
-+#: ../yumcommands.py:70
- #, python-format
- msgid "Error: Need to pass a list of pkgs to %s"
- msgstr "Chyba: Je potřeba předat seznam balíčků do %s"
-
--#: ../yumcommands.py:75
-+#: ../yumcommands.py:76
- msgid "Error: Need an item to match"
- msgstr "Chyba: K nalezení shody je potřeba předmět"
-
--#: ../yumcommands.py:81
-+#: ../yumcommands.py:82
- msgid "Error: Need a group or list of groups"
- msgstr "Chyba: Je potřeba skupina nebo seznam skupin"
-
--#: ../yumcommands.py:90
-+#: ../yumcommands.py:91
- #, python-format
- msgid "Error: clean requires an option: %s"
- msgstr "Chyba: clean vyžaduje volbu: %s"
-
--#: ../yumcommands.py:95
-+#: ../yumcommands.py:96
- #, python-format
- msgid "Error: invalid clean argument: %r"
- msgstr "Chyba: Neplatný argument pro clean: %r"
-
--#: ../yumcommands.py:108
-+#: ../yumcommands.py:109
- msgid "No argument to shell"
- msgstr "Shell nemá žádný argument"
-
--#: ../yumcommands.py:110
-+#: ../yumcommands.py:111
- #, python-format
- msgid "Filename passed to shell: %s"
- msgstr "Jméno souboru předané shellu: %s"
-
--#: ../yumcommands.py:114
-+#: ../yumcommands.py:115
- #, python-format
- msgid "File %s given as argument to shell does not exist."
- msgstr "Soubor %s předaný jako argument shellu neexistuje."
-
--#: ../yumcommands.py:120
-+#: ../yumcommands.py:121
- msgid "Error: more than one file given as argument to shell."
- msgstr "Chyba: Více než jeden soubor předán shellu jako argument."
-
--#: ../yumcommands.py:169
-+#: ../yumcommands.py:170
- msgid "PACKAGE..."
- msgstr "Balíček..."
-
--#: ../yumcommands.py:172
-+#: ../yumcommands.py:173
- msgid "Install a package or packages on your system"
- msgstr "Instalovat balíček nebo balíčky do vašeho systému"
-
--#: ../yumcommands.py:180
-+#: ../yumcommands.py:181
- msgid "Setting up Install Process"
- msgstr "Uspořádává se průběh instalace"
-
--#: ../yumcommands.py:191
-+#: ../yumcommands.py:192
- msgid "[PACKAGE...]"
- msgstr "[Balíček...]"
-
--#: ../yumcommands.py:194
-+#: ../yumcommands.py:195
- msgid "Update a package or packages on your system"
- msgstr "Aktualizovat balíček nebo balíčky na vašem systému"
-
--#: ../yumcommands.py:201
-+#: ../yumcommands.py:202
- msgid "Setting up Update Process"
- msgstr "Uspořádává se průběh aktualizace"
-
--#: ../yumcommands.py:246
-+#: ../yumcommands.py:244
- msgid "Display details about a package or group of packages"
- msgstr "Zobrazit detaily o balíčku nebo skupině balíčků"
-
--#: ../yumcommands.py:295
-+#: ../yumcommands.py:293
- msgid "Installed Packages"
- msgstr "Nainstalované balíčky"
-
--#: ../yumcommands.py:303
-+#: ../yumcommands.py:301
- msgid "Available Packages"
- msgstr "Dostupné balíčky"
-
--#: ../yumcommands.py:307
-+#: ../yumcommands.py:305
- msgid "Extra Packages"
- msgstr "Dodatečné balíčky"
-
--#: ../yumcommands.py:311
-+#: ../yumcommands.py:309
- msgid "Updated Packages"
- msgstr "Aktualizované balíčky"
-
- #. This only happens in verbose mode
--#: ../yumcommands.py:319 ../yumcommands.py:326 ../yumcommands.py:603
-+#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
- msgid "Obsoleting Packages"
- msgstr "Zastaralé balíčky"
-
--#: ../yumcommands.py:328
-+#: ../yumcommands.py:326
- msgid "Recently Added Packages"
- msgstr "Nově přidané balíčky"
-
--#: ../yumcommands.py:335
-+#: ../yumcommands.py:333
- msgid "No matching Packages to list"
- msgstr "Nenalezeny shodné balíčky"
-
--#: ../yumcommands.py:349
-+#: ../yumcommands.py:347
- msgid "List a package or groups of packages"
- msgstr "Vypsat balíček nebo skupiny balíčků"
-
--#: ../yumcommands.py:361
-+#: ../yumcommands.py:359
- msgid "Remove a package or packages from your system"
- msgstr "Odstranit balíček nebo balíčky ze systému"
-
--#: ../yumcommands.py:368
-+#: ../yumcommands.py:366
- msgid "Setting up Remove Process"
- msgstr "Uspořádává se průběh odstranění"
-
--#: ../yumcommands.py:382
-+#: ../yumcommands.py:380
- msgid "Setting up Group Process"
- msgstr "Uspořádává se zpracování skupiny"
-
--#: ../yumcommands.py:388
-+#: ../yumcommands.py:386
- msgid "No Groups on which to run command"
- msgstr "Nenalezeny skupiny, na které by šlo příkaz aplikovat"
-
--#: ../yumcommands.py:401
-+#: ../yumcommands.py:399
- msgid "List available package groups"
- msgstr "Vypsat dostupné skupiny balíčků"
-
--#: ../yumcommands.py:418
-+#: ../yumcommands.py:416
- msgid "Install the packages in a group on your system"
- msgstr "Instalovat balíčky ze skupiny do systému"
-
--#: ../yumcommands.py:440
-+#: ../yumcommands.py:438
- msgid "Remove the packages in a group from your system"
- msgstr "Odstranit balíčky ze skupiny ze systému"
-
--#: ../yumcommands.py:467
-+#: ../yumcommands.py:465
- msgid "Display details about a package group"
- msgstr "Zobrazit detaily o skupině balíčků"
-
--#: ../yumcommands.py:491
-+#: ../yumcommands.py:489
- msgid "Generate the metadata cache"
- msgstr "Vygenerovat skladiště metadat"
-
--#: ../yumcommands.py:497
-+#: ../yumcommands.py:495
- msgid "Making cache files for all metadata files."
- msgstr "Vytváří se skladištní soubory pro všechna metadata "
-
--#: ../yumcommands.py:498
-+#: ../yumcommands.py:496
- msgid "This may take a while depending on the speed of this computer"
- msgstr "Může to chvíli trvat v závislosti na rychlosti tohoto počítače"
-
--#: ../yumcommands.py:519
-+#: ../yumcommands.py:517
- msgid "Metadata Cache Created"
- msgstr "Skladiště metadat vytvořeno"
-
--#: ../yumcommands.py:533
-+#: ../yumcommands.py:531
- msgid "Remove cached data"
- msgstr "Odstranit data ze skladiště"
-
--#: ../yumcommands.py:553
-+#: ../yumcommands.py:551
- msgid "Find what package provides the given value"
- msgstr "Nalézt balíček, který poskytuje danou hodnotu"
-
--#: ../yumcommands.py:573
-+#: ../yumcommands.py:571
- msgid "Check for available package updates"
- msgstr "Zkontrolovat dostupné aktualizace balíčků"
-
--#: ../yumcommands.py:623
-+#: ../yumcommands.py:621
- msgid "Search package details for the given string"
- msgstr "Nalézt detaily balíčku pro daný řetězec"
-
--#: ../yumcommands.py:629
-+#: ../yumcommands.py:627
- msgid "Searching Packages: "
- msgstr "Prohledávají se balíčky: "
-
--#: ../yumcommands.py:646
-+#: ../yumcommands.py:644
- msgid "Update packages taking obsoletes into account"
- msgstr "Aktualizovat balíčky a brát v úvahu zastaralé"
-
--#: ../yumcommands.py:654
-+#: ../yumcommands.py:652
- msgid "Setting up Upgrade Process"
--msgstr "Upořádává se průběh aktualizace"
-+msgstr "Uspořádává se průběh aktualizace"
-
--#: ../yumcommands.py:668
-+#: ../yumcommands.py:666
- msgid "Install a local RPM"
- msgstr "Instalovat lokální RPM"
-
--#: ../yumcommands.py:676
-+#: ../yumcommands.py:674
- msgid "Setting up Local Package Process"
- msgstr "Uspořádává se zpracování lokálního balíčku"
-
--#: ../yumcommands.py:695
-+#: ../yumcommands.py:693
- msgid "Determine which package provides the given dependency"
- msgstr "Určit který balíček poskytuje danou závislost"
-
--#: ../yumcommands.py:698
-+#: ../yumcommands.py:696
- msgid "Searching Packages for Dependency:"
- msgstr "Prohledávají se balíčky kvůli závislostem:"
-
--#: ../yumcommands.py:712
-+#: ../yumcommands.py:710
- msgid "Run an interactive yum shell"
- msgstr "Spustit interaktivní shell yum"
-
--#: ../yumcommands.py:718
-+#: ../yumcommands.py:716
- msgid "Setting up Yum Shell"
- msgstr "Nastavuje se yum shell"
-
--#: ../yumcommands.py:736
-+#: ../yumcommands.py:734
- msgid "List a package's dependencies"
- msgstr "Zobrazit závislosti balíčku"
-
--#: ../yumcommands.py:742
-+#: ../yumcommands.py:740
- msgid "Finding dependencies: "
- msgstr "Hledají se závislosti: "
-
--#: ../yumcommands.py:758
-+#: ../yumcommands.py:756
- msgid "Display the configured software repositories"
- msgstr "Zobrazit nastavené repozitáře softwaru"
-
--#: ../yumcommands.py:810 ../yumcommands.py:811
-+#: ../yumcommands.py:822 ../yumcommands.py:823
- msgid "enabled"
- msgstr "povoleno"
-
--#: ../yumcommands.py:819 ../yumcommands.py:820
-+#: ../yumcommands.py:849 ../yumcommands.py:850
- msgid "disabled"
- msgstr "zakázáno"
-
--#: ../yumcommands.py:834
-+#: ../yumcommands.py:866
- msgid "Repo-id : "
- msgstr "Repo-id : "
-
--#: ../yumcommands.py:835
-+#: ../yumcommands.py:867
- msgid "Repo-name : "
- msgstr "Repo-jméno : "
-
--#: ../yumcommands.py:836
-+#: ../yumcommands.py:870
- msgid "Repo-status : "
- msgstr "Repo-status : "
-
--#: ../yumcommands.py:838
-+#: ../yumcommands.py:873
- msgid "Repo-revision: "
- msgstr "Repo-revize : "
-
--#: ../yumcommands.py:842
-+#: ../yumcommands.py:877
- msgid "Repo-tags : "
- msgstr "Repo-tagy : "
-
--#: ../yumcommands.py:848
-+#: ../yumcommands.py:883
- msgid "Repo-distro-tags: "
- msgstr "Repo-distro-tagy: "
-
--#: ../yumcommands.py:853
-+#: ../yumcommands.py:888
- msgid "Repo-updated : "
- msgstr "Repo-aktuální: "
-
--#: ../yumcommands.py:855
-+#: ../yumcommands.py:890
- msgid "Repo-pkgs : "
- msgstr "Repo-bal. : "
-
--#: ../yumcommands.py:856
-+#: ../yumcommands.py:891
- msgid "Repo-size : "
- msgstr "Repo-velikost: "
-
--#: ../yumcommands.py:863
-+#: ../yumcommands.py:898
- msgid "Repo-baseurl : "
- msgstr "Repo-baseurl : "
-
--#: ../yumcommands.py:871
-+#: ../yumcommands.py:906
- msgid "Repo-metalink: "
- msgstr "Repo-metalink: "
-
--#: ../yumcommands.py:875
-+#: ../yumcommands.py:910
- msgid " Updated : "
- msgstr " Aktualizováno: "
-
--#: ../yumcommands.py:878
-+#: ../yumcommands.py:913
- msgid "Repo-mirrors : "
- msgstr "Repo-zrcadla : "
-
--#: ../yumcommands.py:882 ../yummain.py:133
--msgid "Unknown"
--msgstr "Neznámý"
--
--#: ../yumcommands.py:888
-+#: ../yumcommands.py:923
- #, python-format
- msgid "Never (last: %s)"
- msgstr "Nikdy (poslední: %s)"
-
--#: ../yumcommands.py:890
-+#: ../yumcommands.py:925
- #, python-format
- msgid "Instant (last: %s)"
- msgstr "Okamžitě (naposledy: %s)"
-
--#: ../yumcommands.py:893
-+#: ../yumcommands.py:928
- #, python-format
- msgid "%s second(s) (last: %s)"
- msgstr "%s sekund (naposledy: %s)"
-
--#: ../yumcommands.py:895
-+#: ../yumcommands.py:930
- msgid "Repo-expire : "
- msgstr "Repo-vyprší : "
-
--#: ../yumcommands.py:898
-+#: ../yumcommands.py:933
- msgid "Repo-exclude : "
- msgstr "Repo-vyřazeno: "
-
--#: ../yumcommands.py:902
-+#: ../yumcommands.py:937
- msgid "Repo-include : "
- msgstr "Repo-zahrnuto: "
-
-+#: ../yumcommands.py:941
-+msgid "Repo-excluded: "
-+msgstr "Repo-vyřazeno: "
-+
- #. Work out the first (id) and last (enabled/disalbed/count),
- #. then chop the middle (name)...
--#: ../yumcommands.py:912 ../yumcommands.py:938
-+#: ../yumcommands.py:951 ../yumcommands.py:980
- msgid "repo id"
- msgstr "repo id"
-
--#: ../yumcommands.py:926 ../yumcommands.py:927 ../yumcommands.py:941
-+#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
- msgid "status"
- msgstr "status"
-
--#: ../yumcommands.py:939
-+#: ../yumcommands.py:981
- msgid "repo name"
- msgstr "jméno repa"
-
--#: ../yumcommands.py:965
-+#: ../yumcommands.py:1018
- msgid "Display a helpful usage message"
- msgstr "Zobrazit užitečnou nápovědu"
-
--#: ../yumcommands.py:999
-+#: ../yumcommands.py:1052
- #, python-format
- msgid "No help available for %s"
- msgstr "Není dostupná nápověda pro %s"
-
--#: ../yumcommands.py:1004
-+#: ../yumcommands.py:1057
- msgid ""
- "\n"
- "\n"
-@@ -1475,7 +1656,7 @@ msgstr ""
- "\n"
- "aliasy: "
-
--#: ../yumcommands.py:1006
-+#: ../yumcommands.py:1059
- msgid ""
- "\n"
- "\n"
-@@ -1485,142 +1666,96 @@ msgstr ""
- "\n"
- "alias: "
-
--#: ../yumcommands.py:1034
-+#: ../yumcommands.py:1087
- msgid "Setting up Reinstall Process"
- msgstr "Uspořádává se průběh reinstalace"
-
--#: ../yumcommands.py:1042
-+#: ../yumcommands.py:1095
- msgid "reinstall a package"
- msgstr "Reinstalace balíčku"
-
--#: ../yumcommands.py:1060
-+#: ../yumcommands.py:1113
- msgid "Setting up Downgrade Process"
- msgstr "Uspořádává se průběh snížení verze"
-
--#: ../yumcommands.py:1067
-+#: ../yumcommands.py:1120
- msgid "downgrade a package"
- msgstr "Snížení verze balíčku"
-
--#: ../yumcommands.py:1081
-+#: ../yumcommands.py:1134
- msgid "Display a version for the machine and/or available repos."
- msgstr "Zobrazit verzi pro tento počítač a/nebo dostupné repozitáře."
-
--#: ../yumcommands.py:1111
-+#: ../yumcommands.py:1173
- msgid " Yum version groups:"
- msgstr " Verze yum skupin:"
-
--#: ../yumcommands.py:1121
-+#: ../yumcommands.py:1183
- msgid " Group :"
- msgstr " Skupina :"
-
--#: ../yumcommands.py:1122
-+#: ../yumcommands.py:1184
- msgid " Packages:"
- msgstr " Balíčky :"
-
--#: ../yumcommands.py:1152
-+#: ../yumcommands.py:1213
- msgid "Installed:"
- msgstr "Nainstalováno:"
-
--#: ../yumcommands.py:1157
-+#: ../yumcommands.py:1218
- msgid "Group-Installed:"
- msgstr "Nainstalované skupiny:"
-
--#: ../yumcommands.py:1166
-+#: ../yumcommands.py:1227
- msgid "Available:"
- msgstr "Dostupné:"
-
--#: ../yumcommands.py:1172
-+#: ../yumcommands.py:1233
- msgid "Group-Available:"
- msgstr "Dostupné skupiny:"
-
--#: ../yumcommands.py:1211
-+#: ../yumcommands.py:1272
- msgid "Display, or use, the transaction history"
- msgstr "Zobrazit nebo používat transakční historii"
-
--#: ../yumcommands.py:1239
-+#: ../yumcommands.py:1300
- #, python-format
- msgid "Invalid history sub-command, use: %s."
- msgstr "Neplatný pod-příkaz historie, použijte: %s."
-
--#: ../yummain.py:128
--msgid "Running"
--msgstr "Běží"
--
--#: ../yummain.py:129
--msgid "Sleeping"
--msgstr "Spí"
--
--#: ../yummain.py:130
--msgid "Uninteruptable"
--msgstr "Nepřerušitelné"
--
--#: ../yummain.py:131
--msgid "Zombie"
--msgstr "Zombie"
--
--#: ../yummain.py:132
--msgid "Traced/Stopped"
--msgstr "Trasován/Zastaven"
--
--#: ../yummain.py:137
--msgid " The other application is: PackageKit"
--msgstr " Další aplikace je: PackageKit"
--
--#: ../yummain.py:139
--#, python-format
--msgid " The other application is: %s"
--msgstr " Další aplikace je: %s"
--
--#: ../yummain.py:142
--#, python-format
--msgid " Memory : %5s RSS (%5sB VSZ)"
--msgstr " Paměť : %5s RSS (%5sB VSZ)"
--
--#: ../yummain.py:146
--#, python-format
--msgid " Started: %s - %s ago"
--msgstr " Spuštěn: %s - %s nazpět"
--
--#: ../yummain.py:148
--#, python-format
--msgid " State : %s, pid: %d"
--msgstr " Stav : %s, pid: %d"
-+#: ../yumcommands.py:1345
-+msgid "Check for problems in the rpmdb"
-+msgstr "Zkontrolovat problémy v rpmdb"
-
--#: ../yummain.py:173
-+#: ../yummain.py:102
- msgid ""
- "Another app is currently holding the yum lock; waiting for it to exit..."
- msgstr "Zámek yumu je obsazen jinou aplikací; čeká se na její ukončení..."
-
--#: ../yummain.py:201 ../yummain.py:240
-+#: ../yummain.py:130 ../yummain.py:169
- #, python-format
- msgid "Error: %s"
- msgstr "Chyba: %s"
-
--#: ../yummain.py:211 ../yummain.py:253
-+#: ../yummain.py:140 ../yummain.py:182
- #, python-format
- msgid "Unknown Error(s): Exit Code: %d:"
- msgstr "Neznámá chyba/y: Výstupní kód: %d:"
-
- #. Depsolve stage
--#: ../yummain.py:218
-+#: ../yummain.py:147
- msgid "Resolving Dependencies"
- msgstr "Řeší se závislosti"
-
--#: ../yummain.py:242
-+#: ../yummain.py:173
- msgid " You could try using --skip-broken to work around the problem"
- msgstr " Můžete zkusit volbu --skip-broken k překonání tohoto problému"
-
--#: ../yummain.py:243
--msgid ""
--" You could try running: package-cleanup --problems\n"
--" package-cleanup --dupes\n"
--" rpm -Va --nofiles --nodigest"
--msgstr ""
--" Můžete zkusit spustit: package-cleanup --problems\n"
--" package-cleanup --dupes\n"
--" rpm -Va --nofiles --nodigest"
-+#: ../yummain.py:175 ../yummain.py:208
-+msgid " You could try running: rpm -Va --nofiles --nodigest"
-+msgstr " Můžete zkusit spustit: rpm -Va --nofiles --nodigest"
-
--#: ../yummain.py:259
-+#: ../yummain.py:188
- msgid ""
- "\n"
- "Dependencies Resolved"
-@@ -1628,7 +1763,7 @@ msgstr ""
- "\n"
- "Závislosti vyřešeny"
-
--#: ../yummain.py:326
-+#: ../yummain.py:265
- msgid ""
- "\n"
- "\n"
-@@ -1666,169 +1801,164 @@ msgstr "Potenciálně shodné pro %s z %s"
- msgid "Matched %s to require for %s"
- msgstr "Shoda %s vyžadovaná pro %s"
-
--#: ../yum/depsolve.py:224
-+#: ../yum/depsolve.py:225
- #, python-format
- msgid "Member: %s"
- msgstr "Prvek: %s"
-
--#: ../yum/depsolve.py:238 ../yum/depsolve.py:749
-+#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
- #, python-format
- msgid "%s converted to install"
- msgstr "%s zkonvertován na instalaci"
-
--#: ../yum/depsolve.py:245
-+#: ../yum/depsolve.py:246
- #, python-format
- msgid "Adding Package %s in mode %s"
- msgstr "Přidává se balíček %s v módu %s"
-
--#: ../yum/depsolve.py:255
-+#: ../yum/depsolve.py:256
- #, python-format
- msgid "Removing Package %s"
- msgstr "Odstraňuje se balíček %s"
-
--#: ../yum/depsolve.py:277
-+#: ../yum/depsolve.py:278
- #, python-format
- msgid "%s requires: %s"
- msgstr "%s vyžaduje: %s"
-
--#: ../yum/depsolve.py:335
-+#: ../yum/depsolve.py:319
-+#, python-format
-+msgid "%s requires %s"
-+msgstr "%s vyžaduje %s"
-+
-+#: ../yum/depsolve.py:346
- msgid "Needed Require has already been looked up, cheating"
- msgstr "Závazné požadavky již byly prohledány, švindluje se"
-
--#: ../yum/depsolve.py:345
-+#: ../yum/depsolve.py:356
- #, python-format
- msgid "Needed Require is not a package name. Looking up: %s"
- msgstr "Závazný požadavek není jméno balíčku. Hledá se: %s"
-
--#: ../yum/depsolve.py:352
-+#: ../yum/depsolve.py:363
- #, python-format
- msgid "Potential Provider: %s"
- msgstr "Možný poskytovatel: %s"
-
--#: ../yum/depsolve.py:375
-+#: ../yum/depsolve.py:386
- #, python-format
- msgid "Mode is %s for provider of %s: %s"
- msgstr "Mód je %s pro poskytovatele %s: %s"
-
--#: ../yum/depsolve.py:379
-+#: ../yum/depsolve.py:390
- #, python-format
- msgid "Mode for pkg providing %s: %s"
- msgstr "Mód pro bal. poskytující %s: %s"
-
--#: ../yum/depsolve.py:383
-+#: ../yum/depsolve.py:394
- #, python-format
- msgid "TSINFO: %s package requiring %s marked as erase"
- msgstr "TSINFO: %s balíček požaduje %s označený ke smazání"
-
--#: ../yum/depsolve.py:396
-+#: ../yum/depsolve.py:407
- #, python-format
- msgid "TSINFO: Obsoleting %s with %s to resolve dep."
- msgstr "TSINFO: Zastarává se %s s %s k vyřešení závislostí."
-
--#: ../yum/depsolve.py:399
-+#: ../yum/depsolve.py:410
- #, python-format
- msgid "TSINFO: Updating %s to resolve dep."
- msgstr "TSINFO: Aktualizuji %s k vyřešení závislostí."
-
--#: ../yum/depsolve.py:407
-+#: ../yum/depsolve.py:418
- #, python-format
- msgid "Cannot find an update path for dep for: %s"
- msgstr "Nelze nalézt cestu aktualizací pro závislost pro: %s"
-
--#: ../yum/depsolve.py:417
--#, python-format
--msgid "Unresolvable requirement %s for %s"
--msgstr "Neřešitelný požadavek %s pro %s"
--
--#: ../yum/depsolve.py:440
-+#: ../yum/depsolve.py:449
- #, python-format
- msgid "Quick matched %s to require for %s"
- msgstr "Rychlá shoda %s vyžadovaného pro %s"
-
- #. is it already installed?
--#: ../yum/depsolve.py:482
-+#: ../yum/depsolve.py:491
- #, python-format
- msgid "%s is in providing packages but it is already installed, removing."
- msgstr ""
- "%s je v poskytujících balíčcích, ale je již nainstalován, odstraňuje se."
-
--#: ../yum/depsolve.py:498
-+#: ../yum/depsolve.py:507
- #, python-format
- msgid "Potential resolving package %s has newer instance in ts."
- msgstr "Balíček %s, který může být řešení, má v ts novější verzi."
-
--#: ../yum/depsolve.py:509
-+#: ../yum/depsolve.py:518
- #, python-format
- msgid "Potential resolving package %s has newer instance installed."
- msgstr "Balíček %s, který může být řešení, je nainstalován v novější verzi."
-
--#: ../yum/depsolve.py:517 ../yum/depsolve.py:563
--#, python-format
--msgid "Missing Dependency: %s is needed by package %s"
--msgstr "Chybí závislost: %s je vyžadován balíčkem %s"
--
--#: ../yum/depsolve.py:530
-+#: ../yum/depsolve.py:536
- #, python-format
- msgid "%s already in ts, skipping this one"
- msgstr "%s je již v ts, vynechává se"
-
--#: ../yum/depsolve.py:573
-+#: ../yum/depsolve.py:578
- #, python-format
- msgid "TSINFO: Marking %s as update for %s"
- msgstr "TSINFO: Označuji %s jako aktualizaci %s"
-
--#: ../yum/depsolve.py:581
-+#: ../yum/depsolve.py:586
- #, python-format
- msgid "TSINFO: Marking %s as install for %s"
- msgstr "TSINFO: Označuji %s jako instalaci %s"
-
--#: ../yum/depsolve.py:685 ../yum/depsolve.py:767
-+#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
- msgid "Success - empty transaction"
- msgstr "Úspěch - prázdná transakce"
-
--#: ../yum/depsolve.py:724 ../yum/depsolve.py:739
-+#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
- msgid "Restarting Loop"
- msgstr "Restartuje se smyčka"
-
--#: ../yum/depsolve.py:755
-+#: ../yum/depsolve.py:760
- msgid "Dependency Process ending"
- msgstr "Proces zpracování závislostí končí"
-
--#: ../yum/depsolve.py:761
-+#: ../yum/depsolve.py:774
- #, python-format
- msgid "%s from %s has depsolving problems"
- msgstr "%s z %s má problémy se závislostmi"
-
--#: ../yum/depsolve.py:768
-+#: ../yum/depsolve.py:782
- msgid "Success - deps resolved"
- msgstr "Úspěch - závislosti vyřešeny"
-
--#: ../yum/depsolve.py:782
-+#: ../yum/depsolve.py:796
- #, python-format
- msgid "Checking deps for %s"
- msgstr "Kontroluji závislosti pro %s"
-
--#: ../yum/depsolve.py:865
-+#: ../yum/depsolve.py:874
- #, python-format
- msgid "looking for %s as a requirement of %s"
- msgstr "hledá se %s jako požadavek od %s"
-
--#: ../yum/depsolve.py:1007
-+#: ../yum/depsolve.py:1090
- #, python-format
- msgid "Running compare_providers() for %s"
- msgstr "Spouští se compare_providers() pro %s"
-
--#: ../yum/depsolve.py:1041 ../yum/depsolve.py:1047
-+#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
- #, python-format
- msgid "better arch in po %s"
- msgstr "lepší architektura v po %s"
-
--#: ../yum/depsolve.py:1142
-+#: ../yum/depsolve.py:1218
- #, python-format
- msgid "%s obsoletes %s"
- msgstr "%s zastarává %s"
-
--#: ../yum/depsolve.py:1154
-+#: ../yum/depsolve.py:1230
- #, python-format
- msgid ""
- "archdist compared %s to %s on %s\n"
-@@ -1837,103 +1967,122 @@ msgstr ""
- "archdist porovnán pro %s k %s na %s\n"
- " Vítěz: %s"
-
--#: ../yum/depsolve.py:1161
-+#: ../yum/depsolve.py:1237
- #, python-format
- msgid "common sourcerpm %s and %s"
- msgstr "společné zdrojové rpm %s a %s"
-
--#: ../yum/depsolve.py:1167
-+#: ../yum/depsolve.py:1241
-+#, python-format
-+msgid "base package %s is installed for %s"
-+msgstr "základní balíček %s je nainstalován pro %s"
-+
-+#: ../yum/depsolve.py:1247
- #, python-format
- msgid "common prefix of %s between %s and %s"
- msgstr "společný prefix %s mezi %s a %s"
-
--#: ../yum/depsolve.py:1175
-+#: ../yum/depsolve.py:1256
- #, python-format
- msgid "Best Order: %s"
- msgstr "Nejlepší pořádek: %s"
-
--#: ../yum/__init__.py:187
-+#: ../yum/__init__.py:192
- msgid "doConfigSetup() will go away in a future version of Yum.\n"
- msgstr "doConfigSetup() bude odstraněn v příští verzi Yumu.\n"
-
--#: ../yum/__init__.py:412
-+#: ../yum/__init__.py:424
- #, python-format
- msgid "Repository %r is missing name in configuration, using id"
- msgstr "Repozitáři %r chybí jméno v konfiguraci, používá se id"
-
--#: ../yum/__init__.py:450
-+#: ../yum/__init__.py:462
- msgid "plugins already initialised"
- msgstr "zásuvný modul je již inicializován"
-
--#: ../yum/__init__.py:457
-+#: ../yum/__init__.py:469
- msgid "doRpmDBSetup() will go away in a future version of Yum.\n"
- msgstr "doRpmDBSetup() bude odstraněn v příští verzi Yumu.\n"
-
--#: ../yum/__init__.py:468
-+#: ../yum/__init__.py:480
- msgid "Reading Local RPMDB"
- msgstr "Načítá se lokální RPMDB"
-
--#: ../yum/__init__.py:489
-+#: ../yum/__init__.py:504
- msgid "doRepoSetup() will go away in a future version of Yum.\n"
- msgstr "doRepoSetup() bude odstraněn v příští verzi Yumu.\n"
-
--#: ../yum/__init__.py:509
-+#: ../yum/__init__.py:524
- msgid "doSackSetup() will go away in a future version of Yum.\n"
- msgstr "doSackSetup() bude odstraněn v příští verzi Yumu.\n"
-
--#: ../yum/__init__.py:539
-+#: ../yum/__init__.py:554
- msgid "Setting up Package Sacks"
--msgstr "Připravuji pytle balíčků"
-+msgstr "Připravuje se pytel balíčků"
-
--#: ../yum/__init__.py:584
-+#: ../yum/__init__.py:599
- #, python-format
- msgid "repo object for repo %s lacks a _resetSack method\n"
- msgstr "objekt repozitáře pro repo %s postrádá metodu _resetSack\n"
-
--#: ../yum/__init__.py:585
-+#: ../yum/__init__.py:600
- msgid "therefore this repo cannot be reset.\n"
- msgstr "proto nemůže toto repo být resetováno.\n"
-
--#: ../yum/__init__.py:590
-+#: ../yum/__init__.py:605
- msgid "doUpdateSetup() will go away in a future version of Yum.\n"
- msgstr "doUpdateSetup() bude odstraněn v příští verzi Yumu.\n"
-
--#: ../yum/__init__.py:602
-+#: ../yum/__init__.py:617
- msgid "Building updates object"
- msgstr "Sestavuje se objekt aktualizací"
-
--#: ../yum/__init__.py:637
-+#: ../yum/__init__.py:652
- msgid "doGroupSetup() will go away in a future version of Yum.\n"
- msgstr "doGroupSetup() bude odstraněn v příští verzi Yumu.\n"
-
--#: ../yum/__init__.py:662
-+#: ../yum/__init__.py:677
- msgid "Getting group metadata"
- msgstr "Získávají se metadata skupin"
-
--#: ../yum/__init__.py:688
-+#: ../yum/__init__.py:703
- #, python-format
- msgid "Adding group file from repository: %s"
--msgstr "Přidávám skupinový soubor pro repozitář: %s"
-+msgstr "Přidává se skupinový soubor pro repozitář: %s"
-
--#: ../yum/__init__.py:697
-+#: ../yum/__init__.py:712
- #, python-format
- msgid "Failed to add groups file for repository: %s - %s"
- msgstr "Selhalo přidání skupinového souboru pro repozitář: %s - %s"
-
--#: ../yum/__init__.py:703
-+#: ../yum/__init__.py:718
- msgid "No Groups Available in any repository"
- msgstr "V žádném repozitáři nejsou dostupné skupiny"
-
--#: ../yum/__init__.py:763
-+#: ../yum/__init__.py:730
-+msgid "Getting pkgtags metadata"
-+msgstr "Získávají se pkgtags metadata"
-+
-+#: ../yum/__init__.py:740
-+#, python-format
-+msgid "Adding tags from repository: %s"
-+msgstr "Přidávají se tagy z repozitáře: %s"
-+
-+#: ../yum/__init__.py:749
-+#, python-format
-+msgid "Failed to add Pkg Tags for repository: %s - %s"
-+msgstr "Selhalo přidání Pkg Tagů pro repozitář: %s - %s"
-+
-+#: ../yum/__init__.py:827
- msgid "Importing additional filelist information"
- msgstr "Importuji informace z dodatečného seznamu souborů"
-
--#: ../yum/__init__.py:777
-+#: ../yum/__init__.py:841
- #, python-format
- msgid "The program %s%s%s is found in the yum-utils package."
- msgstr "Program %s%s%s byl nalezen v balíčku yum-utils."
-
--#: ../yum/__init__.py:785
-+#: ../yum/__init__.py:849
- msgid ""
- "There are unfinished transactions remaining. You might consider running yum-"
- "complete-transaction first to finish them."
-@@ -1941,17 +2090,18 @@ msgstr ""
- "Existují nedokončené transakce. Měli byste zvážit možnost nejdříve spustit "
- "yum-complete-transaction k jejich dokončení."
-
--#: ../yum/__init__.py:853
-+#. Kind of hacky
-+#: ../yum/__init__.py:922
- #, python-format
- msgid "Skip-broken round %i"
- msgstr "Přeskočení rozpadlých - kolo %i"
-
--#: ../yum/__init__.py:906
-+#: ../yum/__init__.py:975
- #, python-format
- msgid "Skip-broken took %i rounds "
- msgstr "Přeskočení rozpadlých trvalo %i kol "
-
--#: ../yum/__init__.py:907
-+#: ../yum/__init__.py:976
- msgid ""
- "\n"
- "Packages skipped because of dependency problems:"
-@@ -1959,77 +2109,92 @@ msgstr ""
- "\n"
- "
Balíčky přeskočené kvůli problémům se závislostmi:"
-
--#: ../yum/__init__.py:911
-+#: ../yum/__init__.py:980
- #, python-format
- msgid " %s from %s"
- msgstr " %s z %s"
-
--#: ../yum/__init__.py:1083
-+#: ../yum/__init__.py:1121
-+msgid "Warning: RPMDB altered outside of yum."
-+msgstr "Varování: RPMDB byla změněna mimo yum."
-+
-+#: ../yum/__init__.py:1126
-+msgid "missing requires"
-+msgstr "chybějící požadavek"
-+
-+#: ../yum/__init__.py:1127
-+msgid "installed conflict"
-+msgstr "konflikt nainstalovaného"
-+
-+#: ../yum/__init__.py:1180
- msgid ""
- "Warning: scriptlet or other non-fatal errors occurred during transaction."
- msgstr ""
- "Varování: Během transakce došlo k chybě skriptletu nebo jiné nefatální chybě."
-
--#: ../yum/__init__.py:1101
-+#: ../yum/__init__.py:1198
- #, python-format
- msgid "Failed to remove transaction file %s"
- msgstr "Selhalo odstranění transakčního souboru %s."
-
- #. maybe a file log here, too
- #. but raising an exception is not going to do any good
--#: ../yum/__init__.py:1130
-+#: ../yum/__init__.py:1227
- #, python-format
- msgid "%s was supposed to be installed but is not!"
- msgstr "%s mělo být nainstalováno, ale není!"
-
- #. maybe a file log here, too
- #. but raising an exception is not going to do any good
--#: ../yum/__init__.py:1169
-+#: ../yum/__init__.py:1266
- #, python-format
- msgid "%s was supposed to be removed but is not!"
- msgstr "%s mělo být odstraněno, ale není!"
-
- #. Whoa. What the heck happened?
--#: ../yum/__init__.py:1289
-+#: ../yum/__init__.py:1386
- #, python-format
- msgid "Unable to check if PID %s is active"
- msgstr "Nedá se zkontrolovat, zda je PID %s aktivní."
-
- #. Another copy seems to be running.
--#: ../yum/__init__.py:1293
-+#: ../yum/__init__.py:1390
- #, python-format
- msgid "Existing lock %s: another copy is running as pid %s."
- msgstr "Existující zámek %s: jiná kopie běží s pid %s."
-
- #. Whoa. What the heck happened?
--#: ../yum/__init__.py:1328
-+#: ../yum/__init__.py:1425
- #, python-format
- msgid "Could not create lock at %s: %s "
- msgstr "Nelze vytvořit zámek na %s: %s "
-
--#: ../yum/__init__.py:1373
--msgid "Package does not match intended download"
--msgstr "Balíček se neshoduje se zamýšleným stahováním"
-+#: ../yum/__init__.py:1470
-+msgid ""
-+"Package does not match intended download. Suggestion: run yum clean metadata"
-+msgstr ""
-+"Balíček se neshoduje se zamýšleným stahováním. Návrh: spusťte yum clean "
-+"metadata"
-
--#: ../yum/__init__.py:1388
-+#: ../yum/__init__.py:1486
- msgid "Could not perform checksum"
- msgstr "Nelze zkontrolovat kontrolní součet"
-
--#: ../yum/__init__.py:1391
-+#: ../yum/__init__.py:1489
- msgid "Package does not match checksum"
- msgstr "Balíček neodpovídá kontrolnímu součtu"
-
--#: ../yum/__init__.py:1433
-+#: ../yum/__init__.py:1531
- #, python-format
- msgid "package fails checksum but caching is enabled for %s"
- msgstr "balíček neprošel kontrolním součtem ale skladiště je povoleno pro %s"
-
--#: ../yum/__init__.py:1436 ../yum/__init__.py:1465
-+#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
- #, python-format
- msgid "using local copy of %s"
- msgstr "používá se lokální kopie %s"
-
--#: ../yum/__init__.py:1477
-+#: ../yum/__init__.py:1575
- #, python-format
- msgid ""
- "Insufficient space in download directory %s\n"
-@@ -2040,11 +2205,11 @@ msgstr ""
- " * volno %s\n"
- " * potřeba %s"
-
--#: ../yum/__init__.py:1526
-+#: ../yum/__init__.py:1624
- msgid "Header is not complete."
- msgstr "Hlavička není kompletní."
-
--#: ../yum/__init__.py:1563
-+#: ../yum/__init__.py:1661
- #, python-format
- msgid ""
- "Header not in local cache and caching-only mode enabled. Cannot download %s"
-@@ -2052,62 +2217,62 @@ msgstr ""
- "Hlavička není v lokálním skladišti, ale je povoleno používat pouze "
- "skladiště. Nemohu stáhnout %s"
-
--#: ../yum/__init__.py:1618
-+#: ../yum/__init__.py:1716
- #, python-format
- msgid "Public key for %s is not installed"
- msgstr "Veřejný klíč %s není nainstalován"
-
--#: ../yum/__init__.py:1622
-+#: ../yum/__init__.py:1720
- #, python-format
- msgid "Problem opening package %s"
- msgstr "Problém s otevřením balíčku %s"
-
--#: ../yum/__init__.py:1630
-+#: ../yum/__init__.py:1728
- #, python-format
- msgid "Public key for %s is not trusted"
- msgstr "Veřejný klíč %s není důvěryhodný"
-
--#: ../yum/__init__.py:1634
-+#: ../yum/__init__.py:1732
- #, python-format
- msgid "Package %s is not signed"
- msgstr "Balíček %s není podepsán"
-
--#: ../yum/__init__.py:1672
-+#: ../yum/__init__.py:1770
- #, python-format
- msgid "Cannot remove %s"
- msgstr "Nemohu odstranit %s"
-
--#: ../yum/__init__.py:1676
-+#: ../yum/__init__.py:1774
- #, python-format
- msgid "%s removed"
- msgstr "%s odstraněn"
-
--#: ../yum/__init__.py:1712
-+#: ../yum/__init__.py:1820
- #, python-format
- msgid "Cannot remove %s file %s"
- msgstr "Nemohu odstranit %s soubor %s"
-
--#: ../yum/__init__.py:1716
-+#: ../yum/__init__.py:1824
- #, python-format
- msgid "%s file %s removed"
- msgstr "%s soubor %s odstraněn"
-
--#: ../yum/__init__.py:1718
-+#: ../yum/__init__.py:1826
- #, python-format
- msgid "%d %s files removed"
- msgstr "%d %s soubor odstraněn"
-
--#: ../yum/__init__.py:1787
-+#: ../yum/__init__.py:1895
- #, python-format
- msgid "More than one identical match in sack for %s"
- msgstr "Více než jedna identická shoda v pytli pro %s"
-
--#: ../yum/__init__.py:1793
-+#: ../yum/__init__.py:1901
- #, python-format
- msgid "Nothing matches %s.%s %s:%s-%s from update"
- msgstr "Nic se neshoduje s %s.%s %s:%s-%s z aktualizace"
-
--#: ../yum/__init__.py:2026
-+#: ../yum/__init__.py:2180
- msgid ""
- "searchPackages() will go away in a future version of "
- "Yum. Use searchGenerator() instead. \n"
-@@ -2115,178 +2280,178 @@ msgstr ""
- "searchPackages() bude odstraněn v příští verzi Yumu. "
- "Používejte místo něj searchGenerator(). \n"
-
--#: ../yum/__init__.py:2065
-+#: ../yum/__init__.py:2219
- #, python-format
- msgid "Searching %d packages"
- msgstr "Prohledává se %d balíčků"
-
--#: ../yum/__init__.py:2069
-+#: ../yum/__init__.py:2223
- #, python-format
- msgid "searching package %s"
- msgstr "prohledává se balíček %s"
-
--#: ../yum/__init__.py:2081
-+#: ../yum/__init__.py:2235
- msgid "searching in file entries"
- msgstr "hledá se v souborových položkách"
-
--#: ../yum/__init__.py:2088
-+#: ../yum/__init__.py:2242
- msgid "searching in provides entries"
- msgstr "hledá se v položkách poskytovatelů"
-
--#: ../yum/__init__.py:2121
-+#: ../yum/__init__.py:2275
- #, python-format
- msgid "Provides-match: %s"
- msgstr "Poskytovatel-shoda: %s"
-
--#: ../yum/__init__.py:2170
-+#: ../yum/__init__.py:2324
- msgid "No group data available for configured repositories"
- msgstr "Pro nastavený repozitář nejsou žádná dostupná skupinová data"
-
--#: ../yum/__init__.py:2201 ../yum/__init__.py:2220 ../yum/__init__.py:2251
--#: ../yum/__init__.py:2257 ../yum/__init__.py:2336 ../yum/__init__.py:2340
--#: ../yum/__init__.py:2655
-+#: ../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
- #, python-format
- msgid "No Group named %s exists"
- msgstr "Neexistuje skupina pojmenovaná %s"
-
--#: ../yum/__init__.py:2232 ../yum/__init__.py:2353
-+#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
- #, python-format
- msgid "package %s was not marked in group %s"
- msgstr "balíček %s nebyl označen ve skupině %s"
-
--#: ../yum/__init__.py:2279
-+#: ../yum/__init__.py:2433
- #, python-format
- msgid "Adding package %s from group %s"
- msgstr "Přidává se balíček %s pro skupinu %s"
-
--#: ../yum/__init__.py:2283
-+#: ../yum/__init__.py:2437
- #, python-format
- msgid "No package named %s available to be installed"
- msgstr "Žádný balíček pojmenovaný %s není dostupný pro instalaci"
-
--#: ../yum/__init__.py:2380
-+#: ../yum/__init__.py:2539
- #, python-format
- msgid "Package tuple %s could not be found in packagesack"
- msgstr "Uspořádaný seznam balíčků %s nenalezen v pytli balíčků"
-
--#: ../yum/__init__.py:2399
-+#: ../yum/__init__.py:2558
- #, python-format
- msgid "Package tuple %s could not be found in rpmdb"
- msgstr "Uspořádaný seznam balíčků %s nenalezen v rpmdb"
-
--#: ../yum/__init__.py:2455 ../yum/__init__.py:2505
-+#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
- msgid "Invalid version flag"
- msgstr "Chybný příznak verze"
-
--#: ../yum/__init__.py:2475 ../yum/__init__.py:2480
-+#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
- #, python-format
- msgid "No Package found for %s"
- msgstr "Nebyl nalezen balíček pro %s"
-
--#: ../yum/__init__.py:2696
-+#: ../yum/__init__.py:2855
- msgid "Package Object was not a package object instance"
- msgstr "Objekt balíčku nebyl instancí balíčkového objektu"
-
--#: ../yum/__init__.py:2700
-+#: ../yum/__init__.py:2859
- msgid "Nothing specified to install"
- msgstr "Nebylo určeno nic k instalaci"
-
--#: ../yum/__init__.py:2716 ../yum/__init__.py:3489
-+#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
- #, python-format
- msgid "Checking for virtual provide or file-provide for %s"
- msgstr "Hledá se virtuální poskytovatel nebo soubor poskytující %s"
-
--#: ../yum/__init__.py:2722 ../yum/__init__.py:3037 ../yum/__init__.py:3205
--#: ../yum/__init__.py:3495
-+#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:3658
- #, python-format
- msgid "No Match for argument: %s"
- msgstr "Nenalezena shoda pro argument: %s"
-
--#: ../yum/__init__.py:2798
-+#: ../yum/__init__.py:2957
- #, python-format
- msgid "Package %s installed and not available"
- msgstr "Balíček %s je nainstalován, ale není dostupný"
-
--#: ../yum/__init__.py:2801
-+#: ../yum/__init__.py:2960
- msgid "No package(s) available to install"
- msgstr "Žádný balíček/ky dostupný pro instalaci"
-
--#: ../yum/__init__.py:2813
-+#: ../yum/__init__.py:2972
- #, python-format
- msgid "Package: %s - already in transaction set"
- msgstr "Balíček: %s - již je v transakční sadě"
-
--#: ../yum/__init__.py:2839
-+#: ../yum/__init__.py:2998
- #, python-format
- msgid "Package %s is obsoleted by %s which is already installed"
- msgstr "Balíček %s je zastaralý balíčkem %s, který je již nainstalován"
-
--#: ../yum/__init__.py:2842
-+#: ../yum/__init__.py:3001
- #, python-format
- msgid "Package %s is obsoleted by %s, trying to install %s instead"
- msgstr "Balíček %s je zastaralý balíčkem %s, zkouší se místo něj instalovat %s"
-
--#: ../yum/__init__.py:2850
-+#: ../yum/__init__.py:3009
- #, python-format
- msgid "Package %s already installed and latest version"
- msgstr "Balíček %s je již nainstalován a v poslední verzi"
-
--#: ../yum/__init__.py:2864
-+#: ../yum/__init__.py:3023
- #, python-format
- msgid "Package matching %s already installed. Checking for update."
- msgstr "Balíček odpovídající %s je již nainstalován. Hledají se aktualizace."
-
- #. update everything (the easy case)
--#: ../yum/__init__.py:2966
-+#: ../yum/__init__.py:3126
- msgid "Updating Everything"
- msgstr "Aktualizuje se vše"
-
--#: ../yum/__init__.py:2987 ../yum/__init__.py:3102 ../yum/__init__.py:3129
--#: ../yum/__init__.py:3155
-+#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3315
- #, python-format
- msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
- msgstr "Neaktualizuje se balíček, který je již zastaralý: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3022 ../yum/__init__.py:3202
-+#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
- #, python-format
- msgid "%s"
- msgstr "%s"
-
--#: ../yum/__init__.py:3093
-+#: ../yum/__init__.py:3253
- #, python-format
- msgid "Package is already obsoleted: %s.%s %s:%s-%s"
- msgstr "Balíček je již zastaralý: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3124
-+#: ../yum/__init__.py:3284
- #, python-format
- msgid "Not Updating Package that is obsoleted: %s"
- msgstr "Neaktualizuje se balíček, který je zastaralý: %s"
-
--#: ../yum/__init__.py:3133 ../yum/__init__.py:3159
-+#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
- #, python-format
- msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
- msgstr "Neaktualizuje se balíček, který jej již aktuální: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3218
-+#: ../yum/__init__.py:3378
- msgid "No package matched to remove"
- msgstr "Nenalezen žádný shodný balíček pro odstranění"
-
--#: ../yum/__init__.py:3251 ../yum/__init__.py:3349 ../yum/__init__.py:3432
-+#: ../yum/__init__.py:3412
- #, python-format
--msgid "Cannot open file: %s. Skipping."
--msgstr "Nelze otevřít soubor: %s. Přeskakuje se."
-+msgid "Cannot open: %s. Skipping."
-+msgstr "Nelze otevřít: %s. Přeskakuje se."
-
--#: ../yum/__init__.py:3254 ../yum/__init__.py:3352 ../yum/__init__.py:3435
-+#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
- #, python-format
- msgid "Examining %s: %s"
- msgstr "Zkoumá se %s: %s"
-
--#: ../yum/__init__.py:3262 ../yum/__init__.py:3355 ../yum/__init__.py:3438
-+#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
- #, python-format
- msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
- msgstr "Nelze přidat balíček %s do transakce. Nekompatibilní architektura: %s"
-
--#: ../yum/__init__.py:3270
-+#: ../yum/__init__.py:3431
- #, python-format
- msgid ""
- "Package %s not installed, cannot update it. Run yum install to install it "
-@@ -2295,143 +2460,158 @@ msgstr ""
- "Balíček %s není nainstalován, nelze jej aktualizovat. Spusťte místo toho yum "
- "install a nainstalujte jej."
-
--#: ../yum/__init__.py:3299 ../yum/__init__.py:3360 ../yum/__init__.py:3443
-+#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
- #, python-format
- msgid "Excluding %s"
- msgstr "Vynechává se %s"
-
--#: ../yum/__init__.py:3304
-+#: ../yum/__init__.py:3465
- #, python-format
- msgid "Marking %s to be installed"
- msgstr "Označuje se %s k instalaci"
-
--#: ../yum/__init__.py:3310
-+#: ../yum/__init__.py:3471
- #, python-format
- msgid "Marking %s as an update to %s"
- msgstr "Označuje se %s jako aktualizace %s"
-
--#: ../yum/__init__.py:3317
-+#: ../yum/__init__.py:3478
- #, python-format
- msgid "%s: does not update installed package."
- msgstr "%s: není aktualizací instalovaného balíčku."
-
--#: ../yum/__init__.py:3379
-+#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
-+#, python-format
-+msgid "Cannot open file: %s. Skipping."
-+msgstr "Nelze otevřít soubor: %s. Přeskakuje se."
-+
-+#: ../yum/__init__.py:3541
- msgid "Problem in reinstall: no package matched to remove"
- msgstr "Problém při reinstalaci: žádný shodný balíček k odstranění"
-
--#: ../yum/__init__.py:3392 ../yum/__init__.py:3523
-+#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
- #, python-format
- msgid "Package %s is allowed multiple installs, skipping"
- msgstr "Balíček %s má dovoleno vícero instalací, přeskakuje se"
-
--#: ../yum/__init__.py:3413
-+#: ../yum/__init__.py:3575
- #, python-format
- msgid "Problem in reinstall: no package %s matched to install"
- msgstr "Problém při reinstalaci: žádný shodný balíček %s k instalaci"
-
--#: ../yum/__init__.py:3515
-+#: ../yum/__init__.py:3678
- msgid "No package(s) available to downgrade"
- msgstr "Žádný balíček/ky dostupné ke snížení verze"
-
--#: ../yum/__init__.py:3559
-+#: ../yum/__init__.py:3731
- #, python-format
- msgid "No Match for available package: %s"
- msgstr "Neexistuje shoda pro dostupný balíček: %s"
-
--#: ../yum/__init__.py:3565
-+#: ../yum/__init__.py:3738
- #, python-format
- msgid "Only Upgrade available on package: %s"
- msgstr "Pouze aktualizace dostupná pro balíček: %s"
-
--#: ../yum/__init__.py:3635 ../yum/__init__.py:3672
-+#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
- #, python-format
- msgid "Failed to downgrade: %s"
- msgstr "Nepodařilo se snížit verzi: %s"
-
--#: ../yum/__init__.py:3704
-+#: ../yum/__init__.py:3877
- #, python-format
- msgid "Retrieving GPG key from %s"
- msgstr "Získává se GPG klíč pro %s"
-
--#: ../yum/__init__.py:3724
-+#: ../yum/__init__.py:3897
- msgid "GPG key retrieval failed: "
- msgstr "Získání GPG klíče selhalo: "
-
--#: ../yum/__init__.py:3735
-+#: ../yum/__init__.py:3903
-+#, python-format
-+msgid "Invalid GPG Key from %s: %s"
-+msgstr "Neplatný GPG klíč pro %s: %s"
-+
-+#: ../yum/__init__.py:3912
- #, python-format
- msgid "GPG key parsing failed: key does not have value %s"
- msgstr "Zpracování GPG klíče selhalo: klíč nemá žádnou hodnotu %s"
-
--#: ../yum/__init__.py:3767
-+#: ../yum/__init__.py:3944
- #, python-format
- msgid "GPG key at %s (0x%s) is already installed"
- msgstr "GPG klíč %s (0x%s) je již nainstalován"
-
- #. Try installing/updating GPG key
--#: ../yum/__init__.py:3772 ../yum/__init__.py:3834
-+#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
- #, python-format
- msgid "Importing GPG key 0x%s \"%s\" from %s"
--msgstr "Importuje se GPG klíč 0x%s \"%s\" z %s"
-+msgstr "Importuje se GPG klíč 0x%s „%s“ z %s"
-
--#: ../yum/__init__.py:3789
-+#: ../yum/__init__.py:3966
- msgid "Not installing key"
- msgstr "Neinstaluje se klíč"
-
--#: ../yum/__init__.py:3795
-+#: ../yum/__init__.py:3972
- #, python-format
- msgid "Key import failed (code %d)"
- msgstr "Import klíče selhal (kód %d)"
-
--#: ../yum/__init__.py:3796 ../yum/__init__.py:3855
-+#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
- msgid "Key imported successfully"
- msgstr "Import klíče proběhl úspěšně"
-
--#: ../yum/__init__.py:3801 ../yum/__init__.py:3860
-+#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
- #, python-format
- msgid ""
- "The GPG keys listed for the \"%s\" repository are already installed but they "
- "are not correct for this package.\n"
- "Check that the correct key URLs are configured for this repository."
- msgstr ""
--"GPG klíč určený pro repozitář %s je již nainstalován, ale není správný pro "
-+"GPG klíč určený pro repozitář „%s“ je již nainstalován, ale není správný pro "
- "tento balíček.\n"
- "Zkontrolujte, že URL klíče jsou pro repozitář správně nastavena."
-
--#: ../yum/__init__.py:3810
-+#: ../yum/__init__.py:3987
- msgid "Import of key(s) didn't help, wrong key(s)?"
- msgstr "Import klíče/ů nepomohl, špatný klíč(e)?"
-
--#: ../yum/__init__.py:3829
-+#: ../yum/__init__.py:4006
- #, python-format
- msgid "GPG key at %s (0x%s) is already imported"
- msgstr "GPG klíč %s (0x%s) je již naimportován"
-
--#: ../yum/__init__.py:3849
-+#: ../yum/__init__.py:4026
- #, python-format
- msgid "Not installing key for repo %s"
- msgstr "Neinstaluji klíč pro repozitář %s"
-
--#: ../yum/__init__.py:3854
-+#: ../yum/__init__.py:4031
- msgid "Key import failed"
- msgstr "Import klíče selhal"
-
--#: ../yum/__init__.py:3976
-+#: ../yum/__init__.py:4157
- msgid "Unable to find a suitable mirror."
- msgstr "Nemohu nalézt vhodné zrcadlo"
-
--#: ../yum/__init__.py:3978
-+#: ../yum/__init__.py:4159
- msgid "Errors were encountered while downloading packages."
- msgstr "Při stahování balíčků došlo k chybě."
-
--#: ../yum/__init__.py:4028
-+#: ../yum/__init__.py:4209
- #, python-format
- msgid "Please report this error at %s"
- msgstr "Oznamte prosím tuto chybu na %s"
-
--#: ../yum/__init__.py:4052
-+#: ../yum/__init__.py:4233
- msgid "Test Transaction Errors: "
- msgstr "Chyby testu transakce: "
-
-+#: ../yum/__init__.py:4334
-+#, python-format
-+msgid "Could not set cachedir: %s"
-+msgstr "Nelze vytvořit skladiště: %s "
-+
- #. Mostly copied from YumOutput._outKeyValFill()
- #: ../yum/plugins.py:202
- msgid "Loaded plugins: "
-@@ -2445,34 +2625,34 @@ msgstr "Neexistuje zásuvný modul pro: %s"
- #: ../yum/plugins.py:252
- #, python-format
- msgid "Not loading \"%s\" plugin, as it is disabled"
--msgstr "Nezavádí se \"%s\" modul, protože je zakázán"
-+msgstr "Nezavádí se „%s“ modul, protože je zakázán"
-
- #. Give full backtrace:
- #: ../yum/plugins.py:264
- #, python-format
- msgid "Plugin \"%s\" can't be imported"
--msgstr "Modul \"%s\" nemůže být importován"
-+msgstr "Modul „%s“ nemůže být importován"
-
- #: ../yum/plugins.py:271
- #, python-format
- msgid "Plugin \"%s\" doesn't specify required API version"
--msgstr "Modul \"%s\" neuvádí požadovanou verzi API"
-+msgstr "Modul „%s“ neuvádí požadovanou verzi API"
-
- #: ../yum/plugins.py:276
- #, python-format
- msgid "Plugin \"%s\" requires API %s. Supported API is %s."
--msgstr "Modul \"%s\" požaduje API %s. Podporované API je %s."
-+msgstr "Modul „%s“ požaduje API %s. Podporované API je %s."
-
- #: ../yum/plugins.py:309
- #, python-format
- msgid "Loading \"%s\" plugin"
--msgstr "Zavádí se zásuvný modul \"%s\""
-+msgstr "Zavádí se zásuvný modul „%s“"
-
- #: ../yum/plugins.py:316
- #, python-format
- msgid ""
- "Two or more plugins with the name \"%s\" exist in the plugin search path"
--msgstr "V prohledávaných cestách jsou dva nebo více modulů se jménem \"%s\""
-+msgstr "V prohledávaných cestách jsou dva nebo více modulů se jménem „%s“"
-
- #: ../yum/plugins.py:336
- #, python-format
-@@ -2490,7 +2670,20 @@ msgstr "Nelze nalézt konfigurační soubor pro modul %s"
- msgid "registration of commands not supported"
- msgstr "registrace příkazů není podporována"
-
--#: ../yum/rpmtrans.py:78
-+#: ../yum/rpmsack.py:102
-+msgid "has missing requires of"
-+msgstr "má chybějící požadavky"
-+
-+#: ../yum/rpmsack.py:105
-+msgid "has installed conflicts"
-+msgstr "má konflikty v instalaci"
-+
-+#: ../yum/rpmsack.py:114
-+#, python-format
-+msgid "%s is a duplicate with %s"
-+msgstr "%s je duplicitní s %s"
-+
-+#: ../yum/rpmtrans.py:79
- msgid "Repackaging"
- msgstr "Přebaluje se"
-
-@@ -2523,6 +2716,24 @@ msgstr "Poškozená hlavička %s"
- msgid "Error opening rpm %s - error %s"
- msgstr "Chyba při otevření rpm %s - chyba %s"
-
-+#~ msgid "Finished Transaction Test"
-+#~ msgstr "Test transakcí dokončen"
-+
-+#~ msgid ""
-+#~ " You could try running: package-cleanup --problems\n"
-+#~ " package-cleanup --dupes\n"
-+#~ " rpm -Va --nofiles --nodigest"
-+#~ msgstr ""
-+#~ " Můžete zkusit spustit: package-cleanup --problems\n"
-+#~ " package-cleanup --dupes\n"
-+#~ " rpm -Va --nofiles --nodigest"
-+
-+#~ msgid "Unresolvable requirement %s for %s"
-+#~ msgstr "Neřešitelný požadavek %s pro %s"
-+
-+#~ msgid "Missing Dependency: %s is needed by package %s"
-+#~ msgstr "Chybí závislost: %s je vyžadován balíčkem %s"
-+
- #~ msgid ""
- #~ "getInstalledPackageObject() will go away, use self.rpmdb.searchPkgTuple"
- #~ "().\n"
-diff --git a/po/en_GB.po b/po/en_GB.po
-new file mode 100644
-index 0000000..8170237
---- /dev/null
-+++ b/po/en_GB.po
-@@ -0,0 +1,2710 @@
-+# British English translation of yum
-+# Copyright (C) 2010 yum's COPYRIGHT HOLDER
-+# This file is distributed under the same licence as the yum package.
-+# Bruce Cowan <bruce at bcowan.me.uk>, 2010.
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: yum\n"
-+"Report-Msgid-Bugs-To: \n"
-+"POT-Creation-Date: 2010-02-11 10:54-0500\n"
-+"PO-Revision-Date: 2010-06-15 16:09+0100\n"
-+"Last-Translator: Bruce Cowan <bruce at bcowan.me.uk>\n"
-+"Language-Team: British English <en at li.org>\n"
-+"Language: en_GB\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: Virtaal 0.6.1\n"
-+
-+#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
-+msgid "Updating"
-+msgstr "Updating"
-+
-+#: ../callback.py:49 ../yum/rpmtrans.py:73
-+msgid "Erasing"
-+msgstr "Erasing"
-+
-+#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:946
-+#: ../output.py:1659 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
-+#: ../yum/rpmtrans.py:77
-+msgid "Installing"
-+msgstr "Installing"
-+
-+#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
-+msgid "Obsoleted"
-+msgstr "Obsoleted"
-+
-+#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
-+msgid "Updated"
-+msgstr "Updated"
-+
-+#: ../callback.py:55 ../output.py:1438
-+msgid "Erased"
-+msgstr "Erased"
-+
-+#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
-+#: ../output.py:1434 ../output.py:1646
-+msgid "Installed"
-+msgstr "Installed"
-+
-+#: ../callback.py:130
-+msgid "No header - huh?"
-+msgstr "No header - huh?"
-+
-+#: ../callback.py:168
-+msgid "Repackage"
-+msgstr "Repackage"
-+
-+#: ../callback.py:189
-+#, python-format
-+msgid "Error: invalid output state: %s for %s"
-+msgstr "Error: invalid output state: %s for %s"
-+
-+#: ../callback.py:212
-+#, python-format
-+msgid "Erased: %s"
-+msgstr "Erased: %s"
-+
-+#: ../callback.py:217 ../output.py:948 ../output.py:1648
-+msgid "Removing"
-+msgstr "Removing"
-+
-+#: ../callback.py:219 ../yum/rpmtrans.py:78
-+msgid "Cleanup"
-+msgstr "Cleanup"
-+
-+#: ../cli.py:107
-+#, python-format
-+msgid "Command \"%s\" already defined"
-+msgstr "Command \"%s\" already defined"
-+
-+#: ../cli.py:119
-+msgid "Setting up repositories"
-+msgstr "Setting up repositories"
-+
-+#: ../cli.py:130
-+msgid "Reading repository metadata in from local files"
-+msgstr "Reading repository metadata in from local files"
-+
-+#: ../cli.py:194 ../utils.py:193
-+#, python-format
-+msgid "Config Error: %s"
-+msgstr "Config Error: %s"
-+
-+#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
-+#, python-format
-+msgid "Options Error: %s"
-+msgstr "Options Error: %s"
-+
-+#: ../cli.py:227
-+#, python-format
-+msgid " Installed: %s-%s at %s"
-+msgstr " Installed: %s-%s at %s"
-+
-+#: ../cli.py:229
-+#, python-format
-+msgid " Built : %s at %s"
-+msgstr " Built : %s at %s"
-+
-+#: ../cli.py:231
-+#, python-format
-+msgid " Committed: %s at %s"
-+msgstr " Committed: %s at %s"
-+
-+#: ../cli.py:270
-+msgid "You need to give some command"
-+msgstr "You need to give some command"
-+
-+#: ../cli.py:284
-+#, python-format
-+msgid "No such command: %s. Please use %s --help"
-+msgstr "No such command: %s. Please use %s --help"
-+
-+#: ../cli.py:314
-+msgid "Disk Requirements:\n"
-+msgstr "Disk Requirements:\n"
-+
-+#: ../cli.py:316
-+#, python-format
-+msgid " At least %dMB more space needed on the %s filesystem.\n"
-+msgstr " At least %dMB more space needed on the %s filesystem.\n"
-+
-+#. TODO: simplify the dependency errors?
-+#. Fixup the summary
-+#: ../cli.py:321
-+msgid ""
-+"Error Summary\n"
-+"-------------\n"
-+msgstr ""
-+"Error Summary\n"
-+"-------------\n"
-+
-+#: ../cli.py:364
-+msgid "Trying to run the transaction but nothing to do. Exiting."
-+msgstr "Trying to run the transaction but nothing to do. Exiting."
-+
-+#: ../cli.py:403
-+msgid "Exiting on user Command"
-+msgstr "Exiting on user Command"
-+
-+#: ../cli.py:407
-+msgid "Downloading Packages:"
-+msgstr "Downloading Packages:"
-+
-+#: ../cli.py:412
-+msgid "Error Downloading Packages:\n"
-+msgstr "Error Downloading Packages:\n"
-+
-+#: ../cli.py:426 ../yum/__init__.py:4195
-+msgid "Running rpm_check_debug"
-+msgstr "Running rpm_check_debug"
-+
-+#: ../cli.py:435 ../yum/__init__.py:4204
-+msgid "ERROR You need to update rpm to handle:"
-+msgstr "ERROR You need to update rpm to handle:"
-+
-+#: ../cli.py:437 ../yum/__init__.py:4207
-+msgid "ERROR with rpm_check_debug vs depsolve:"
-+msgstr "ERROR with rpm_check_debug vs depsolve:"
-+
-+#: ../cli.py:443
-+msgid "RPM needs to be updated"
-+msgstr "RPM needs to be updated"
-+
-+#: ../cli.py:444
-+#, python-format
-+msgid "Please report this error in %s"
-+msgstr "Please report this error in %s"
-+
-+#: ../cli.py:450
-+msgid "Running Transaction Test"
-+msgstr "Running Transaction Test"
-+
-+#: ../cli.py:466
-+msgid "Transaction Check Error:\n"
-+msgstr "Transaction Check Error:\n"
-+
-+#: ../cli.py:473
-+msgid "Transaction Test Succeeded"
-+msgstr "Transaction Test Succeeded"
-+
-+#: ../cli.py:495
-+msgid "Running Transaction"
-+msgstr "Running Transaction"
-+
-+#: ../cli.py:525
-+msgid ""
-+"Refusing to automatically import keys when running unattended.\n"
-+"Use \"-y\" to override."
-+msgstr ""
-+"Refusing to automatically import keys when running unattended.\n"
-+"Use \"-y\" to override."
-+
-+#: ../cli.py:544 ../cli.py:578
-+msgid " * Maybe you meant: "
-+msgstr " * Maybe you meant: "
-+
-+#: ../cli.py:561 ../cli.py:569
-+#, python-format
-+msgid "Package(s) %s%s%s available, but not installed."
-+msgstr "Package(s) %s%s%s available, but not installed."
-+
-+#: ../cli.py:575 ../cli.py:607 ../cli.py:687
-+#, python-format
-+msgid "No package %s%s%s available."
-+msgstr "No package %s%s%s available."
-+
-+#: ../cli.py:612 ../cli.py:748
-+msgid "Package(s) to install"
-+msgstr "Package(s) to install"
-+
-+#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
-+#: ../yumcommands.py:160
-+msgid "Nothing to do"
-+msgstr "Nothing to do"
-+
-+#: ../cli.py:647
-+#, python-format
-+msgid "%d packages marked for Update"
-+msgstr "%d packages marked for Update"
-+
-+#: ../cli.py:650
-+msgid "No Packages marked for Update"
-+msgstr "No Packages marked for Update"
-+
-+#: ../cli.py:664
-+#, python-format
-+msgid "%d packages marked for removal"
-+msgstr "%d packages marked for removal"
-+
-+#: ../cli.py:667
-+msgid "No Packages marked for removal"
-+msgstr "No Packages marked for removal"
-+
-+#: ../cli.py:692
-+msgid "Package(s) to downgrade"
-+msgstr "Package(s) to downgrade"
-+
-+#: ../cli.py:717
-+#, python-format
-+msgid " (from %s)"
-+msgstr " (from %s)"
-+
-+#: ../cli.py:719
-+#, python-format
-+msgid "Installed package %s%s%s%s not available."
-+msgstr "Installed package %s%s%s%s not available."
-+
-+#: ../cli.py:726
-+msgid "Package(s) to reinstall"
-+msgstr "Package(s) to reinstall"
-+
-+#: ../cli.py:739
-+msgid "No Packages Provided"
-+msgstr "No Packages Provided"
-+
-+#: ../cli.py:818
-+#, python-format
-+msgid "Matched: %s"
-+msgstr "Matched: %s"
-+
-+#: ../cli.py:825
-+#, python-format
-+msgid "Warning: No matches found for: %s"
-+msgstr "Warning: No matches found for: %s"
-+
-+#: ../cli.py:828
-+msgid "No Matches found"
-+msgstr "No Matches found"
-+
-+#: ../cli.py:868
-+#, python-format
-+msgid ""
-+"Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
-+" You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
-+msgstr ""
-+"Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
-+" You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
-+
-+#: ../cli.py:884
-+#, python-format
-+msgid "No Package Found for %s"
-+msgstr "No Package Found for %s"
-+
-+#: ../cli.py:896
-+msgid "Cleaning up Everything"
-+msgstr "Cleaning up Everything"
-+
-+#: ../cli.py:912
-+msgid "Cleaning up Headers"
-+msgstr "Cleaning up Headers"
-+
-+#: ../cli.py:915
-+msgid "Cleaning up Packages"
-+msgstr "Cleaning up Packages"
-+
-+#: ../cli.py:918
-+msgid "Cleaning up xml metadata"
-+msgstr "Cleaning up xml metadata"
-+
-+#: ../cli.py:921
-+msgid "Cleaning up database cache"
-+msgstr "Cleaning up database cache"
-+
-+#: ../cli.py:924
-+msgid "Cleaning up expire-cache metadata"
-+msgstr "Cleaning up expire-cache metadata"
-+
-+#: ../cli.py:927
-+msgid "Cleaning up cached rpmdb data"
-+msgstr "Cleaning up cached rpmdb data"
-+
-+#: ../cli.py:930
-+msgid "Cleaning up plugins"
-+msgstr "Cleaning up plugins"
-+
-+#: ../cli.py:955
-+msgid "Installed Groups:"
-+msgstr "Installed Groups:"
-+
-+#: ../cli.py:967
-+msgid "Available Groups:"
-+msgstr "Available Groups:"
-+
-+#: ../cli.py:977
-+msgid "Done"
-+msgstr "Done"
-+
-+#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
-+#, python-format
-+msgid "Warning: Group %s does not exist."
-+msgstr "Warning: Group %s does not exist."
-+
-+#: ../cli.py:1016
-+msgid "No packages in any requested group available to install or update"
-+msgstr "No packages in any requested group available to install or update"
-+
-+#: ../cli.py:1018
-+#, python-format
-+msgid "%d Package(s) to Install"
-+msgstr "%d Package(s) to Install"
-+
-+#: ../cli.py:1028 ../yum/__init__.py:2800
-+#, python-format
-+msgid "No group named %s exists"
-+msgstr "No group named %s exists"
-+
-+#: ../cli.py:1034
-+msgid "No packages to remove from groups"
-+msgstr "No packages to remove from groups"
-+
-+#: ../cli.py:1036
-+#, python-format
-+msgid "%d Package(s) to remove"
-+msgstr "%d Package(s) to remove"
-+
-+#: ../cli.py:1078
-+#, python-format
-+msgid "Package %s is already installed, skipping"
-+msgstr "Package %s is already installed, skipping"
-+
-+#: ../cli.py:1089
-+#, python-format
-+msgid "Discarding non-comparable pkg %s.%s"
-+msgstr "Discarding non-comparable pkg %s.%s"
-+
-+#. we've not got any installed that match n or n+a
-+#: ../cli.py:1115
-+#, python-format
-+msgid "No other %s installed, adding to list for potential install"
-+msgstr "No other %s installed, adding to list for potential install"
-+
-+#: ../cli.py:1135
-+msgid "Plugin Options"
-+msgstr "Plugin Options"
-+
-+#: ../cli.py:1143
-+#, python-format
-+msgid "Command line error: %s"
-+msgstr "Command line error: %s"
-+
-+#: ../cli.py:1156
-+#, python-format
-+msgid ""
-+"\n"
-+"\n"
-+"%s: %s option requires an argument"
-+msgstr ""
-+"\n"
-+"\n"
-+"%s: %s option requires an argument"
-+
-+#: ../cli.py:1209
-+msgid "--color takes one of: auto, always, never"
-+msgstr "--color takes one of: auto, always, never"
-+
-+#: ../cli.py:1319
-+msgid "show this help message and exit"
-+msgstr "show this help message and exit"
-+
-+#: ../cli.py:1323
-+msgid "be tolerant of errors"
-+msgstr "be tolerant of errors"
-+
-+#: ../cli.py:1326
-+msgid "run entirely from system cache, don't update cache"
-+msgstr "run entirely from system cache, don't update cache"
-+
-+#: ../cli.py:1329
-+msgid "config file location"
-+msgstr "config file location"
-+
-+#: ../cli.py:1332
-+msgid "maximum command wait time"
-+msgstr "maximum command wait time"
-+
-+#: ../cli.py:1334
-+msgid "debugging output level"
-+msgstr "debugging output level"
-+
-+#: ../cli.py:1338
-+msgid "show duplicates, in repos, in list/search commands"
-+msgstr "show duplicates, in repos, in list/search commands"
-+
-+#: ../cli.py:1340
-+msgid "error output level"
-+msgstr "error output level"
-+
-+#: ../cli.py:1343
-+msgid "debugging output level for rpm"
-+msgstr "debugging output level for rpm"
-+
-+#: ../cli.py:1346
-+msgid "quiet operation"
-+msgstr "quiet operation"
-+
-+#: ../cli.py:1348
-+msgid "verbose operation"
-+msgstr "verbose operation"
-+
-+#: ../cli.py:1350
-+msgid "answer yes for all questions"
-+msgstr "answer yes for all questions"
-+
-+#: ../cli.py:1352
-+msgid "show Yum version and exit"
-+msgstr "show Yum version and exit"
-+
-+#: ../cli.py:1353
-+msgid "set install root"
-+msgstr "set install root"
-+
-+#: ../cli.py:1357
-+msgid "enable one or more repositories (wildcards allowed)"
-+msgstr "enable one or more repositories (wildcards allowed)"
-+
-+#: ../cli.py:1361
-+msgid "disable one or more repositories (wildcards allowed)"
-+msgstr "disable one or more repositories (wildcards allowed)"
-+
-+#: ../cli.py:1364
-+msgid "exclude package(s) by name or glob"
-+msgstr "exclude package(s) by name or glob"
-+
-+#: ../cli.py:1366
-+msgid "disable exclude from main, for a repo or for everything"
-+msgstr "disable exclude from main, for a repo or for everything"
-+
-+#: ../cli.py:1369
-+msgid "enable obsoletes processing during updates"
-+msgstr "enable obsoletes processing during updates"
-+
-+#: ../cli.py:1371
-+msgid "disable Yum plugins"
-+msgstr "disable Yum plugins"
-+
-+#: ../cli.py:1373
-+msgid "disable gpg signature checking"
-+msgstr "disable gpg signature checking"
-+
-+#: ../cli.py:1375
-+msgid "disable plugins by name"
-+msgstr "disable plugins by name"
-+
-+#: ../cli.py:1378
-+msgid "enable plugins by name"
-+msgstr "enable plugins by name"
-+
-+#: ../cli.py:1381
-+msgid "skip packages with depsolving problems"
-+msgstr "skip packages with depsolving problems"
-+
-+#: ../cli.py:1383
-+msgid "control whether color is used"
-+msgstr "control whether colour is used"
-+
-+#: ../cli.py:1385
-+msgid "set value of $releasever in yum config and repo files"
-+msgstr "set value of $releasever in yum config and repo files"
-+
-+#: ../output.py:305
-+msgid "Jan"
-+msgstr "Jan"
-+
-+#: ../output.py:305
-+msgid "Feb"
-+msgstr "Feb"
-+
-+#: ../output.py:305
-+msgid "Mar"
-+msgstr "Mar"
-+
-+#: ../output.py:305
-+msgid "Apr"
-+msgstr "Apr"
-+
-+#: ../output.py:305
-+msgid "May"
-+msgstr "May"
-+
-+#: ../output.py:305
-+msgid "Jun"
-+msgstr "Jun"
-+
-+#: ../output.py:306
-+msgid "Jul"
-+msgstr "Jul"
-+
-+#: ../output.py:306
-+msgid "Aug"
-+msgstr "Aug"
-+
-+#: ../output.py:306
-+msgid "Sep"
-+msgstr "Sep"
-+
-+#: ../output.py:306
-+msgid "Oct"
-+msgstr "Oct"
-+
-+#: ../output.py:306
-+msgid "Nov"
-+msgstr "Nov"
-+
-+#: ../output.py:306
-+msgid "Dec"
-+msgstr "Dec"
-+
-+#: ../output.py:316
-+msgid "Trying other mirror."
-+msgstr "Trying other mirror."
-+
-+#: ../output.py:534
-+#, python-format
-+msgid "Name : %s%s%s"
-+msgstr "Name : %s%s%s"
-+
-+#: ../output.py:535
-+#, python-format
-+msgid "Arch : %s"
-+msgstr "Arch : %s"
-+
-+#: ../output.py:537
-+#, python-format
-+msgid "Epoch : %s"
-+msgstr "Epoch : %s"
-+
-+#: ../output.py:538
-+#, python-format
-+msgid "Version : %s"
-+msgstr "Version : %s"
-+
-+#: ../output.py:539
-+#, python-format
-+msgid "Release : %s"
-+msgstr "Release : %s"
-+
-+#: ../output.py:540
-+#, python-format
-+msgid "Size : %s"
-+msgstr "Size : %s"
-+
-+#: ../output.py:541
-+#, python-format
-+msgid "Repo : %s"
-+msgstr "Repo : %s"
-+
-+#: ../output.py:543
-+#, python-format
-+msgid "From repo : %s"
-+msgstr "From repo : %s"
-+
-+#: ../output.py:545
-+#, python-format
-+msgid "Committer : %s"
-+msgstr "Committer : %s"
-+
-+#: ../output.py:546
-+#, python-format
-+msgid "Committime : %s"
-+msgstr "Committime : %s"
-+
-+#: ../output.py:547
-+#, python-format
-+msgid "Buildtime : %s"
-+msgstr "Buildtime : %s"
-+
-+#: ../output.py:549
-+#, python-format
-+msgid "Installtime: %s"
-+msgstr "Installtime: %s"
-+
-+#: ../output.py:550
-+msgid "Summary : "
-+msgstr "Summary : "
-+
-+#: ../output.py:552
-+#, python-format
-+msgid "URL : %s"
-+msgstr "URL : %s"
-+
-+#: ../output.py:553
-+msgid "License : "
-+msgstr "Licence : "
-+
-+#: ../output.py:554
-+msgid "Description: "
-+msgstr "Description: "
-+
-+#: ../output.py:622
-+msgid "y"
-+msgstr "y"
-+
-+#: ../output.py:622
-+msgid "yes"
-+msgstr "yes"
-+
-+#: ../output.py:623
-+msgid "n"
-+msgstr "n"
-+
-+#: ../output.py:623
-+msgid "no"
-+msgstr "no"
-+
-+#: ../output.py:627
-+msgid "Is this ok [y/N]: "
-+msgstr "Is this ok [y/N]: "
-+
-+#: ../output.py:715
-+#, python-format
-+msgid ""
-+"\n"
-+"Group: %s"
-+msgstr ""
-+"\n"
-+"Group: %s"
-+
-+#: ../output.py:719
-+#, python-format
-+msgid " Group-Id: %s"
-+msgstr " Group-Id: %s"
-+
-+#: ../output.py:724
-+#, python-format
-+msgid " Description: %s"
-+msgstr " Description: %s"
-+
-+#: ../output.py:726
-+msgid " Mandatory Packages:"
-+msgstr " Mandatory Packages:"
-+
-+#: ../output.py:727
-+msgid " Default Packages:"
-+msgstr " Default Packages:"
-+
-+#: ../output.py:728
-+msgid " Optional Packages:"
-+msgstr " Optional Packages:"
-+
-+#: ../output.py:729
-+msgid " Conditional Packages:"
-+msgstr " Conditional Packages:"
-+
-+#: ../output.py:749
-+#, python-format
-+msgid "package: %s"
-+msgstr "package: %s"
-+
-+#: ../output.py:751
-+msgid " No dependencies for this package"
-+msgstr " No dependencies for this package"
-+
-+#: ../output.py:756
-+#, python-format
-+msgid " dependency: %s"
-+msgstr " dependency: %s"
-+
-+#: ../output.py:758
-+msgid " Unsatisfied dependency"
-+msgstr " Unsatisfied dependency"
-+
-+#: ../output.py:830
-+#, python-format
-+msgid "Repo : %s"
-+msgstr "Repo : %s"
-+
-+#: ../output.py:831
-+msgid "Matched from:"
-+msgstr "Matched from:"
-+
-+#: ../output.py:840
-+msgid "Description : "
-+msgstr "Description : "
-+
-+#: ../output.py:843
-+#, python-format
-+msgid "URL : %s"
-+msgstr "URL : %s"
-+
-+#: ../output.py:846
-+#, python-format
-+msgid "License : %s"
-+msgstr "Licence : %s"
-+
-+#: ../output.py:849
-+#, python-format
-+msgid "Filename : %s"
-+msgstr "Filename : %s"
-+
-+#: ../output.py:853
-+msgid "Other : "
-+msgstr "Other : "
-+
-+#: ../output.py:896
-+msgid "There was an error calculating total download size"
-+msgstr "There was an error calculating total download size"
-+
-+#: ../output.py:901
-+#, python-format
-+msgid "Total size: %s"
-+msgstr "Total size: %s"
-+
-+#: ../output.py:904
-+#, python-format
-+msgid "Total download size: %s"
-+msgstr "Total download size: %s"
-+
-+#: ../output.py:908
-+#, python-format
-+msgid "Installed size: %s"
-+msgstr "Installed size: %s"
-+
-+#: ../output.py:949
-+msgid "Reinstalling"
-+msgstr "Reinstalling"
-+
-+#: ../output.py:950
-+msgid "Downgrading"
-+msgstr "Downgrading"
-+
-+#: ../output.py:951
-+msgid "Installing for dependencies"
-+msgstr "Installing for dependencies"
-+
-+#: ../output.py:952
-+msgid "Updating for dependencies"
-+msgstr "Updating for dependencies"
-+
-+#: ../output.py:953
-+msgid "Removing for dependencies"
-+msgstr "Removing for dependencies"
-+
-+#: ../output.py:960 ../output.py:1072
-+msgid "Skipped (dependency problems)"
-+msgstr "Skipped (dependency problems)"
-+
-+#: ../output.py:983
-+msgid "Package"
-+msgstr "Package"
-+
-+#: ../output.py:983
-+msgid "Arch"
-+msgstr "Arch"
-+
-+#: ../output.py:984
-+msgid "Version"
-+msgstr "Version"
-+
-+#: ../output.py:984
-+msgid "Repository"
-+msgstr "Repository"
-+
-+#: ../output.py:985
-+msgid "Size"
-+msgstr "Size"
-+
-+#: ../output.py:997
-+#, python-format
-+msgid " replacing %s%s%s.%s %s\n"
-+msgstr " replacing %s%s%s.%s %s\n"
-+
-+#: ../output.py:1006
-+#, python-format
-+msgid ""
-+"\n"
-+"Transaction Summary\n"
-+"%s\n"
-+msgstr ""
-+"\n"
-+"Transaction Summary\n"
-+"%s\n"
-+
-+#: ../output.py:1013
-+#, python-format
-+msgid ""
-+"Install %5.5s Package(s)\n"
-+"Upgrade %5.5s Package(s)\n"
-+msgstr ""
-+"Install %5.5s Package(s)\n"
-+"Upgrade %5.5s Package(s)\n"
-+
-+#: ../output.py:1022
-+#, python-format
-+msgid ""
-+"Remove %5.5s Package(s)\n"
-+"Reinstall %5.5s Package(s)\n"
-+"Downgrade %5.5s Package(s)\n"
-+msgstr ""
-+"Remove %5.5s Package(s)\n"
-+"Reinstall %5.5s Package(s)\n"
-+"Downgrade %5.5s Package(s)\n"
-+
-+#: ../output.py:1066
-+msgid "Removed"
-+msgstr "Removed"
-+
-+#: ../output.py:1067
-+msgid "Dependency Removed"
-+msgstr "Dependency Removed"
-+
-+#: ../output.py:1069
-+msgid "Dependency Installed"
-+msgstr "Dependency Installed"
-+
-+#: ../output.py:1071
-+msgid "Dependency Updated"
-+msgstr "Dependency Updated"
-+
-+#: ../output.py:1073
-+msgid "Replaced"
-+msgstr "Replaced"
-+
-+#: ../output.py:1074
-+msgid "Failed"
-+msgstr "Failed"
-+
-+#. Delta between C-c's so we treat as exit
-+#: ../output.py:1140
-+msgid "two"
-+msgstr "two"
-+
-+#. 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.
-+#: ../output.py:1151
-+#, python-format
-+msgid ""
-+"\n"
-+" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s "
-+"seconds\n"
-+"to exit.\n"
-+msgstr ""
-+"\n"
-+" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s "
-+"seconds\n"
-+"to exit.\n"
-+
-+#: ../output.py:1162
-+msgid "user interrupt"
-+msgstr "user interrupt"
-+
-+#: ../output.py:1180
-+msgid "Total"
-+msgstr "Total"
-+
-+#: ../output.py:1202
-+msgid "I"
-+msgstr "I"
-+
-+#: ../output.py:1203
-+msgid "O"
-+msgstr "O"
-+
-+#: ../output.py:1204
-+msgid "E"
-+msgstr "E"
-+
-+#: ../output.py:1205
-+msgid "R"
-+msgstr "R"
-+
-+#: ../output.py:1206
-+msgid "D"
-+msgstr "D"
-+
-+#: ../output.py:1207
-+msgid "U"
-+msgstr "U"
-+
-+#: ../output.py:1217
-+msgid "<unset>"
-+msgstr "<unset>"
-+
-+#: ../output.py:1218
-+msgid "System"
-+msgstr "System"
-+
-+#: ../output.py:1254
-+msgid "Bad transaction IDs, or package(s), given"
-+msgstr "Bad transaction IDs, or package(s), given"
-+
-+#: ../output.py:1266
-+msgid "ID"
-+msgstr "ID"
-+
-+#: ../output.py:1267 ../output.py:1520
-+msgid "Login user"
-+msgstr "Login user"
-+
-+#: ../output.py:1268
-+msgid "Date and time"
-+msgstr "Date and time"
-+
-+#: ../output.py:1269 ../output.py:1522
-+msgid "Action(s)"
-+msgstr "Action(s)"
-+
-+#: ../output.py:1270 ../output.py:1523
-+msgid "Altered"
-+msgstr "Altered"
-+
-+#: ../output.py:1310
-+msgid "No transaction ID given"
-+msgstr "No transaction ID given"
-+
-+#: ../output.py:1336
-+msgid "Bad transaction ID given"
-+msgstr "Bad transaction ID given"
-+
-+#: ../output.py:1341
-+msgid "Not found given transaction ID"
-+msgstr "Not found given transaction ID"
-+
-+#: ../output.py:1349
-+msgid "Found more than one transaction ID!"
-+msgstr "Found more than one transaction ID!"
-+
-+#: ../output.py:1370
-+msgid "No transaction ID, or package, given"
-+msgstr "No transaction ID, or package, given"
-+
-+#: ../output.py:1396
-+msgid "Transaction ID :"
-+msgstr "Transaction ID :"
-+
-+#: ../output.py:1398
-+msgid "Begin time :"
-+msgstr "Begin time :"
-+
-+#: ../output.py:1401 ../output.py:1403
-+msgid "Begin rpmdb :"
-+msgstr "Begin rpmdb :"
-+
-+#: ../output.py:1417
-+#, python-format
-+msgid "(%s seconds)"
-+msgstr "(%s seconds)"
-+
-+#: ../output.py:1418
-+msgid "End time :"
-+msgstr "End time :"
-+
-+#: ../output.py:1421 ../output.py:1423
-+msgid "End rpmdb :"
-+msgstr "End rpmdb :"
-+
-+#: ../output.py:1424
-+msgid "User :"
-+msgstr "User :"
-+
-+#: ../output.py:1426 ../output.py:1428 ../output.py:1430
-+msgid "Return-Code :"
-+msgstr "Return-Code :"
-+
-+#: ../output.py:1426
-+msgid "Aborted"
-+msgstr "Aborted"
-+
-+#: ../output.py:1428
-+msgid "Failure:"
-+msgstr "Failure:"
-+
-+#: ../output.py:1430
-+msgid "Success"
-+msgstr "Success"
-+
-+#: ../output.py:1431
-+msgid "Transaction performed with:"
-+msgstr "Transaction performed with:"
-+
-+#: ../output.py:1444 ../output.py:1489
-+msgid "Downgraded"
-+msgstr "Downgraded"
-+
-+#. multiple versions installed, both older and newer
-+#: ../output.py:1446
-+msgid "Weird"
-+msgstr "Weird"
-+
-+#: ../output.py:1448
-+msgid "Packages Altered:"
-+msgstr "Packages Altered:"
-+
-+#: ../output.py:1451
-+msgid "Scriptlet output:"
-+msgstr "Scriptlet output:"
-+
-+#: ../output.py:1457
-+msgid "Errors:"
-+msgstr "Errors:"
-+
-+#: ../output.py:1481 ../output.py:1482
-+msgid "Install"
-+msgstr "Install"
-+
-+#: ../output.py:1483
-+msgid "Dep-Install"
-+msgstr "Dep-Install"
-+
-+#: ../output.py:1485
-+msgid "Obsoleting"
-+msgstr "Obsoleting"
-+
-+#: ../output.py:1486
-+msgid "Erase"
-+msgstr "Erase"
-+
-+#: ../output.py:1487
-+msgid "Reinstall"
-+msgstr "Reinstall"
-+
-+#: ../output.py:1488
-+msgid "Downgrade"
-+msgstr "Downgrade"
-+
-+#: ../output.py:1490
-+msgid "Update"
-+msgstr "Update"
-+
-+#: ../output.py:1521
-+msgid "Time"
-+msgstr "Time"
-+
-+#: ../output.py:1547
-+msgid "Last day"
-+msgstr "Last day"
-+
-+#: ../output.py:1548
-+msgid "Last week"
-+msgstr "Last week"
-+
-+#: ../output.py:1549
-+msgid "Last 2 weeks"
-+msgstr "Last 2 weeks"
-+
-+#. US default :p
-+#: ../output.py:1550
-+msgid "Last 3 months"
-+msgstr "Last 3 months"
-+
-+#: ../output.py:1551
-+msgid "Last 6 months"
-+msgstr "Last 6 months"
-+
-+#: ../output.py:1552
-+msgid "Last year"
-+msgstr "Last year"
-+
-+#: ../output.py:1553
-+msgid "Over a year ago"
-+msgstr "Over a year ago"
-+
-+#: ../output.py:1585
-+msgid "installed"
-+msgstr "installed"
-+
-+#: ../output.py:1586
-+msgid "updated"
-+msgstr "updated"
-+
-+#: ../output.py:1587
-+msgid "obsoleted"
-+msgstr "obsoleted"
-+
-+#: ../output.py:1588
-+msgid "erased"
-+msgstr "erased"
-+
-+#: ../output.py:1592
-+#, python-format
-+msgid "---> Package %s.%s %s:%s-%s set to be %s"
-+msgstr "---> Package %s.%s %s:%s-%s set to be %s"
-+
-+#: ../output.py:1599
-+msgid "--> Running transaction check"
-+msgstr "--> Running transaction check"
-+
-+#: ../output.py:1604
-+msgid "--> Restarting Dependency Resolution with new changes."
-+msgstr "--> Restarting Dependency Resolution with new changes."
-+
-+#: ../output.py:1609
-+msgid "--> Finished Dependency Resolution"
-+msgstr "--> Finished Dependency Resolution"
-+
-+#: ../output.py:1614 ../output.py:1619
-+#, python-format
-+msgid "--> Processing Dependency: %s for package: %s"
-+msgstr "--> Processing Dependency: %s for package: %s"
-+
-+#: ../output.py:1623
-+#, python-format
-+msgid "--> Unresolved Dependency: %s"
-+msgstr "--> Unresolved Dependency: %s"
-+
-+#: ../output.py:1634
-+#, python-format
-+msgid "Package: %s"
-+msgstr "Package: %s"
-+
-+#: ../output.py:1636
-+#, python-format
-+msgid ""
-+"\n"
-+" Requires: %s"
-+msgstr ""
-+"\n"
-+" Requires: %s"
-+
-+#: ../output.py:1649 ../output.py:1660
-+#, python-format
-+msgid ""
-+"\n"
-+" %s: %s (%s)"
-+msgstr ""
-+"\n"
-+" %s: %s (%s)"
-+
-+#: ../output.py:1657
-+msgid "Available"
-+msgstr "Available"
-+
-+#: ../output.py:1665 ../output.py:1670
-+#, python-format
-+msgid "--> Processing Conflict: %s conflicts %s"
-+msgstr "--> Processing Conflict: %s conflicts %s"
-+
-+#: ../output.py:1674
-+msgid "--> Populating transaction set with selected packages. Please wait."
-+msgstr "--> Populating transaction set with selected packages. Please wait."
-+
-+#: ../output.py:1678
-+#, python-format
-+msgid "---> Downloading header for %s to pack into transaction set."
-+msgstr "---> Downloading header for %s to pack into transaction set."
-+
-+#: ../utils.py:93
-+msgid "Running"
-+msgstr "Running"
-+
-+#: ../utils.py:94
-+msgid "Sleeping"
-+msgstr "Sleeping"
-+
-+#: ../utils.py:95
-+msgid "Uninterruptible"
-+msgstr "Uninterruptible"
-+
-+#: ../utils.py:96
-+msgid "Zombie"
-+msgstr "Zombie"
-+
-+#: ../utils.py:97
-+msgid "Traced/Stopped"
-+msgstr "Traced/Stopped"
-+
-+#: ../utils.py:98 ../yumcommands.py:917
-+msgid "Unknown"
-+msgstr "Unknown"
-+
-+#: ../utils.py:109
-+msgid " The other application is: PackageKit"
-+msgstr " The other application is: PackageKit"
-+
-+#: ../utils.py:111
-+#, python-format
-+msgid " The other application is: %s"
-+msgstr " The other application is: %s"
-+
-+#: ../utils.py:114
-+#, python-format
-+msgid " Memory : %5s RSS (%5sB VSZ)"
-+msgstr " Memory : %5s RSS (%5sB VSZ)"
-+
-+#: ../utils.py:119
-+#, python-format
-+msgid " Started: %s - %s ago"
-+msgstr " Started: %s - %s ago"
-+
-+#: ../utils.py:121
-+#, python-format
-+msgid " State : %s, pid: %d"
-+msgstr " State : %s, pid: %d"
-+
-+#: ../utils.py:199
-+#, python-format
-+msgid "PluginExit Error: %s"
-+msgstr "PluginExit Error: %s"
-+
-+#: ../utils.py:202
-+#, python-format
-+msgid "Yum Error: %s"
-+msgstr "Yum Error: %s"
-+
-+#: ../utils.py:235 ../yummain.py:42
-+msgid ""
-+"\n"
-+"\n"
-+"Exiting on user cancel"
-+msgstr ""
-+"\n"
-+"\n"
-+"Exiting on user cancel"
-+
-+#: ../utils.py:241 ../yummain.py:48
-+msgid ""
-+"\n"
-+"\n"
-+"Exiting on Broken Pipe"
-+msgstr ""
-+"\n"
-+"\n"
-+"Exiting on Broken Pipe"
-+
-+#: ../utils.py:243 ../yummain.py:50
-+#, python-format
-+msgid ""
-+"\n"
-+"\n"
-+"%s"
-+msgstr ""
-+"\n"
-+"\n"
-+"%s"
-+
-+#: ../utils.py:282 ../yummain.py:211
-+msgid "Complete!"
-+msgstr "Complete!"
-+
-+#: ../yumcommands.py:43
-+msgid "You need to be root to perform this command."
-+msgstr "You need to be root to perform this command."
-+
-+#: ../yumcommands.py:50
-+msgid ""
-+"\n"
-+"You have enabled checking of packages via GPG keys. This is a good thing. \n"
-+"However, you do not have any GPG public keys installed. You need to "
-+"download\n"
-+"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"
-+"\n"
-+"\n"
-+"Alternatively you can specify the url to the key you would like to use\n"
-+"for a repository in the 'gpgkey' option in a repository section and yum \n"
-+"will install it for you.\n"
-+"\n"
-+"For more information contact your distribution or package provider.\n"
-+msgstr ""
-+"\n"
-+"You have enabled checking of packages via GPG keys. This is a good thing. \n"
-+"However, you do not have any GPG public keys installed. You need to download\n"
-+"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"
-+"\n"
-+"\n"
-+"Alternatively you can specify the url to the key you would like to use\n"
-+"for a repository in the 'gpgkey' option in a repository section and yum \n"
-+"will install it for you.\n"
-+"\n"
-+"For more information contact your distribution or package provider.\n"
-+
-+#: ../yumcommands.py:70
-+#, python-format
-+msgid "Error: Need to pass a list of pkgs to %s"
-+msgstr "Error: Need to pass a list of pkgs to %s"
-+
-+#: ../yumcommands.py:76
-+msgid "Error: Need an item to match"
-+msgstr "Error: Need an item to match"
-+
-+#: ../yumcommands.py:82
-+msgid "Error: Need a group or list of groups"
-+msgstr "Error: Need a group or list of groups"
-+
-+#: ../yumcommands.py:91
-+#, python-format
-+msgid "Error: clean requires an option: %s"
-+msgstr "Error: clean requires an option: %s"
-+
-+#: ../yumcommands.py:96
-+#, python-format
-+msgid "Error: invalid clean argument: %r"
-+msgstr "Error: invalid clean argument: %r"
-+
-+#: ../yumcommands.py:109
-+msgid "No argument to shell"
-+msgstr "No argument to shell"
-+
-+#: ../yumcommands.py:111
-+#, python-format
-+msgid "Filename passed to shell: %s"
-+msgstr "Filename passed to shell: %s"
-+
-+#: ../yumcommands.py:115
-+#, python-format
-+msgid "File %s given as argument to shell does not exist."
-+msgstr "File %s given as argument to shell does not exist."
-+
-+#: ../yumcommands.py:121
-+msgid "Error: more than one file given as argument to shell."
-+msgstr "Error: more than one file given as argument to shell."
-+
-+#: ../yumcommands.py:170
-+msgid "PACKAGE..."
-+msgstr "PACKAGE..."
-+
-+#: ../yumcommands.py:173
-+msgid "Install a package or packages on your system"
-+msgstr "Install a package or packages on your system"
-+
-+#: ../yumcommands.py:181
-+msgid "Setting up Install Process"
-+msgstr "Setting up Install Process"
-+
-+#: ../yumcommands.py:192
-+msgid "[PACKAGE...]"
-+msgstr "[PACKAGE...]"
-+
-+#: ../yumcommands.py:195
-+msgid "Update a package or packages on your system"
-+msgstr "Update a package or packages on your system"
-+
-+#: ../yumcommands.py:202
-+msgid "Setting up Update Process"
-+msgstr "Setting up Update Process"
-+
-+#: ../yumcommands.py:244
-+msgid "Display details about a package or group of packages"
-+msgstr "Display details about a package or group of packages"
-+
-+#: ../yumcommands.py:293
-+msgid "Installed Packages"
-+msgstr "Installed Packages"
-+
-+#: ../yumcommands.py:301
-+msgid "Available Packages"
-+msgstr "Available Packages"
-+
-+#: ../yumcommands.py:305
-+msgid "Extra Packages"
-+msgstr "Extra Packages"
-+
-+#: ../yumcommands.py:309
-+msgid "Updated Packages"
-+msgstr "Updated Packages"
-+
-+#. This only happens in verbose mode
-+#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
-+msgid "Obsoleting Packages"
-+msgstr "Obsoleting Packages"
-+
-+#: ../yumcommands.py:326
-+msgid "Recently Added Packages"
-+msgstr "Recently Added Packages"
-+
-+#: ../yumcommands.py:333
-+msgid "No matching Packages to list"
-+msgstr "No matching Packages to list"
-+
-+#: ../yumcommands.py:347
-+msgid "List a package or groups of packages"
-+msgstr "List a package or groups of packages"
-+
-+#: ../yumcommands.py:359
-+msgid "Remove a package or packages from your system"
-+msgstr "Remove a package or packages from your system"
-+
-+#: ../yumcommands.py:366
-+msgid "Setting up Remove Process"
-+msgstr "Setting up Remove Process"
-+
-+#: ../yumcommands.py:380
-+msgid "Setting up Group Process"
-+msgstr "Setting up Group Process"
-+
-+#: ../yumcommands.py:386
-+msgid "No Groups on which to run command"
-+msgstr "No Groups on which to run command"
-+
-+#: ../yumcommands.py:399
-+msgid "List available package groups"
-+msgstr "List available package groups"
-+
-+#: ../yumcommands.py:416
-+msgid "Install the packages in a group on your system"
-+msgstr "Install the packages in a group on your system"
-+
-+#: ../yumcommands.py:438
-+msgid "Remove the packages in a group from your system"
-+msgstr "Remove the packages in a group from your system"
-+
-+#: ../yumcommands.py:465
-+msgid "Display details about a package group"
-+msgstr "Display details about a package group"
-+
-+#: ../yumcommands.py:489
-+msgid "Generate the metadata cache"
-+msgstr "Generate the metadata cache"
-+
-+#: ../yumcommands.py:495
-+msgid "Making cache files for all metadata files."
-+msgstr "Making cache files for all metadata files."
-+
-+#: ../yumcommands.py:496
-+msgid "This may take a while depending on the speed of this computer"
-+msgstr "This may take a while depending on the speed of this computer"
-+
-+#: ../yumcommands.py:517
-+msgid "Metadata Cache Created"
-+msgstr "Metadata Cache Created"
-+
-+#: ../yumcommands.py:531
-+msgid "Remove cached data"
-+msgstr "Remove cached data"
-+
-+#: ../yumcommands.py:551
-+msgid "Find what package provides the given value"
-+msgstr "Find what package provides the given value"
-+
-+#: ../yumcommands.py:571
-+msgid "Check for available package updates"
-+msgstr "Check for available package updates"
-+
-+#: ../yumcommands.py:621
-+msgid "Search package details for the given string"
-+msgstr "Search package details for the given string"
-+
-+#: ../yumcommands.py:627
-+msgid "Searching Packages: "
-+msgstr "Searching Packages: "
-+
-+#: ../yumcommands.py:644
-+msgid "Update packages taking obsoletes into account"
-+msgstr "Update packages taking obsoletes into account"
-+
-+#: ../yumcommands.py:652
-+msgid "Setting up Upgrade Process"
-+msgstr "Setting up Upgrade Process"
-+
-+#: ../yumcommands.py:666
-+msgid "Install a local RPM"
-+msgstr "Install a local RPM"
-+
-+#: ../yumcommands.py:674
-+msgid "Setting up Local Package Process"
-+msgstr "Setting up Local Package Process"
-+
-+#: ../yumcommands.py:693
-+msgid "Determine which package provides the given dependency"
-+msgstr "Determine which package provides the given dependency"
-+
-+#: ../yumcommands.py:696
-+msgid "Searching Packages for Dependency:"
-+msgstr "Searching Packages for Dependency:"
-+
-+#: ../yumcommands.py:710
-+msgid "Run an interactive yum shell"
-+msgstr "Run an interactive yum shell"
-+
-+#: ../yumcommands.py:716
-+msgid "Setting up Yum Shell"
-+msgstr "Setting up Yum Shell"
-+
-+#: ../yumcommands.py:734
-+msgid "List a package's dependencies"
-+msgstr "List a package's dependencies"
-+
-+#: ../yumcommands.py:740
-+msgid "Finding dependencies: "
-+msgstr "Finding dependencies: "
-+
-+#: ../yumcommands.py:756
-+msgid "Display the configured software repositories"
-+msgstr "Display the configured software repositories"
-+
-+#: ../yumcommands.py:822 ../yumcommands.py:823
-+msgid "enabled"
-+msgstr "enabled"
-+
-+#: ../yumcommands.py:849 ../yumcommands.py:850
-+msgid "disabled"
-+msgstr "disabled"
-+
-+#: ../yumcommands.py:866
-+msgid "Repo-id : "
-+msgstr "Repo-id : "
-+
-+#: ../yumcommands.py:867
-+msgid "Repo-name : "
-+msgstr "Repo-name : "
-+
-+#: ../yumcommands.py:870
-+msgid "Repo-status : "
-+msgstr "Repo-status : "
-+
-+#: ../yumcommands.py:873
-+msgid "Repo-revision: "
-+msgstr "Repo-revision: "
-+
-+#: ../yumcommands.py:877
-+msgid "Repo-tags : "
-+msgstr "Repo-tags : "
-+
-+#: ../yumcommands.py:883
-+msgid "Repo-distro-tags: "
-+msgstr "Repo-distro-tags: "
-+
-+#: ../yumcommands.py:888
-+msgid "Repo-updated : "
-+msgstr "Repo-updated : "
-+
-+#: ../yumcommands.py:890
-+msgid "Repo-pkgs : "
-+msgstr "Repo-pkgs : "
-+
-+#: ../yumcommands.py:891
-+msgid "Repo-size : "
-+msgstr "Repo-size : "
-+
-+#: ../yumcommands.py:898
-+msgid "Repo-baseurl : "
-+msgstr "Repo-baseurl : "
-+
-+#: ../yumcommands.py:906
-+msgid "Repo-metalink: "
-+msgstr "Repo-metalink: "
-+
-+#: ../yumcommands.py:910
-+msgid " Updated : "
-+msgstr " Updated : "
-+
-+#: ../yumcommands.py:913
-+msgid "Repo-mirrors : "
-+msgstr "Repo-mirrors : "
-+
-+#: ../yumcommands.py:923
-+#, python-format
-+msgid "Never (last: %s)"
-+msgstr "Never (last: %s)"
-+
-+#: ../yumcommands.py:925
-+#, python-format
-+msgid "Instant (last: %s)"
-+msgstr "Instant (last: %s)"
-+
-+#: ../yumcommands.py:928
-+#, python-format
-+msgid "%s second(s) (last: %s)"
-+msgstr "%s second(s) (last: %s)"
-+
-+#: ../yumcommands.py:930
-+msgid "Repo-expire : "
-+msgstr "Repo-expire : "
-+
-+#: ../yumcommands.py:933
-+msgid "Repo-exclude : "
-+msgstr "Repo-exclude : "
-+
-+#: ../yumcommands.py:937
-+msgid "Repo-include : "
-+msgstr "Repo-include : "
-+
-+#: ../yumcommands.py:941
-+msgid "Repo-excluded: "
-+msgstr "Repo-excluded: "
-+
-+#. Work out the first (id) and last (enabled/disalbed/count),
-+#. then chop the middle (name)...
-+#: ../yumcommands.py:951 ../yumcommands.py:980
-+msgid "repo id"
-+msgstr "repo id"
-+
-+#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
-+msgid "status"
-+msgstr "status"
-+
-+#: ../yumcommands.py:981
-+msgid "repo name"
-+msgstr "repo name"
-+
-+#: ../yumcommands.py:1018
-+msgid "Display a helpful usage message"
-+msgstr "Display a helpful usage message"
-+
-+#: ../yumcommands.py:1052
-+#, python-format
-+msgid "No help available for %s"
-+msgstr "No help available for %s"
-+
-+#: ../yumcommands.py:1057
-+msgid ""
-+"\n"
-+"\n"
-+"aliases: "
-+msgstr ""
-+"\n"
-+"\n"
-+"aliases: "
-+
-+#: ../yumcommands.py:1059
-+msgid ""
-+"\n"
-+"\n"
-+"alias: "
-+msgstr ""
-+"\n"
-+"\n"
-+"alias: "
-+
-+#: ../yumcommands.py:1087
-+msgid "Setting up Reinstall Process"
-+msgstr "Setting up Reinstall Process"
-+
-+#: ../yumcommands.py:1095
-+msgid "reinstall a package"
-+msgstr "reinstall a package"
-+
-+#: ../yumcommands.py:1113
-+msgid "Setting up Downgrade Process"
-+msgstr "Setting up Downgrade Process"
-+
-+#: ../yumcommands.py:1120
-+msgid "downgrade a package"
-+msgstr "downgrade a package"
-+
-+#: ../yumcommands.py:1134
-+msgid "Display a version for the machine and/or available repos."
-+msgstr "Display a version for the machine and/or available repos."
-+
-+#: ../yumcommands.py:1173
-+msgid " Yum version groups:"
-+msgstr " Yum version groups:"
-+
-+#: ../yumcommands.py:1183
-+msgid " Group :"
-+msgstr " Group :"
-+
-+#: ../yumcommands.py:1184
-+msgid " Packages:"
-+msgstr " Packages:"
-+
-+#: ../yumcommands.py:1213
-+msgid "Installed:"
-+msgstr "Installed:"
-+
-+#: ../yumcommands.py:1218
-+msgid "Group-Installed:"
-+msgstr "Group-Installed:"
-+
-+#: ../yumcommands.py:1227
-+msgid "Available:"
-+msgstr "Available:"
-+
-+#: ../yumcommands.py:1233
-+msgid "Group-Available:"
-+msgstr "Group-Available:"
-+
-+#: ../yumcommands.py:1272
-+msgid "Display, or use, the transaction history"
-+msgstr "Display, or use, the transaction history"
-+
-+#: ../yumcommands.py:1300
-+#, python-format
-+msgid "Invalid history sub-command, use: %s."
-+msgstr "Invalid history sub-command, use: %s."
-+
-+#: ../yumcommands.py:1345
-+msgid "Check for problems in the rpmdb"
-+msgstr "Check for problems in the rpmdb"
-+
-+#: ../yummain.py:102
-+msgid ""
-+"Another app is currently holding the yum lock; waiting for it to exit..."
-+msgstr ""
-+"Another app is currently holding the yum lock; waiting for it to exit..."
-+
-+#: ../yummain.py:130 ../yummain.py:169
-+#, python-format
-+msgid "Error: %s"
-+msgstr "Error: %s"
-+
-+#: ../yummain.py:140 ../yummain.py:182
-+#, python-format
-+msgid "Unknown Error(s): Exit Code: %d:"
-+msgstr "Unknown Error(s): Exit Code: %d:"
-+
-+#. Depsolve stage
-+#: ../yummain.py:147
-+msgid "Resolving Dependencies"
-+msgstr "Resolving Dependencies"
-+
-+#: ../yummain.py:173
-+msgid " You could try using --skip-broken to work around the problem"
-+msgstr " You could try using --skip-broken to work around the problem"
-+
-+#: ../yummain.py:175 ../yummain.py:208
-+msgid " You could try running: rpm -Va --nofiles --nodigest"
-+msgstr " You could try running: rpm -Va --nofiles --nodigest"
-+
-+#: ../yummain.py:188
-+msgid ""
-+"\n"
-+"Dependencies Resolved"
-+msgstr ""
-+"\n"
-+"Dependencies Resolved"
-+
-+#: ../yummain.py:265
-+msgid ""
-+"\n"
-+"\n"
-+"Exiting on user cancel."
-+msgstr ""
-+"\n"
-+"\n"
-+"Exiting on user cancel."
-+
-+#: ../yum/depsolve.py:82
-+msgid "doTsSetup() will go away in a future version of Yum.\n"
-+msgstr "doTsSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/depsolve.py:97
-+msgid "Setting up TransactionSets before config class is up"
-+msgstr "Setting up TransactionSets before config class is up"
-+
-+#: ../yum/depsolve.py:148
-+#, python-format
-+msgid "Invalid tsflag in config file: %s"
-+msgstr "Invalid tsflag in config file: %s"
-+
-+#: ../yum/depsolve.py:159
-+#, python-format
-+msgid "Searching pkgSack for dep: %s"
-+msgstr "Searching pkgSack for dep: %s"
-+
-+#: ../yum/depsolve.py:175
-+#, python-format
-+msgid "Potential match for %s from %s"
-+msgstr "Potential match for %s from %s"
-+
-+#: ../yum/depsolve.py:183
-+#, python-format
-+msgid "Matched %s to require for %s"
-+msgstr "Matched %s to require for %s"
-+
-+#: ../yum/depsolve.py:225
-+#, python-format
-+msgid "Member: %s"
-+msgstr "Member: %s"
-+
-+#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
-+#, python-format
-+msgid "%s converted to install"
-+msgstr "%s converted to install"
-+
-+#: ../yum/depsolve.py:246
-+#, python-format
-+msgid "Adding Package %s in mode %s"
-+msgstr "Adding Package %s in mode %s"
-+
-+#: ../yum/depsolve.py:256
-+#, python-format
-+msgid "Removing Package %s"
-+msgstr "Removing Package %s"
-+
-+#: ../yum/depsolve.py:278
-+#, python-format
-+msgid "%s requires: %s"
-+msgstr "%s requires: %s"
-+
-+#: ../yum/depsolve.py:319
-+#, python-format
-+msgid "%s requires %s"
-+msgstr "%s requires %s"
-+
-+#: ../yum/depsolve.py:346
-+msgid "Needed Require has already been looked up, cheating"
-+msgstr "Needed Require has already been looked up, cheating"
-+
-+#: ../yum/depsolve.py:356
-+#, python-format
-+msgid "Needed Require is not a package name. Looking up: %s"
-+msgstr "Needed Require is not a package name. Looking up: %s"
-+
-+#: ../yum/depsolve.py:363
-+#, python-format
-+msgid "Potential Provider: %s"
-+msgstr "Potential Provider: %s"
-+
-+#: ../yum/depsolve.py:386
-+#, python-format
-+msgid "Mode is %s for provider of %s: %s"
-+msgstr "Mode is %s for provider of %s: %s"
-+
-+#: ../yum/depsolve.py:390
-+#, python-format
-+msgid "Mode for pkg providing %s: %s"
-+msgstr "Mode for pkg providing %s: %s"
-+
-+#: ../yum/depsolve.py:394
-+#, python-format
-+msgid "TSINFO: %s package requiring %s marked as erase"
-+msgstr "TSINFO: %s package requiring %s marked as erase"
-+
-+#: ../yum/depsolve.py:407
-+#, python-format
-+msgid "TSINFO: Obsoleting %s with %s to resolve dep."
-+msgstr "TSINFO: Obsoleting %s with %s to resolve dep."
-+
-+#: ../yum/depsolve.py:410
-+#, python-format
-+msgid "TSINFO: Updating %s to resolve dep."
-+msgstr "TSINFO: Updating %s to resolve dep."
-+
-+#: ../yum/depsolve.py:418
-+#, python-format
-+msgid "Cannot find an update path for dep for: %s"
-+msgstr "Cannot find an update path for dep for: %s"
-+
-+#: ../yum/depsolve.py:449
-+#, python-format
-+msgid "Quick matched %s to require for %s"
-+msgstr "Quick matched %s to require for %s"
-+
-+#. is it already installed?
-+#: ../yum/depsolve.py:491
-+#, python-format
-+msgid "%s is in providing packages but it is already installed, removing."
-+msgstr "%s is in providing packages but it is already installed, removing."
-+
-+#: ../yum/depsolve.py:507
-+#, python-format
-+msgid "Potential resolving package %s has newer instance in ts."
-+msgstr "Potential resolving package %s has newer instance in ts."
-+
-+#: ../yum/depsolve.py:518
-+#, python-format
-+msgid "Potential resolving package %s has newer instance installed."
-+msgstr "Potential resolving package %s has newer instance installed."
-+
-+#: ../yum/depsolve.py:536
-+#, python-format
-+msgid "%s already in ts, skipping this one"
-+msgstr "%s already in ts, skipping this one"
-+
-+#: ../yum/depsolve.py:578
-+#, python-format
-+msgid "TSINFO: Marking %s as update for %s"
-+msgstr "TSINFO: Marking %s as update for %s"
-+
-+#: ../yum/depsolve.py:586
-+#, python-format
-+msgid "TSINFO: Marking %s as install for %s"
-+msgstr "TSINFO: Marking %s as install for %s"
-+
-+#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
-+msgid "Success - empty transaction"
-+msgstr "Success - empty transaction"
-+
-+#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
-+msgid "Restarting Loop"
-+msgstr "Restarting Loop"
-+
-+#: ../yum/depsolve.py:760
-+msgid "Dependency Process ending"
-+msgstr "Dependency Process ending"
-+
-+#: ../yum/depsolve.py:774
-+#, python-format
-+msgid "%s from %s has depsolving problems"
-+msgstr "%s from %s has depsolving problems"
-+
-+#: ../yum/depsolve.py:782
-+msgid "Success - deps resolved"
-+msgstr "Success - deps resolved"
-+
-+#: ../yum/depsolve.py:796
-+#, python-format
-+msgid "Checking deps for %s"
-+msgstr "Checking deps for %s"
-+
-+#: ../yum/depsolve.py:874
-+#, python-format
-+msgid "looking for %s as a requirement of %s"
-+msgstr "looking for %s as a requirement of %s"
-+
-+#: ../yum/depsolve.py:1090
-+#, python-format
-+msgid "Running compare_providers() for %s"
-+msgstr "Running compare_providers() for %s"
-+
-+#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
-+#, python-format
-+msgid "better arch in po %s"
-+msgstr "better arch in po %s"
-+
-+#: ../yum/depsolve.py:1218
-+#, python-format
-+msgid "%s obsoletes %s"
-+msgstr "%s obsoletes %s"
-+
-+#: ../yum/depsolve.py:1230
-+#, python-format
-+msgid ""
-+"archdist compared %s to %s on %s\n"
-+" Winner: %s"
-+msgstr ""
-+"archdist compared %s to %s on %s\n"
-+" Winner: %s"
-+
-+#: ../yum/depsolve.py:1237
-+#, python-format
-+msgid "common sourcerpm %s and %s"
-+msgstr "common sourcerpm %s and %s"
-+
-+#: ../yum/depsolve.py:1241
-+#, python-format
-+msgid "base package %s is installed for %s"
-+msgstr "base package %s is installed for %s"
-+
-+#: ../yum/depsolve.py:1247
-+#, python-format
-+msgid "common prefix of %s between %s and %s"
-+msgstr "common prefix of %s between %s and %s"
-+
-+#: ../yum/depsolve.py:1256
-+#, python-format
-+msgid "Best Order: %s"
-+msgstr "Best Order: %s"
-+
-+#: ../yum/__init__.py:192
-+msgid "doConfigSetup() will go away in a future version of Yum.\n"
-+msgstr "doConfigSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/__init__.py:424
-+#, python-format
-+msgid "Repository %r is missing name in configuration, using id"
-+msgstr "Repository %r is missing name in configuration, using id"
-+
-+#: ../yum/__init__.py:462
-+msgid "plugins already initialised"
-+msgstr "plugins already initialised"
-+
-+#: ../yum/__init__.py:469
-+msgid "doRpmDBSetup() will go away in a future version of Yum.\n"
-+msgstr "doRpmDBSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/__init__.py:480
-+msgid "Reading Local RPMDB"
-+msgstr "Reading Local RPMDB"
-+
-+#: ../yum/__init__.py:504
-+msgid "doRepoSetup() will go away in a future version of Yum.\n"
-+msgstr "doRepoSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/__init__.py:524
-+msgid "doSackSetup() will go away in a future version of Yum.\n"
-+msgstr "doSackSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/__init__.py:554
-+msgid "Setting up Package Sacks"
-+msgstr "Setting up Package Sacks"
-+
-+#: ../yum/__init__.py:599
-+#, python-format
-+msgid "repo object for repo %s lacks a _resetSack method\n"
-+msgstr "repo object for repo %s lacks a _resetSack method\n"
-+
-+#: ../yum/__init__.py:600
-+msgid "therefore this repo cannot be reset.\n"
-+msgstr "therefore this repo cannot be reset.\n"
-+
-+#: ../yum/__init__.py:605
-+msgid "doUpdateSetup() will go away in a future version of Yum.\n"
-+msgstr "doUpdateSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/__init__.py:617
-+msgid "Building updates object"
-+msgstr "Building updates object"
-+
-+#: ../yum/__init__.py:652
-+msgid "doGroupSetup() will go away in a future version of Yum.\n"
-+msgstr "doGroupSetup() will go away in a future version of Yum.\n"
-+
-+#: ../yum/__init__.py:677
-+msgid "Getting group metadata"
-+msgstr "Getting group metadata"
-+
-+#: ../yum/__init__.py:703
-+#, python-format
-+msgid "Adding group file from repository: %s"
-+msgstr "Adding group file from repository: %s"
-+
-+#: ../yum/__init__.py:712
-+#, python-format
-+msgid "Failed to add groups file for repository: %s - %s"
-+msgstr "Failed to add groups file for repository: %s - %s"
-+
-+#: ../yum/__init__.py:718
-+msgid "No Groups Available in any repository"
-+msgstr "No Groups Available in any repository"
-+
-+#: ../yum/__init__.py:730
-+msgid "Getting pkgtags metadata"
-+msgstr "Getting pkgtags metadata"
-+
-+#: ../yum/__init__.py:740
-+#, python-format
-+msgid "Adding tags from repository: %s"
-+msgstr "Adding tags from repository: %s"
-+
-+#: ../yum/__init__.py:749
-+#, python-format
-+msgid "Failed to add Pkg Tags for repository: %s - %s"
-+msgstr "Failed to add Pkg Tags for repository: %s - %s"
-+
-+#: ../yum/__init__.py:827
-+msgid "Importing additional filelist information"
-+msgstr "Importing additional filelist information"
-+
-+#: ../yum/__init__.py:841
-+#, python-format
-+msgid "The program %s%s%s is found in the yum-utils package."
-+msgstr "The program %s%s%s is found in the yum-utils package."
-+
-+#: ../yum/__init__.py:849
-+msgid ""
-+"There are unfinished transactions remaining. You might consider running yum-"
-+"complete-transaction first to finish them."
-+msgstr ""
-+"There are unfinished transactions remaining. You might consider running yum-"
-+"complete-transaction first to finish them."
-+
-+#. Kind of hacky
-+#: ../yum/__init__.py:922
-+#, python-format
-+msgid "Skip-broken round %i"
-+msgstr "Skip-broken round %i"
-+
-+#: ../yum/__init__.py:975
-+#, python-format
-+msgid "Skip-broken took %i rounds "
-+msgstr "Skip-broken took %i rounds "
-+
-+#: ../yum/__init__.py:976
-+msgid ""
-+"\n"
-+"Packages skipped because of dependency problems:"
-+msgstr ""
-+"\n"
-+"Packages skipped because of dependency problems:"
-+
-+#: ../yum/__init__.py:980
-+#, python-format
-+msgid " %s from %s"
-+msgstr " %s from %s"
-+
-+#: ../yum/__init__.py:1121
-+msgid "Warning: RPMDB altered outside of yum."
-+msgstr "Warning: RPMDB altered outside of yum."
-+
-+#: ../yum/__init__.py:1126
-+msgid "missing requires"
-+msgstr "missing requires"
-+
-+#: ../yum/__init__.py:1127
-+msgid "installed conflict"
-+msgstr "installed conflict"
-+
-+#: ../yum/__init__.py:1180
-+msgid ""
-+"Warning: scriptlet or other non-fatal errors occurred during transaction."
-+msgstr ""
-+"Warning: scriptlet or other non-fatal errors occurred during transaction."
-+
-+#: ../yum/__init__.py:1198
-+#, python-format
-+msgid "Failed to remove transaction file %s"
-+msgstr "Failed to remove transaction file %s"
-+
-+#. maybe a file log here, too
-+#. but raising an exception is not going to do any good
-+#: ../yum/__init__.py:1227
-+#, python-format
-+msgid "%s was supposed to be installed but is not!"
-+msgstr "%s was supposed to be installed but is not!"
-+
-+#. maybe a file log here, too
-+#. but raising an exception is not going to do any good
-+#: ../yum/__init__.py:1266
-+#, python-format
-+msgid "%s was supposed to be removed but is not!"
-+msgstr "%s was supposed to be removed but is not!"
-+
-+#. Whoa. What the heck happened?
-+#: ../yum/__init__.py:1386
-+#, python-format
-+msgid "Unable to check if PID %s is active"
-+msgstr "Unable to check if PID %s is active"
-+
-+#. Another copy seems to be running.
-+#: ../yum/__init__.py:1390
-+#, python-format
-+msgid "Existing lock %s: another copy is running as pid %s."
-+msgstr "Existing lock %s: another copy is running as pid %s."
-+
-+#. Whoa. What the heck happened?
-+#: ../yum/__init__.py:1425
-+#, python-format
-+msgid "Could not create lock at %s: %s "
-+msgstr "Could not create lock at %s: %s "
-+
-+#: ../yum/__init__.py:1470
-+msgid ""
-+"Package does not match intended download. Suggestion: run yum clean metadata"
-+msgstr ""
-+"Package does not match intended download. Suggestion: run yum clean metadata"
-+
-+#: ../yum/__init__.py:1486
-+msgid "Could not perform checksum"
-+msgstr "Could not perform checksum"
-+
-+#: ../yum/__init__.py:1489
-+msgid "Package does not match checksum"
-+msgstr "Package does not match checksum"
-+
-+#: ../yum/__init__.py:1531
-+#, python-format
-+msgid "package fails checksum but caching is enabled for %s"
-+msgstr "package fails checksum but caching is enabled for %s"
-+
-+#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
-+#, python-format
-+msgid "using local copy of %s"
-+msgstr "using local copy of %s"
-+
-+#: ../yum/__init__.py:1575
-+#, python-format
-+msgid ""
-+"Insufficient space in download directory %s\n"
-+" * free %s\n"
-+" * needed %s"
-+msgstr ""
-+"Insufficient space in download directory %s\n"
-+" * free %s\n"
-+" * needed %s"
-+
-+#: ../yum/__init__.py:1624
-+msgid "Header is not complete."
-+msgstr "Header is not complete."
-+
-+#: ../yum/__init__.py:1661
-+#, python-format
-+msgid ""
-+"Header not in local cache and caching-only mode enabled. Cannot download %s"
-+msgstr ""
-+"Header not in local cache and caching-only mode enabled. Cannot download %s"
-+
-+#: ../yum/__init__.py:1716
-+#, python-format
-+msgid "Public key for %s is not installed"
-+msgstr "Public key for %s is not installed"
-+
-+#: ../yum/__init__.py:1720
-+#, python-format
-+msgid "Problem opening package %s"
-+msgstr "Problem opening package %s"
-+
-+#: ../yum/__init__.py:1728
-+#, python-format
-+msgid "Public key for %s is not trusted"
-+msgstr "Public key for %s is not trusted"
-+
-+#: ../yum/__init__.py:1732
-+#, python-format
-+msgid "Package %s is not signed"
-+msgstr "Package %s is not signed"
-+
-+#: ../yum/__init__.py:1770
-+#, python-format
-+msgid "Cannot remove %s"
-+msgstr "Cannot remove %s"
-+
-+#: ../yum/__init__.py:1774
-+#, python-format
-+msgid "%s removed"
-+msgstr "%s removed"
-+
-+#: ../yum/__init__.py:1820
-+#, python-format
-+msgid "Cannot remove %s file %s"
-+msgstr "Cannot remove %s file %s"
-+
-+#: ../yum/__init__.py:1824
-+#, python-format
-+msgid "%s file %s removed"
-+msgstr "%s file %s removed"
-+
-+#: ../yum/__init__.py:1826
-+#, python-format
-+msgid "%d %s files removed"
-+msgstr "%d %s files removed"
-+
-+#: ../yum/__init__.py:1895
-+#, python-format
-+msgid "More than one identical match in sack for %s"
-+msgstr "More than one identical match in sack for %s"
-+
-+#: ../yum/__init__.py:1901
-+#, python-format
-+msgid "Nothing matches %s.%s %s:%s-%s from update"
-+msgstr "Nothing matches %s.%s %s:%s-%s from update"
-+
-+#: ../yum/__init__.py:2180
-+msgid ""
-+"searchPackages() will go away in a future version of "
-+"Yum. Use searchGenerator() instead. \n"
-+msgstr "searchPackages() will go away in a future version of Yum. "
-+" Use searchGenerator() instead. \n"
-+
-+#: ../yum/__init__.py:2219
-+#, python-format
-+msgid "Searching %d packages"
-+msgstr "Searching %d packages"
-+
-+#: ../yum/__init__.py:2223
-+#, python-format
-+msgid "searching package %s"
-+msgstr "searching package %s"
-+
-+#: ../yum/__init__.py:2235
-+msgid "searching in file entries"
-+msgstr "searching in file entries"
-+
-+#: ../yum/__init__.py:2242
-+msgid "searching in provides entries"
-+msgstr "searching in provides entries"
-+
-+#: ../yum/__init__.py:2275
-+#, python-format
-+msgid "Provides-match: %s"
-+msgstr "Provides-match: %s"
-+
-+#: ../yum/__init__.py:2324
-+msgid "No group data available for configured repositories"
-+msgstr "No group data available for configured repositories"
-+
-+#: ../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
-+#, python-format
-+msgid "No Group named %s exists"
-+msgstr "No Group named %s exists"
-+
-+#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
-+#, python-format
-+msgid "package %s was not marked in group %s"
-+msgstr "package %s was not marked in group %s"
-+
-+#: ../yum/__init__.py:2433
-+#, python-format
-+msgid "Adding package %s from group %s"
-+msgstr "Adding package %s from group %s"
-+
-+#: ../yum/__init__.py:2437
-+#, python-format
-+msgid "No package named %s available to be installed"
-+msgstr "No package named %s available to be installed"
-+
-+#: ../yum/__init__.py:2539
-+#, python-format
-+msgid "Package tuple %s could not be found in packagesack"
-+msgstr "Package tuple %s could not be found in packagesack"
-+
-+#: ../yum/__init__.py:2558
-+#, python-format
-+msgid "Package tuple %s could not be found in rpmdb"
-+msgstr "Package tuple %s could not be found in rpmdb"
-+
-+#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
-+msgid "Invalid version flag"
-+msgstr "Invalid version flag"
-+
-+#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
-+#, python-format
-+msgid "No Package found for %s"
-+msgstr "No Package found for %s"
-+
-+#: ../yum/__init__.py:2855
-+msgid "Package Object was not a package object instance"
-+msgstr "Package Object was not a package object instance"
-+
-+#: ../yum/__init__.py:2859
-+msgid "Nothing specified to install"
-+msgstr "Nothing specified to install"
-+
-+#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
-+#, python-format
-+msgid "Checking for virtual provide or file-provide for %s"
-+msgstr "Checking for virtual provide or file-provide for %s"
-+
-+#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:3658
-+#, python-format
-+msgid "No Match for argument: %s"
-+msgstr "No Match for argument: %s"
-+
-+#: ../yum/__init__.py:2957
-+#, python-format
-+msgid "Package %s installed and not available"
-+msgstr "Package %s installed and not available"
-+
-+#: ../yum/__init__.py:2960
-+msgid "No package(s) available to install"
-+msgstr "No package(s) available to install"
-+
-+#: ../yum/__init__.py:2972
-+#, python-format
-+msgid "Package: %s - already in transaction set"
-+msgstr "Package: %s - already in transaction set"
-+
-+#: ../yum/__init__.py:2998
-+#, python-format
-+msgid "Package %s is obsoleted by %s which is already installed"
-+msgstr "Package %s is obsoleted by %s which is already installed"
-+
-+#: ../yum/__init__.py:3001
-+#, python-format
-+msgid "Package %s is obsoleted by %s, trying to install %s instead"
-+msgstr "Package %s is obsoleted by %s, trying to install %s instead"
-+
-+#: ../yum/__init__.py:3009
-+#, python-format
-+msgid "Package %s already installed and latest version"
-+msgstr "Package %s already installed and latest version"
-+
-+#: ../yum/__init__.py:3023
-+#, python-format
-+msgid "Package matching %s already installed. Checking for update."
-+msgstr "Package matching %s already installed. Checking for update."
-+
-+#. update everything (the easy case)
-+#: ../yum/__init__.py:3126
-+msgid "Updating Everything"
-+msgstr "Updating Everything"
-+
-+#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3315
-+#, python-format
-+msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
-+msgstr "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
-+
-+#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
-+#, python-format
-+msgid "%s"
-+msgstr "%s"
-+
-+#: ../yum/__init__.py:3253
-+#, python-format
-+msgid "Package is already obsoleted: %s.%s %s:%s-%s"
-+msgstr "Package is already obsoleted: %s.%s %s:%s-%s"
-+
-+#: ../yum/__init__.py:3284
-+#, python-format
-+msgid "Not Updating Package that is obsoleted: %s"
-+msgstr "Not Updating Package that is obsoleted: %s"
-+
-+#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
-+#, python-format
-+msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
-+msgstr "Not Updating Package that is already updated: %s.%s %s:%s-%s"
-+
-+#: ../yum/__init__.py:3378
-+msgid "No package matched to remove"
-+msgstr "No package matched to remove"
-+
-+#: ../yum/__init__.py:3412
-+#, python-format
-+msgid "Cannot open: %s. Skipping."
-+msgstr "Cannot open: %s. Skipping."
-+
-+#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
-+#, python-format
-+msgid "Examining %s: %s"
-+msgstr "Examining %s: %s"
-+
-+#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
-+#, python-format
-+msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
-+msgstr "Cannot add package %s to transaction. Not a compatible architecture: %s"
-+
-+#: ../yum/__init__.py:3431
-+#, python-format
-+msgid ""
-+"Package %s not installed, cannot update it. Run yum install to install it "
-+"instead."
-+msgstr ""
-+"Package %s not installed, cannot update it. Run yum install to install it "
-+"instead."
-+
-+#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
-+#, python-format
-+msgid "Excluding %s"
-+msgstr "Excluding %s"
-+
-+#: ../yum/__init__.py:3465
-+#, python-format
-+msgid "Marking %s to be installed"
-+msgstr "Marking %s to be installed"
-+
-+#: ../yum/__init__.py:3471
-+#, python-format
-+msgid "Marking %s as an update to %s"
-+msgstr "Marking %s as an update to %s"
-+
-+#: ../yum/__init__.py:3478
-+#, python-format
-+msgid "%s: does not update installed package."
-+msgstr "%s: does not update installed package."
-+
-+#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
-+#, python-format
-+msgid "Cannot open file: %s. Skipping."
-+msgstr "Cannot open file: %s. Skipping."
-+
-+#: ../yum/__init__.py:3541
-+msgid "Problem in reinstall: no package matched to remove"
-+msgstr "Problem in reinstall: no package matched to remove"
-+
-+#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
-+#, python-format
-+msgid "Package %s is allowed multiple installs, skipping"
-+msgstr "Package %s is allowed multiple installs, skipping"
-+
-+#: ../yum/__init__.py:3575
-+#, python-format
-+msgid "Problem in reinstall: no package %s matched to install"
-+msgstr "Problem in reinstall: no package %s matched to install"
-+
-+#: ../yum/__init__.py:3678
-+msgid "No package(s) available to downgrade"
-+msgstr "No package(s) available to downgrade"
-+
-+#: ../yum/__init__.py:3731
-+#, python-format
-+msgid "No Match for available package: %s"
-+msgstr "No Match for available package: %s"
-+
-+#: ../yum/__init__.py:3738
-+#, python-format
-+msgid "Only Upgrade available on package: %s"
-+msgstr "Only Upgrade available on package: %s"
-+
-+#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
-+#, python-format
-+msgid "Failed to downgrade: %s"
-+msgstr "Failed to downgrade: %s"
-+
-+#: ../yum/__init__.py:3877
-+#, python-format
-+msgid "Retrieving GPG key from %s"
-+msgstr "Retrieving GPG key from %s"
-+
-+#: ../yum/__init__.py:3897
-+msgid "GPG key retrieval failed: "
-+msgstr "GPG key retrieval failed: "
-+
-+#: ../yum/__init__.py:3903
-+#, python-format
-+msgid "Invalid GPG Key from %s: %s"
-+msgstr "Invalid GPG Key from %s: %s"
-+
-+#: ../yum/__init__.py:3912
-+#, python-format
-+msgid "GPG key parsing failed: key does not have value %s"
-+msgstr "GPG key parsing failed: key does not have value %s"
-+
-+#: ../yum/__init__.py:3944
-+#, python-format
-+msgid "GPG key at %s (0x%s) is already installed"
-+msgstr "GPG key at %s (0x%s) is already installed"
-+
-+#. Try installing/updating GPG key
-+#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
-+#, python-format
-+msgid "Importing GPG key 0x%s \"%s\" from %s"
-+msgstr "Importing GPG key 0x%s \"%s\" from %s"
-+
-+#: ../yum/__init__.py:3966
-+msgid "Not installing key"
-+msgstr "Not installing key"
-+
-+#: ../yum/__init__.py:3972
-+#, python-format
-+msgid "Key import failed (code %d)"
-+msgstr "Key import failed (code %d)"
-+
-+#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
-+msgid "Key imported successfully"
-+msgstr "Key imported successfully"
-+
-+#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
-+#, python-format
-+msgid ""
-+"The GPG keys listed for the \"%s\" repository are already installed but they "
-+"are not correct for this package.\n"
-+"Check that the correct key URLs are configured for this repository."
-+msgstr ""
-+"The GPG keys listed for the \"%s\" repository are already installed but they "
-+"are not correct for this package.\n"
-+"Check that the correct key URLs are configured for this repository."
-+
-+#: ../yum/__init__.py:3987
-+msgid "Import of key(s) didn't help, wrong key(s)?"
-+msgstr "Import of key(s) didn't help, wrong key(s)?"
-+
-+#: ../yum/__init__.py:4006
-+#, python-format
-+msgid "GPG key at %s (0x%s) is already imported"
-+msgstr "GPG key at %s (0x%s) is already imported"
-+
-+#: ../yum/__init__.py:4026
-+#, python-format
-+msgid "Not installing key for repo %s"
-+msgstr "Not installing key for repo %s"
-+
-+#: ../yum/__init__.py:4031
-+msgid "Key import failed"
-+msgstr "Key import failed"
-+
-+#: ../yum/__init__.py:4157
-+msgid "Unable to find a suitable mirror."
-+msgstr "Unable to find a suitable mirror."
-+
-+#: ../yum/__init__.py:4159
-+msgid "Errors were encountered while downloading packages."
-+msgstr "Errors were encountered while downloading packages."
-+
-+#: ../yum/__init__.py:4209
-+#, python-format
-+msgid "Please report this error at %s"
-+msgstr "Please report this error at %s"
-+
-+#: ../yum/__init__.py:4233
-+msgid "Test Transaction Errors: "
-+msgstr "Test Transaction Errors: "
-+
-+#: ../yum/__init__.py:4334
-+#, python-format
-+msgid "Could not set cachedir: %s"
-+msgstr "Could not set cachedir: %s"
-+
-+#. Mostly copied from YumOutput._outKeyValFill()
-+#: ../yum/plugins.py:202
-+msgid "Loaded plugins: "
-+msgstr "Loaded plugins: "
-+
-+#: ../yum/plugins.py:216 ../yum/plugins.py:222
-+#, python-format
-+msgid "No plugin match for: %s"
-+msgstr "No plugin match for: %s"
-+
-+#: ../yum/plugins.py:252
-+#, python-format
-+msgid "Not loading \"%s\" plugin, as it is disabled"
-+msgstr "Not loading \"%s\" plugin, as it is disabled"
-+
-+#. Give full backtrace:
-+#: ../yum/plugins.py:264
-+#, python-format
-+msgid "Plugin \"%s\" can't be imported"
-+msgstr "Plugin \"%s\" can't be imported"
-+
-+#: ../yum/plugins.py:271
-+#, python-format
-+msgid "Plugin \"%s\" doesn't specify required API version"
-+msgstr "Plugin \"%s\" doesn't specify required API version"
-+
-+#: ../yum/plugins.py:276
-+#, python-format
-+msgid "Plugin \"%s\" requires API %s. Supported API is %s."
-+msgstr "Plugin \"%s\" requires API %s. Supported API is %s."
-+
-+#: ../yum/plugins.py:309
-+#, python-format
-+msgid "Loading \"%s\" plugin"
-+msgstr "Loading \"%s\" plugin"
-+
-+#: ../yum/plugins.py:316
-+#, python-format
-+msgid ""
-+"Two or more plugins with the name \"%s\" exist in the plugin search path"
-+msgstr "Two or more plugins with the name \"%s\" exist in the plugin search path"
-+
-+#: ../yum/plugins.py:336
-+#, python-format
-+msgid "Configuration file %s not found"
-+msgstr "Configuration file %s not found"
-+
-+#. for
-+#. Configuration files for the plugin not found
-+#: ../yum/plugins.py:339
-+#, python-format
-+msgid "Unable to find configuration file for plugin %s"
-+msgstr "Unable to find configuration file for plugin %s"
-+
-+#: ../yum/plugins.py:501
-+msgid "registration of commands not supported"
-+msgstr "registration of commands not supported"
-+
-+#: ../yum/rpmsack.py:102
-+msgid "has missing requires of"
-+msgstr "has missing requires of"
-+
-+#: ../yum/rpmsack.py:105
-+msgid "has installed conflicts"
-+msgstr "has installed conflicts"
-+
-+#: ../yum/rpmsack.py:114
-+#, python-format
-+msgid "%s is a duplicate with %s"
-+msgstr "%s is a duplicate with %s"
-+
-+#: ../yum/rpmtrans.py:79
-+msgid "Repackaging"
-+msgstr "Repackaging"
-+
-+#: ../rpmUtils/oldUtils.py:33
-+#, python-format
-+msgid "Header cannot be opened or does not match %s, %s."
-+msgstr "Header cannot be opened or does not match %s, %s."
-+
-+#: ../rpmUtils/oldUtils.py:53
-+#, python-format
-+msgid "RPM %s fails md5 check"
-+msgstr "RPM %s fails md5 check"
-+
-+#: ../rpmUtils/oldUtils.py:151
-+msgid "Could not open RPM database for reading. Perhaps it is already in use?"
-+msgstr "Could not open RPM database for reading. Perhaps it is already in use?"
-+
-+#: ../rpmUtils/oldUtils.py:183
-+msgid "Got an empty Header, something has gone wrong"
-+msgstr "Got an empty Header, something has gone wrong"
-+
-+#: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260
-+#: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266
-+#, python-format
-+msgid "Damaged Header %s"
-+msgstr "Damaged Header %s"
-+
-+#: ../rpmUtils/oldUtils.py:281
-+#, python-format
-+msgid "Error opening rpm %s - error %s"
-+msgstr "Error opening rpm %s - error %s"
-diff --git a/po/fi.po b/po/fi.po
-index 4347eba..71c926d 100644
---- a/po/fi.po
-+++ b/po/fi.po
-@@ -6,8 +6,8 @@ msgid ""
- msgstr ""
- "Project-Id-Version: yum\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2010-02-10 10:43-0500\n"
--"PO-Revision-Date: 2010-02-11 21:50+0200\n"
-+"POT-Creation-Date: 2010-02-11 10:54-0500\n"
-+"PO-Revision-Date: 2010-05-27 21:23+0300\n"
- "Last-Translator: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>\n"
- "Language-Team: Finnish <laatu at lokalisointi.org>\n"
- "MIME-Version: 1.0\n"
-@@ -156,15 +156,15 @@ msgstr "Ladataan paketteja:"
- msgid "Error Downloading Packages:\n"
- msgstr "Virhe pakettien latauksessa:\n"
-
--#: ../cli.py:426 ../yum/__init__.py:4194
-+#: ../cli.py:426 ../yum/__init__.py:4195
- msgid "Running rpm_check_debug"
- msgstr "Suoritetaan rpm_check_debug"
-
--#: ../cli.py:435 ../yum/__init__.py:4203
-+#: ../cli.py:435 ../yum/__init__.py:4204
- msgid "ERROR You need to update rpm to handle:"
- msgstr "VIRHE RPM on päivitettävä, jotta se osaa käsitellä:"
-
--#: ../cli.py:437 ../yum/__init__.py:4206
-+#: ../cli.py:437 ../yum/__init__.py:4207
- msgid "ERROR with rpm_check_debug vs depsolve:"
- msgstr "VIRHE rpm_check_debugin ja riippuvuuksien tarkistuksen välillä:"
-
-@@ -250,7 +250,7 @@ msgstr "Vanhennettavat paketit"
- #: ../cli.py:717
- #, python-format
- msgid " (from %s)"
--msgstr " (versiosta %s)"
-+msgstr " (asennuslähteestä %s)"
-
- #: ../cli.py:719
- #, python-format
-@@ -339,7 +339,7 @@ msgstr "Saatavilla olevat ryhmät:"
- msgid "Done"
- msgstr "Valmis"
-
--#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2787
-+#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
- #, python-format
- msgid "Warning: Group %s does not exist."
- msgstr "Varoitus: Ryhmää %s ei ole olemassa."
-@@ -355,7 +355,7 @@ msgstr ""
- msgid "%d Package(s) to Install"
- msgstr "%d pakettia asennettavana"
-
--#: ../cli.py:1028 ../yum/__init__.py:2799
-+#: ../cli.py:1028 ../yum/__init__.py:2800
- #, python-format
- msgid "No group named %s exists"
- msgstr "Ryhmää nimeltä %s ei ole olemassa"
-@@ -767,7 +767,7 @@ msgstr "Koko yhteensä: %s"
- #: ../output.py:904
- #, python-format
- msgid "Total download size: %s"
--msgstr "Latausmäärä yhteensä: %s"
-+msgstr "Ladattavaa yhteensä: %s"
-
- #: ../output.py:908
- #, python-format
-@@ -2187,29 +2187,32 @@ msgid "Could not create lock at %s: %s "
- msgstr "Ei voitu luoda lukkoa sijaintiin %s: %s"
-
- #: ../yum/__init__.py:1470
--msgid "Package does not match intended download"
--msgstr "Paketti ei vastaa aiottua latausta"
-+msgid ""
-+"Package does not match intended download. Suggestion: run yum clean metadata"
-+msgstr ""
-+"Paketti ei vastaa aiottua latausta. Kannattaa ehkä suorittaa komento yum "
-+"clean metadata"
-
--#: ../yum/__init__.py:1485
-+#: ../yum/__init__.py:1486
- msgid "Could not perform checksum"
- msgstr "Ei voitu laskea tarkistussummaa"
-
--#: ../yum/__init__.py:1488
-+#: ../yum/__init__.py:1489
- msgid "Package does not match checksum"
- msgstr "Paketti ei vastaa tarkistussummaa"
-
--#: ../yum/__init__.py:1530
-+#: ../yum/__init__.py:1531
- #, python-format
- msgid "package fails checksum but caching is enabled for %s"
- msgstr ""
- "paketti ei vastaa tarkistussummaa, mutta välimuisti on käytössä kohteelle %s"
-
--#: ../yum/__init__.py:1533 ../yum/__init__.py:1562
-+#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
- #, python-format
- msgid "using local copy of %s"
- msgstr "käytetään paikallista kopiota paketista %s"
-
--#: ../yum/__init__.py:1574
-+#: ../yum/__init__.py:1575
- #, python-format
- msgid ""
- "Insufficient space in download directory %s\n"
-@@ -2220,11 +2223,11 @@ msgstr ""
- " * vapaana %s\n"
- " * tarvitaan %s"
-
--#: ../yum/__init__.py:1623
-+#: ../yum/__init__.py:1624
- msgid "Header is not complete."
- msgstr "Otsake ei ole täydellinen."
-
--#: ../yum/__init__.py:1660
-+#: ../yum/__init__.py:1661
- #, python-format
- msgid ""
- "Header not in local cache and caching-only mode enabled. Cannot download %s"
-@@ -2232,62 +2235,62 @@ msgstr ""
- "Otsake ei ole paikallisessa välimuistissa ja pelkästä välimuistista toimiva "
- "tila on käytössä. Ei voida ladata otsaketta %s"
-
--#: ../yum/__init__.py:1715
-+#: ../yum/__init__.py:1716
- #, python-format
- msgid "Public key for %s is not installed"
- msgstr "Julkista avainta pakettia %s varten ei ole asennettu"
-
--#: ../yum/__init__.py:1719
-+#: ../yum/__init__.py:1720
- #, python-format
- msgid "Problem opening package %s"
- msgstr "Ongelma paketin %s avaamisessa"
-
--#: ../yum/__init__.py:1727
-+#: ../yum/__init__.py:1728
- #, python-format
- msgid "Public key for %s is not trusted"
- msgstr "Paketin %s julkiseen avaimeen ei luoteta"
-
--#: ../yum/__init__.py:1731
-+#: ../yum/__init__.py:1732
- #, python-format
- msgid "Package %s is not signed"
- msgstr "Pakettia %s ei ole allekirjoitettu"
-
--#: ../yum/__init__.py:1769
-+#: ../yum/__init__.py:1770
- #, python-format
- msgid "Cannot remove %s"
- msgstr "Ei voida poistaa tiedostoa %s"
-
--#: ../yum/__init__.py:1773
-+#: ../yum/__init__.py:1774
- #, python-format
- msgid "%s removed"
- msgstr "tiedosto %s on poistettu"
-
--#: ../yum/__init__.py:1819
-+#: ../yum/__init__.py:1820
- #, python-format
- msgid "Cannot remove %s file %s"
- msgstr "Ei voida poistaa %s-tyyppistä tiedostoa %s"
-
--#: ../yum/__init__.py:1823
-+#: ../yum/__init__.py:1824
- #, python-format
- msgid "%s file %s removed"
- msgstr "%s-tyyppinen tiedosto %s on poistettu"
-
--#: ../yum/__init__.py:1825
-+#: ../yum/__init__.py:1826
- #, python-format
- msgid "%d %s files removed"
- msgstr "%d %s-tyyppistä tiedostoa on poistettu"
-
--#: ../yum/__init__.py:1894
-+#: ../yum/__init__.py:1895
- #, python-format
- msgid "More than one identical match in sack for %s"
- msgstr "Säkissä on useampi kuin yksi identtinen vastaavuus haulle %s"
-
--#: ../yum/__init__.py:1900
-+#: ../yum/__init__.py:1901
- #, python-format
- msgid "Nothing matches %s.%s %s:%s-%s from update"
- msgstr "Mikään ei vastaa päivityksen pakettia %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:2179
-+#: ../yum/__init__.py:2180
- msgid ""
- "searchPackages() will go away in a future version of "
- "Yum. Use searchGenerator() instead. \n"
-@@ -2295,181 +2298,181 @@ msgstr ""
- "searchPackages() poistetaan jossakin Yumin tulevassa versiossa. Käytä sen "
- "sijaan searchGenerator()-metodia.\n"
-
--#: ../yum/__init__.py:2218
-+#: ../yum/__init__.py:2219
- #, python-format
- msgid "Searching %d packages"
- msgstr "Etsitään %d pakettia"
-
--#: ../yum/__init__.py:2222
-+#: ../yum/__init__.py:2223
- #, python-format
- msgid "searching package %s"
- msgstr "etsitään pakettia %s"
-
--#: ../yum/__init__.py:2234
-+#: ../yum/__init__.py:2235
- msgid "searching in file entries"
- msgstr "etsitään tiedostoista"
-
--#: ../yum/__init__.py:2241
-+#: ../yum/__init__.py:2242
- msgid "searching in provides entries"
- msgstr "etsitään tarjoajista"
-
--#: ../yum/__init__.py:2274
-+#: ../yum/__init__.py:2275
- #, python-format
- msgid "Provides-match: %s"
- msgstr "Tarjoajavastaavuus: %s"
-
--#: ../yum/__init__.py:2323
-+#: ../yum/__init__.py:2324
- msgid "No group data available for configured repositories"
- msgstr "Asetetuille asennuslähteille ei ole saatavilla ryhmädataa"
-
--#: ../yum/__init__.py:2354 ../yum/__init__.py:2373 ../yum/__init__.py:2404
--#: ../yum/__init__.py:2410 ../yum/__init__.py:2492 ../yum/__init__.py:2496
--#: ../yum/__init__.py:2813
-+#: ../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
- #, python-format
- msgid "No Group named %s exists"
- msgstr "Ryhmää nimeltä %s ei ole olemassa"
-
--#: ../yum/__init__.py:2385 ../yum/__init__.py:2512
-+#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
- #, python-format
- msgid "package %s was not marked in group %s"
- msgstr "pakettia %s ei ollut merkitty kuuluvaksi ryhmään %s"
-
--#: ../yum/__init__.py:2432
-+#: ../yum/__init__.py:2433
- #, python-format
- msgid "Adding package %s from group %s"
- msgstr "Lisätään paketti %s ryhmästä %s"
-
--#: ../yum/__init__.py:2436
-+#: ../yum/__init__.py:2437
- #, python-format
- msgid "No package named %s available to be installed"
- msgstr "Pakettia nimeltä %s ei ole saatavilla asennusta varten"
-
--#: ../yum/__init__.py:2538
-+#: ../yum/__init__.py:2539
- #, python-format
- msgid "Package tuple %s could not be found in packagesack"
- msgstr "Paketti-tuplea %s ei löytynyt pakettisäkistä"
-
--#: ../yum/__init__.py:2557
-+#: ../yum/__init__.py:2558
- #, python-format
- msgid "Package tuple %s could not be found in rpmdb"
- msgstr "Paketti-tuplea %s ei löytynyt RPM-tietokannasta"
-
--#: ../yum/__init__.py:2613 ../yum/__init__.py:2663
-+#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
- msgid "Invalid version flag"
- msgstr "Virheellinen versiolippu"
-
--#: ../yum/__init__.py:2633 ../yum/__init__.py:2638
-+#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
- #, python-format
- msgid "No Package found for %s"
- msgstr "Riippuvuudelle %s ei löytynyt pakettia"
-
--#: ../yum/__init__.py:2854
-+#: ../yum/__init__.py:2855
- msgid "Package Object was not a package object instance"
- msgstr "Pakettiolio ei ollutkaan pakettiolioinstanssi"
-
--#: ../yum/__init__.py:2858
-+#: ../yum/__init__.py:2859
- msgid "Nothing specified to install"
- msgstr "Mitään ei määritelty asennettavaksi"
-
--#: ../yum/__init__.py:2874 ../yum/__init__.py:3651
-+#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
- #, python-format
- msgid "Checking for virtual provide or file-provide for %s"
- msgstr "Etsitään virtuaalista tai tiedostotarjoajaa argumentille %s"
-
--#: ../yum/__init__.py:2880 ../yum/__init__.py:3196 ../yum/__init__.py:3364
--#: ../yum/__init__.py:3657
-+#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:3658
- #, python-format
- msgid "No Match for argument: %s"
- msgstr "Mikään ei vastaa argumenttia: %s"
-
--#: ../yum/__init__.py:2956
-+#: ../yum/__init__.py:2957
- #, python-format
- msgid "Package %s installed and not available"
- msgstr "Paketti %s on asennettu, mutta ei saatavilla"
-
--#: ../yum/__init__.py:2959
-+#: ../yum/__init__.py:2960
- msgid "No package(s) available to install"
- msgstr "Yhtään pakettia ei ole saatavilla asennettavaksi"
-
--#: ../yum/__init__.py:2971
-+#: ../yum/__init__.py:2972
- #, python-format
- msgid "Package: %s - already in transaction set"
- msgstr "Paketti: %s – on jo transaktiojoukossa"
-
--#: ../yum/__init__.py:2997
-+#: ../yum/__init__.py:2998
- #, python-format
- msgid "Package %s is obsoleted by %s which is already installed"
- msgstr "Paketin %s vanhentaa paketti %s, joka on jo asennettuna"
-
--#: ../yum/__init__.py:3000
-+#: ../yum/__init__.py:3001
- #, python-format
- msgid "Package %s is obsoleted by %s, trying to install %s instead"
- msgstr "Paketin %s vanhentaa paketti %s, yritetään paketti %s sen sijaan"
-
--#: ../yum/__init__.py:3008
-+#: ../yum/__init__.py:3009
- #, python-format
- msgid "Package %s already installed and latest version"
- msgstr "Paketti %s on jo asennettuna ja uusin versio"
-
--#: ../yum/__init__.py:3022
-+#: ../yum/__init__.py:3023
- #, python-format
- msgid "Package matching %s already installed. Checking for update."
- msgstr ""
- "Pakettia %s vastaava paketti on jo asennettuna. Tarkistetaan päivitykset."
-
- #. update everything (the easy case)
--#: ../yum/__init__.py:3125
-+#: ../yum/__init__.py:3126
- msgid "Updating Everything"
- msgstr "Päivitetään kaikki"
-
--#: ../yum/__init__.py:3146 ../yum/__init__.py:3261 ../yum/__init__.py:3288
--#: ../yum/__init__.py:3314
-+#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3315
- #, python-format
- msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
- msgstr "Vanhennettua pakettia ei päivitetä: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3181 ../yum/__init__.py:3361
-+#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
- #, python-format
- msgid "%s"
- msgstr "%s"
-
--#: ../yum/__init__.py:3252
-+#: ../yum/__init__.py:3253
- #, python-format
- msgid "Package is already obsoleted: %s.%s %s:%s-%s"
- msgstr "Paketti on jo vanhennettu: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3283
-+#: ../yum/__init__.py:3284
- #, python-format
- msgid "Not Updating Package that is obsoleted: %s"
- msgstr "Ei päivitetä vanhennettua pakettia: %s"
-
--#: ../yum/__init__.py:3292 ../yum/__init__.py:3318
-+#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
- #, python-format
- msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
- msgstr "Jo päivitettyä pakettia ei enää päivitetä: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3377
-+#: ../yum/__init__.py:3378
- msgid "No package matched to remove"
- msgstr "Yhtään poistopyyntöä vastaavaa pakettia ei ole"
-
--#: ../yum/__init__.py:3411
-+#: ../yum/__init__.py:3412
- #, python-format
- msgid "Cannot open: %s. Skipping."
- msgstr "Ei voida avata pakettia: %s. Ohitetaan."
-
--#: ../yum/__init__.py:3414 ../yum/__init__.py:3513 ../yum/__init__.py:3597
-+#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
- #, python-format
- msgid "Examining %s: %s"
- msgstr "Tutkitaan %s: %s"
-
--#: ../yum/__init__.py:3422 ../yum/__init__.py:3516 ../yum/__init__.py:3600
-+#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
- #, python-format
- msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
- msgstr ""
- "Pakettia %s ei voida lisätä transaktioon. Arkkitehtuuri ei ole yhteensopiva: "
- "%s"
-
--#: ../yum/__init__.py:3430
-+#: ../yum/__init__.py:3431
- #, python-format
- msgid ""
- "Package %s not installed, cannot update it. Run yum install to install it "
-@@ -2478,109 +2481,109 @@ msgstr ""
- "Pakettia %s ei ole asennettu, sitä ei voida päivittää. Suorita yum install -"
- "komento paketin asentamiseksi."
-
--#: ../yum/__init__.py:3459 ../yum/__init__.py:3521 ../yum/__init__.py:3605
-+#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
- #, python-format
- msgid "Excluding %s"
- msgstr "Ohitetaan paketti %s"
-
--#: ../yum/__init__.py:3464
-+#: ../yum/__init__.py:3465
- #, python-format
- msgid "Marking %s to be installed"
- msgstr "Merkitään paketti %s asennettavaksi"
-
--#: ../yum/__init__.py:3470
-+#: ../yum/__init__.py:3471
- #, python-format
- msgid "Marking %s as an update to %s"
- msgstr "Merkitään paketti %s päivitykseksi paketille %s"
-
--#: ../yum/__init__.py:3477
-+#: ../yum/__init__.py:3478
- #, python-format
- msgid "%s: does not update installed package."
- msgstr "%s: ei päivitä asennettua pakettia"
-
--#: ../yum/__init__.py:3510 ../yum/__init__.py:3594
-+#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
- #, python-format
- msgid "Cannot open file: %s. Skipping."
- msgstr "Ei voida avata tiedostoa: %s. Ohitetaan."
-
--#: ../yum/__init__.py:3540
-+#: ../yum/__init__.py:3541
- msgid "Problem in reinstall: no package matched to remove"
- msgstr "Ongelma uudelleenasennuksessa: poistopyyntöä vastaavaa pakettia ei ole"
-
--#: ../yum/__init__.py:3553 ../yum/__init__.py:3685
-+#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
- #, python-format
- msgid "Package %s is allowed multiple installs, skipping"
- msgstr "Paketille %s sallitaan useita asennuksia, ohitetaan."
-
--#: ../yum/__init__.py:3574
-+#: ../yum/__init__.py:3575
- #, python-format
- msgid "Problem in reinstall: no package %s matched to install"
- msgstr ""
- "Ongelma uudelleenasennuksessa: asennuspyyntöä vastaavaa pakettia %s ei ole"
-
--#: ../yum/__init__.py:3677
-+#: ../yum/__init__.py:3678
- msgid "No package(s) available to downgrade"
- msgstr "Yhtään pakettia ei ole saatavilla varhennettavaksi"
-
--#: ../yum/__init__.py:3730
-+#: ../yum/__init__.py:3731
- #, python-format
- msgid "No Match for available package: %s"
- msgstr "Ei vastaavuutta saatavilla olevalle paketille: %s"
-
--#: ../yum/__init__.py:3737
-+#: ../yum/__init__.py:3738
- #, python-format
- msgid "Only Upgrade available on package: %s"
- msgstr "Vain päivitys saatavilla paketille: %s"
-
--#: ../yum/__init__.py:3807 ../yum/__init__.py:3844
-+#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
- #, python-format
- msgid "Failed to downgrade: %s"
- msgstr "Varhentaminen epäonnistui: %s"
-
--#: ../yum/__init__.py:3876
-+#: ../yum/__init__.py:3877
- #, python-format
- msgid "Retrieving GPG key from %s"
- msgstr "Noudetaan GPG-avain osoitteesta %s"
-
--#: ../yum/__init__.py:3896
-+#: ../yum/__init__.py:3897
- msgid "GPG key retrieval failed: "
- msgstr "GPG-avaimen nouto epäonnistui: "
-
--#: ../yum/__init__.py:3902
-+#: ../yum/__init__.py:3903
- #, python-format
- msgid "Invalid GPG Key from %s: %s"
- msgstr "Virheellinen GPG-avain osoitteesta %s: %s"
-
--#: ../yum/__init__.py:3911
-+#: ../yum/__init__.py:3912
- #, python-format
- msgid "GPG key parsing failed: key does not have value %s"
- msgstr "GPG-avaimen jäsentäminen epäonnistui: avaimessa ei ole arvoa %s"
-
--#: ../yum/__init__.py:3943
-+#: ../yum/__init__.py:3944
- #, python-format
- msgid "GPG key at %s (0x%s) is already installed"
- msgstr "Osoitteesta %s ladattu GPG-avain (0x%s) on jo asennetuna"
-
- #. Try installing/updating GPG key
--#: ../yum/__init__.py:3948 ../yum/__init__.py:4010
-+#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
- #, python-format
- msgid "Importing GPG key 0x%s \"%s\" from %s"
- msgstr "Tuodaan GPG-avain 0x%s ”%s” osoitteesta %s"
-
--#: ../yum/__init__.py:3965
-+#: ../yum/__init__.py:3966
- msgid "Not installing key"
- msgstr "Avainta ei asenneta"
-
--#: ../yum/__init__.py:3971
-+#: ../yum/__init__.py:3972
- #, python-format
- msgid "Key import failed (code %d)"
- msgstr "Avaimen tuonti epäonnistui (koodi %d)"
-
--#: ../yum/__init__.py:3972 ../yum/__init__.py:4031
-+#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
- msgid "Key imported successfully"
- msgstr "Avaimen tuonti onnistui"
-
--#: ../yum/__init__.py:3977 ../yum/__init__.py:4036
-+#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
- #, python-format
- msgid ""
- "The GPG keys listed for the \"%s\" repository are already installed but they "
-@@ -2591,42 +2594,42 @@ msgstr ""
- "vastaa tätä pakettia.\n"
- "Tarkista että tälle asennuslähteelle on asetettu oikeat avainten URL:t."
-
--#: ../yum/__init__.py:3986
-+#: ../yum/__init__.py:3987
- msgid "Import of key(s) didn't help, wrong key(s)?"
- msgstr "Avainten tuonti ei auttanut, ovatko avaimet vääriä?"
-
--#: ../yum/__init__.py:4005
-+#: ../yum/__init__.py:4006
- #, python-format
- msgid "GPG key at %s (0x%s) is already imported"
- msgstr "Osoitteesta %s ladattu GPG-avain (0x%s) on jo tuotu"
-
--#: ../yum/__init__.py:4025
-+#: ../yum/__init__.py:4026
- #, python-format
- msgid "Not installing key for repo %s"
- msgstr "Ei asenneta avainta asennuslähteelle %s"
-
--#: ../yum/__init__.py:4030
-+#: ../yum/__init__.py:4031
- msgid "Key import failed"
- msgstr "Avaimen tuonti epäonnistui"
-
--#: ../yum/__init__.py:4156
-+#: ../yum/__init__.py:4157
- msgid "Unable to find a suitable mirror."
- msgstr "Sopivaa peilipalvelinta ei löytynyt."
-
--#: ../yum/__init__.py:4158
-+#: ../yum/__init__.py:4159
- msgid "Errors were encountered while downloading packages."
- msgstr "Paketteja ladatessa tapahtui virheitä."
-
--#: ../yum/__init__.py:4208
-+#: ../yum/__init__.py:4209
- #, python-format
- msgid "Please report this error at %s"
- msgstr "Ilmoita tästä ongelmasta: %s"
-
--#: ../yum/__init__.py:4232
-+#: ../yum/__init__.py:4233
- msgid "Test Transaction Errors: "
- msgstr "Testitransaktion virheitä: "
-
--#: ../yum/__init__.py:4333
-+#: ../yum/__init__.py:4334
- #, python-format
- msgid "Could not set cachedir: %s"
- msgstr "Välimuistihakemiston asettaminen epäonnistui %s"
-diff --git a/po/pt_BR.po b/po/pt_BR.po
-index 32a16af..91cea8f 100644
---- a/po/pt_BR.po
-+++ b/po/pt_BR.po
-@@ -1,15 +1,15 @@
- # Brazilian Portuguese translation of Yum
- # This file is distributed under the same license as the Yum package.
- # Igor Pires Soares <igor at projetofedora.org>, 2007,2008,2009.
--#
-+# Taylon Silmer <taylonsilva at gmail.com>, 2010.
- msgid ""
- msgstr ""
- "Project-Id-Version: Yum\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2009-10-15 15:45+0200\n"
--"PO-Revision-Date: 2009-11-02 11:15-0300\n"
--"Last-Translator: Igor Pires Soares <igor at projetofedora.org>\n"
--"Language-Team: Brazilian Portuguese <fedora-trans-pt_br at redhat.com>\n"
-+"POT-Creation-Date: 2010-02-11 10:54-0500\n"
-+"PO-Revision-Date: 2010-04-28 19:15-0300\n"
-+"Last-Translator: Taylon Silmer <taylonsilva at gmail.com>\n"
-+"Language-Team: Brazilian Portuguese <trans-pt_br at lists.fedoraproject.org>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-@@ -17,49 +17,34 @@ msgstr ""
- "X-Poedit-Language: Portuguese\n"
- "X-Poedit-Country: BRAZIL\n"
-
--#: ../callback.py:48
--#: ../output.py:940
--#: ../yum/rpmtrans.py:71
-+#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
- msgid "Updating"
- msgstr "Atualizando"
-
--#: ../callback.py:49
--#: ../yum/rpmtrans.py:72
-+#: ../callback.py:49 ../yum/rpmtrans.py:73
- msgid "Erasing"
- msgstr "Apagando"
-
--#: ../callback.py:50
--#: ../callback.py:51
--#: ../callback.py:53
--#: ../output.py:939
--#: ../yum/rpmtrans.py:73
--#: ../yum/rpmtrans.py:74
--#: ../yum/rpmtrans.py:76
-+#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:946
-+#: ../output.py:1659 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
-+#: ../yum/rpmtrans.py:77
- msgid "Installing"
- msgstr "Instalando"
-
--#: ../callback.py:52
--#: ../callback.py:58
--#: ../yum/rpmtrans.py:75
-+#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
- msgid "Obsoleted"
- msgstr "Obsoletos"
-
--#: ../callback.py:54
--#: ../output.py:1063
--#: ../output.py:1403
-+#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
- msgid "Updated"
- msgstr "Atualizados"
-
--#: ../callback.py:55
--#: ../output.py:1399
-+#: ../callback.py:55 ../output.py:1438
- msgid "Erased"
- msgstr "Removidos"
-
--#: ../callback.py:56
--#: ../callback.py:57
--#: ../callback.py:59
--#: ../output.py:1061
--#: ../output.py:1395
-+#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
-+#: ../output.py:1434 ../output.py:1646
- msgid "Installed"
- msgstr "Instalados"
-
-@@ -81,73 +66,73 @@ msgstr "Erro: estado de saída inválido: %s de %s"
- msgid "Erased: %s"
- msgstr "Removidos: %s"
-
--#: ../callback.py:217
--#: ../output.py:941
-+#: ../callback.py:217 ../output.py:948 ../output.py:1648
- msgid "Removing"
- msgstr "Removendo"
-
--#: ../callback.py:219
--#: ../yum/rpmtrans.py:77
-+#: ../callback.py:219 ../yum/rpmtrans.py:78
- msgid "Cleanup"
- msgstr "Limpeza"
-
--#: ../cli.py:106
-+#: ../cli.py:107
- #, python-format
- msgid "Command \"%s\" already defined"
- msgstr "Comando \"%s\" já definido"
-
--#: ../cli.py:118
-+#: ../cli.py:119
- msgid "Setting up repositories"
- msgstr "Configurando repositórios"
-
--#: ../cli.py:129
-+#: ../cli.py:130
- msgid "Reading repository metadata in from local files"
- msgstr "Lendo metadados do repositório a partir dos arquivos locais"
-
--#: ../cli.py:192
--#: ../utils.py:107
-+#: ../cli.py:194 ../utils.py:193
- #, python-format
- msgid "Config Error: %s"
- msgstr "Erro de configuração: %s"
-
--#: ../cli.py:195
--#: ../cli.py:1251
--#: ../utils.py:110
-+#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
- #, python-format
- msgid "Options Error: %s"
- msgstr "Erro nas opções: %s"
-
--#: ../cli.py:223
-+#: ../cli.py:227
- #, python-format
- msgid " Installed: %s-%s at %s"
- msgstr " Instalados: %s-%s em %s"
-
--#: ../cli.py:225
-+#: ../cli.py:229
- #, python-format
- msgid " Built : %s at %s"
- msgstr " Construídos : %s em %s"
-
--#: ../cli.py:227
-+#: ../cli.py:231
- #, python-format
- msgid " Committed: %s at %s"
- msgstr " Enviados: %s em %s"
-
--#: ../cli.py:266
-+#: ../cli.py:270
- msgid "You need to give some command"
- msgstr "Você precisa dar algum comando"
-
--#: ../cli.py:309
-+#: ../cli.py:284
-+#, python-format
-+msgid "No such command: %s. Please use %s --help"
-+msgstr "Comando não encontrado: %s. Por favor, utilize %s --help"
-+
-+#: ../cli.py:314
- msgid "Disk Requirements:\n"
- msgstr "Requisitos de disco:\n"
-
--#: ../cli.py:311
-+#: ../cli.py:316
- #, python-format
--msgid " At least %dMB needed on the %s filesystem.\n"
--msgstr " Pelo menos %d MB são necessários no sistema de arquivos %s.\n"
-+msgid " At least %dMB more space needed on the %s filesystem.\n"
-+msgstr " Pelo menos mais %dMB são necessários no sistema de arquivos %s.\n"
-
- #. TODO: simplify the dependency errors?
- #. Fixup the summary
--#: ../cli.py:316
-+#: ../cli.py:321
- msgid ""
- "Error Summary\n"
- "-------------\n"
-@@ -155,266 +140,262 @@ msgstr ""
- "Sumário de erros\n"
- "-------------\n"
-
--#: ../cli.py:359
-+#: ../cli.py:364
- msgid "Trying to run the transaction but nothing to do. Exiting."
- msgstr "Tentando executar a transação, mas não há nada a ser feito. Saindo."
-
--#: ../cli.py:395
-+#: ../cli.py:403
- msgid "Exiting on user Command"
- msgstr "Saindo pelo comando do usuário"
-
--#: ../cli.py:399
-+#: ../cli.py:407
- msgid "Downloading Packages:"
- msgstr "Baixando pacotes:"
-
--#: ../cli.py:404
-+#: ../cli.py:412
- msgid "Error Downloading Packages:\n"
- msgstr "Erro ao baixar pacotes:\n"
-
--#: ../cli.py:418
--#: ../yum/__init__.py:4014
-+#: ../cli.py:426 ../yum/__init__.py:4195
- msgid "Running rpm_check_debug"
- msgstr "Executando o rpm_check_debug"
-
--#: ../cli.py:427
--#: ../yum/__init__.py:4023
-+#: ../cli.py:435 ../yum/__init__.py:4204
- msgid "ERROR You need to update rpm to handle:"
- msgstr "ERRO. Você precisa atualizar o rpm para manipular:"
-
--#: ../cli.py:429
--#: ../yum/__init__.py:4026
-+#: ../cli.py:437 ../yum/__init__.py:4207
- msgid "ERROR with rpm_check_debug vs depsolve:"
- msgstr "Erro com o rpm_check_debug vs depsolve:"
-
--#: ../cli.py:435
-+#: ../cli.py:443
- msgid "RPM needs to be updated"
- msgstr "O RPM precisa ser atualizado"
-
--#: ../cli.py:436
-+#: ../cli.py:444
- #, python-format
- msgid "Please report this error in %s"
- msgstr "Por favor, relate esse erro em %s"
-
--#: ../cli.py:442
-+#: ../cli.py:450
- msgid "Running Transaction Test"
- msgstr "Executando teste de transação"
-
--#: ../cli.py:458
--msgid "Finished Transaction Test"
--msgstr "Teste de transação finalizado"
--
--#: ../cli.py:460
-+#: ../cli.py:466
- msgid "Transaction Check Error:\n"
- msgstr "Erro na verificação da transação:\n"
-
--#: ../cli.py:467
-+#: ../cli.py:473
- msgid "Transaction Test Succeeded"
- msgstr "Teste de transação completo"
-
--#: ../cli.py:489
-+#: ../cli.py:495
- msgid "Running Transaction"
- msgstr "Executando a transação"
-
--#: ../cli.py:519
-+#: ../cli.py:525
- msgid ""
- "Refusing to automatically import keys when running unattended.\n"
- "Use \"-y\" to override."
- msgstr ""
--"Recusa de importação automática das chaves ao executar de forma não assistida.\n"
-+"Recusa de importação automática das chaves ao executar de forma não "
-+"assistida.\n"
- "Use \"-y\" para sobrescrever."
-
--#: ../cli.py:538
--#: ../cli.py:572
-+#: ../cli.py:544 ../cli.py:578
- msgid " * Maybe you meant: "
- msgstr " * Talvez você queira dizer: "
-
--#: ../cli.py:555
--#: ../cli.py:563
-+#: ../cli.py:561 ../cli.py:569
- #, python-format
- msgid "Package(s) %s%s%s available, but not installed."
- msgstr "Pacotes %s%s%s disponíveis, mas já instalados."
-
--#: ../cli.py:569
--#: ../cli.py:600
--#: ../cli.py:678
-+#: ../cli.py:575 ../cli.py:607 ../cli.py:687
- #, python-format
- msgid "No package %s%s%s available."
- msgstr "Nenhum pacote %s%s%s disponível."
-
--#: ../cli.py:605
--#: ../cli.py:738
-+#: ../cli.py:612 ../cli.py:748
- msgid "Package(s) to install"
- msgstr "Pacotes a serem instalados"
-
--#: ../cli.py:606
--#: ../cli.py:684
--#: ../cli.py:717
--#: ../cli.py:739
--#: ../yumcommands.py:159
-+#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
-+#: ../yumcommands.py:160
- msgid "Nothing to do"
- msgstr "Nada a ser feito"
-
--#: ../cli.py:639
-+#: ../cli.py:647
- #, python-format
- msgid "%d packages marked for Update"
- msgstr "%d pacotes marcados para atualização"
-
--#: ../cli.py:642
-+#: ../cli.py:650
- msgid "No Packages marked for Update"
- msgstr "Nenhum pacote marcado para atualização"
-
--#: ../cli.py:656
-+#: ../cli.py:664
- #, python-format
- msgid "%d packages marked for removal"
- msgstr "%d pacotes marcados para remoção"
-
--#: ../cli.py:659
-+#: ../cli.py:667
- msgid "No Packages marked for removal"
- msgstr "Nenhum pacote marcado para remoção"
-
--#: ../cli.py:683
-+#: ../cli.py:692
- msgid "Package(s) to downgrade"
- msgstr "Pacote(s) a ser(em) retrocedido(s)"
-
--#: ../cli.py:707
-+#: ../cli.py:717
- #, python-format
- msgid " (from %s)"
- msgstr " (a partir de %s)"
-
--#: ../cli.py:709
-+#: ../cli.py:719
- #, python-format
- msgid "Installed package %s%s%s%s not available."
- msgstr "O pacote instalado %s%s%s%s não está disponível."
-
--#: ../cli.py:716
-+#: ../cli.py:726
- msgid "Package(s) to reinstall"
- msgstr "Pacote(s) a ser(em) reinstalado(s)"
-
--#: ../cli.py:729
-+#: ../cli.py:739
- msgid "No Packages Provided"
- msgstr "Nenhum pacote fornecido"
-
--#: ../cli.py:813
-+#: ../cli.py:818
-+#, python-format
-+msgid "Matched: %s"
-+msgstr "Encontrado: %s"
-+
-+#: ../cli.py:825
- #, python-format
- msgid "Warning: No matches found for: %s"
- msgstr "Aviso: nenhum resultado para: %s"
-
--#: ../cli.py:816
-+#: ../cli.py:828
- msgid "No Matches found"
- msgstr "Nenhum pacote localizado"
-
--#: ../cli.py:855
-+#: ../cli.py:868
- #, python-format
- msgid ""
- "Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
- " You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
- msgstr ""
--"Aviso: as versões 3.0.x do yum iriam corresponder erroneamente pelos nomes de arquivos.\n"
--" Você pode usar \"%s*/%s%s\" e/ou \"%s*bin/%s%s\" para obter esse comportamento."
-+"Aviso: as versões 3.0.x do yum iriam corresponder erroneamente pelos nomes "
-+"de arquivos.\n"
-+" Você pode usar \"%s*/%s%s\" e/ou \"%s*bin/%s%s\" para obter esse "
-+"comportamento."
-
--#: ../cli.py:871
-+#: ../cli.py:884
- #, python-format
- msgid "No Package Found for %s"
- msgstr "Nenhum pacote localizado para %s"
-
--#: ../cli.py:883
-+#: ../cli.py:896
- msgid "Cleaning up Everything"
- msgstr "Limpando tudo"
-
--#: ../cli.py:897
-+#: ../cli.py:912
- msgid "Cleaning up Headers"
- msgstr "Limpando cabeçalhos"
-
--#: ../cli.py:900
-+#: ../cli.py:915
- msgid "Cleaning up Packages"
- msgstr "Limpando pacotes"
-
--#: ../cli.py:903
-+#: ../cli.py:918
- msgid "Cleaning up xml metadata"
- msgstr "Limpando metadados em xml"
-
--#: ../cli.py:906
-+#: ../cli.py:921
- msgid "Cleaning up database cache"
- msgstr "Limpando cache do banco de dados"
-
--#: ../cli.py:909
-+#: ../cli.py:924
- msgid "Cleaning up expire-cache metadata"
- msgstr "Limpando metadados expirados do cache"
-
--#: ../cli.py:912
-+#: ../cli.py:927
-+msgid "Cleaning up cached rpmdb data"
-+msgstr "Limpando dados rpmdb em cache"
-+
-+#: ../cli.py:930
- msgid "Cleaning up plugins"
- msgstr "Limpando plugins"
-
--#: ../cli.py:937
-+#: ../cli.py:955
- msgid "Installed Groups:"
- msgstr "Grupos instalados:"
-
--#: ../cli.py:949
-+#: ../cli.py:967
- msgid "Available Groups:"
- msgstr "Grupos disponíveis:"
-
--#: ../cli.py:959
-+#: ../cli.py:977
- msgid "Done"
- msgstr "Concluído"
-
--#: ../cli.py:970
--#: ../cli.py:988
--#: ../cli.py:994
--#: ../yum/__init__.py:2629
-+#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
- #, python-format
- msgid "Warning: Group %s does not exist."
- msgstr "Aviso: O grupo %s não existe."
-
--#: ../cli.py:998
-+#: ../cli.py:1016
- msgid "No packages in any requested group available to install or update"
--msgstr "Nenhum pacote disponível para instalação ou atualização nos grupos requisitados"
-+msgstr ""
-+"Nenhum pacote disponível para instalação ou atualização nos grupos "
-+"requisitados"
-
--#: ../cli.py:1000
-+#: ../cli.py:1018
- #, python-format
- msgid "%d Package(s) to Install"
- msgstr "%d pacote(s) a ser(em) instalado(s)"
-
--#: ../cli.py:1010
--#: ../yum/__init__.py:2641
-+#: ../cli.py:1028 ../yum/__init__.py:2800
- #, python-format
- msgid "No group named %s exists"
- msgstr "Nenhum grupo de nome %s existe"
-
--#: ../cli.py:1016
-+#: ../cli.py:1034
- msgid "No packages to remove from groups"
- msgstr "Nenhum pacote a ser removido a partir dos grupos"
-
--#: ../cli.py:1018
-+#: ../cli.py:1036
- #, python-format
- msgid "%d Package(s) to remove"
- msgstr "%d pacote(s) a ser(em) removido(s)"
-
--#: ../cli.py:1060
-+#: ../cli.py:1078
- #, python-format
- msgid "Package %s is already installed, skipping"
- msgstr "O pacote %s já está instalado, ignorando"
-
--#: ../cli.py:1071
-+#: ../cli.py:1089
- #, python-format
- msgid "Discarding non-comparable pkg %s.%s"
- msgstr "Descartando pacote não comparável %s.%s"
-
- #. we've not got any installed that match n or n+a
--#: ../cli.py:1097
-+#: ../cli.py:1115
- #, python-format
- msgid "No other %s installed, adding to list for potential install"
--msgstr "Nenhum outro %s instalado, adicionado à lista para potencial instalação"
-+msgstr ""
-+"Nenhum outro %s instalado, adicionado à lista para potencial instalação"
-
--#: ../cli.py:1117
-+#: ../cli.py:1135
- msgid "Plugin Options"
- msgstr "Opções do plugin"
-
--#: ../cli.py:1125
-+#: ../cli.py:1143
- #, python-format
- msgid "Command line error: %s"
- msgstr "Erro na linha de comando: %s"
-
--#: ../cli.py:1138
-+#: ../cli.py:1156
- #, python-format
- msgid ""
- "\n"
-@@ -425,106 +406,117 @@ msgstr ""
- "\n"
- "%s: a opção %s requer um argumento"
-
--#: ../cli.py:1191
-+#: ../cli.py:1209
- msgid "--color takes one of: auto, always, never"
- msgstr "--color aceita uma destas opções: auto, always, never"
-
--#: ../cli.py:1298
-+#: ../cli.py:1319
- msgid "show this help message and exit"
- msgstr "mostrar essa mensagem ajuda e sai"
-
--#: ../cli.py:1302
-+#: ../cli.py:1323
- msgid "be tolerant of errors"
- msgstr "ser tolerante com os erros"
-
--#: ../cli.py:1304
--msgid "run entirely from cache, don't update cache"
--msgstr "executar por completo a partir do cache, não atualiza o cache"
-+#: ../cli.py:1326
-+msgid "run entirely from system cache, don't update cache"
-+msgstr ""
-+"executar por completo a partir do cache do sistema, não atualiza o cache"
-
--#: ../cli.py:1306
-+#: ../cli.py:1329
- msgid "config file location"
- msgstr "configurar localização do arquivo"
-
--#: ../cli.py:1308
-+#: ../cli.py:1332
- msgid "maximum command wait time"
- msgstr "Tempo máximo de espera do comando"
-
--#: ../cli.py:1310
-+#: ../cli.py:1334
- msgid "debugging output level"
- msgstr "nível de depuração na saída"
-
--#: ../cli.py:1314
-+#: ../cli.py:1338
- msgid "show duplicates, in repos, in list/search commands"
- msgstr "mostrar duplicados em repos e em comandos de pesquisa/listagem"
-
--#: ../cli.py:1316
-+#: ../cli.py:1340
- msgid "error output level"
- msgstr "nível de erro na saída"
-
--#: ../cli.py:1319
-+#: ../cli.py:1343
-+msgid "debugging output level for rpm"
-+msgstr "nível de depuração na saída para o rpm"
-+
-+#: ../cli.py:1346
- msgid "quiet operation"
- msgstr "operação discreta"
-
--#: ../cli.py:1321
-+#: ../cli.py:1348
- msgid "verbose operation"
- msgstr "operação detalhada"
-
--#: ../cli.py:1323
-+#: ../cli.py:1350
- msgid "answer yes for all questions"
- msgstr "responder sim para todas as perguntas"
-
--#: ../cli.py:1325
-+#: ../cli.py:1352
- msgid "show Yum version and exit"
- msgstr "mostrar versão do Yum ao sair"
-
--#: ../cli.py:1326
-+#: ../cli.py:1353
- msgid "set install root"
- msgstr "definir raiz de instalação"
-
--#: ../cli.py:1330
-+#: ../cli.py:1357
- msgid "enable one or more repositories (wildcards allowed)"
- msgstr "habilitar um ou mais repositórios (curingas são permitidos)"
-
--#: ../cli.py:1334
-+#: ../cli.py:1361
- msgid "disable one or more repositories (wildcards allowed)"
- msgstr "desabilitar um ou mais repositórios (curingas são permitidos)"
-
--#: ../cli.py:1337
-+#: ../cli.py:1364
- msgid "exclude package(s) by name or glob"
- msgstr "excluir pacote(s) por nome ou glob"
-
--#: ../cli.py:1339
-+#: ../cli.py:1366
- msgid "disable exclude from main, for a repo or for everything"
--msgstr "desabilitar a exclusão a partir do principal, para um repositório ou para tudo"
-+msgstr ""
-+"desabilitar a exclusão a partir do principal, para um repositório ou para "
-+"tudo"
-
--#: ../cli.py:1342
-+#: ../cli.py:1369
- msgid "enable obsoletes processing during updates"
- msgstr "Habilitar processo de obsolescência durante as atualizações"
-
--#: ../cli.py:1344
-+#: ../cli.py:1371
- msgid "disable Yum plugins"
- msgstr "desabilitar plugins do Yum"
-
--#: ../cli.py:1346
-+#: ../cli.py:1373
- msgid "disable gpg signature checking"
- msgstr "desabilitar verificação de assinaturas gpg"
-
--#: ../cli.py:1348
-+#: ../cli.py:1375
- msgid "disable plugins by name"
- msgstr "desabilitar plugins pelo nome"
-
--#: ../cli.py:1351
-+#: ../cli.py:1378
- msgid "enable plugins by name"
- msgstr "habilita plugins pelo nome"
-
--#: ../cli.py:1354
-+#: ../cli.py:1381
- msgid "skip packages with depsolving problems"
- msgstr "ignorar pacotes com problemas de solução de dependências"
-
--#: ../cli.py:1356
-+#: ../cli.py:1383
- msgid "control whether color is used"
- msgstr "controla o uso da cor"
-
-+#: ../cli.py:1385
-+msgid "set value of $releasever in yum config and repo files"
-+msgstr "defina o valor de $releasever nos arquivos repo e yum config"
-+
- #: ../output.py:305
- msgid "Jan"
- msgstr "Jan"
-@@ -577,105 +569,104 @@ msgstr "Dez"
- msgid "Trying other mirror."
- msgstr "Tentando outro espelho."
-
--#: ../output.py:538
-+#: ../output.py:534
- #, python-format
- msgid "Name : %s%s%s"
- msgstr "Nome : %s%s%s"
-
--#: ../output.py:539
-+#: ../output.py:535
- #, python-format
- msgid "Arch : %s"
- msgstr "Arq. : %s"
-
--#: ../output.py:541
-+#: ../output.py:537
- #, python-format
- msgid "Epoch : %s"
- msgstr "Período : %s"
-
--#: ../output.py:542
-+#: ../output.py:538
- #, python-format
- msgid "Version : %s"
- msgstr "Versão : %s"
-
--#: ../output.py:543
-+#: ../output.py:539
- #, python-format
- msgid "Release : %s"
- msgstr "Lançamento : %s"
-
--#: ../output.py:544
-+#: ../output.py:540
- #, python-format
- msgid "Size : %s"
- msgstr "Tamanho : %s"
-
--#: ../output.py:545
-+#: ../output.py:541
- #, python-format
- msgid "Repo : %s"
- msgstr "Repo : %s"
-
--#: ../output.py:547
-+#: ../output.py:543
- #, python-format
- msgid "From repo : %s"
- msgstr "Do repositório: %s"
-
--#: ../output.py:549
-+#: ../output.py:545
- #, python-format
- msgid "Committer : %s"
- msgstr "Enviado por : %s"
-
--#: ../output.py:550
-+#: ../output.py:546
- #, python-format
- msgid "Committime : %s"
- msgstr "Horário do envio : %s"
-
--#: ../output.py:551
-+#: ../output.py:547
- #, python-format
- msgid "Buildtime : %s"
- msgstr "Horário da construção : %s"
-
--#: ../output.py:553
-+#: ../output.py:549
- #, python-format
- msgid "Installtime: %s"
- msgstr "Horário da instalação: %s"
-
--#: ../output.py:554
-+#: ../output.py:550
- msgid "Summary : "
- msgstr "Sumário : "
-
--#: ../output.py:556
-+#: ../output.py:552
- #, python-format
- msgid "URL : %s"
- msgstr "URL : %s"
-
--#: ../output.py:557
--#, python-format
--msgid "License : %s"
--msgstr "Licença : %s"
-+#: ../output.py:553
-+msgid "License : "
-+msgstr "Licença : "
-
--#: ../output.py:558
-+#: ../output.py:554
- msgid "Description: "
- msgstr "Descrição: "
-
--#: ../output.py:626
-+#: ../output.py:622
- msgid "y"
- msgstr "s"
-
--#: ../output.py:626
-+#: ../output.py:622
- msgid "yes"
- msgstr "sim"
-
--#: ../output.py:627
-+#: ../output.py:623
- msgid "n"
- msgstr "n"
-
--#: ../output.py:627
-+#: ../output.py:623
- msgid "no"
- msgstr "não"
-
--#: ../output.py:631
-+#: ../output.py:627
- msgid "Is this ok [y/N]: "
- msgstr "Correto? [s/N]:"
-
--#: ../output.py:722
-+#: ../output.py:715
- #, python-format
- msgid ""
- "\n"
-@@ -684,151 +675,151 @@ msgstr ""
- "\n"
- "Grupo: %s"
-
--#: ../output.py:726
-+#: ../output.py:719
- #, python-format
- msgid " Group-Id: %s"
- msgstr " Group-Id: %s"
-
--#: ../output.py:731
-+#: ../output.py:724
- #, python-format
- msgid " Description: %s"
- msgstr " Descrição: %s"
-
--#: ../output.py:733
-+#: ../output.py:726
- msgid " Mandatory Packages:"
- msgstr " Pacotes obrigatórios:"
-
--#: ../output.py:734
-+#: ../output.py:727
- msgid " Default Packages:"
- msgstr " Pacotes padrão:"
-
--#: ../output.py:735
-+#: ../output.py:728
- msgid " Optional Packages:"
- msgstr " Pacotes opcionais:"
-
--#: ../output.py:736
-+#: ../output.py:729
- msgid " Conditional Packages:"
- msgstr " Pacotes condicionais:"
-
--#: ../output.py:756
-+#: ../output.py:749
- #, python-format
- msgid "package: %s"
- msgstr "pacote: %s"
-
--#: ../output.py:758
-+#: ../output.py:751
- msgid " No dependencies for this package"
- msgstr " Nenhuma dependência para este pacote"
-
--#: ../output.py:763
-+#: ../output.py:756
- #, python-format
- msgid " dependency: %s"
- msgstr " dependência: %s"
-
--#: ../output.py:765
-+#: ../output.py:758
- msgid " Unsatisfied dependency"
- msgstr " Dependência não satisfeita"
-
--#: ../output.py:837
-+#: ../output.py:830
- #, python-format
- msgid "Repo : %s"
- msgstr "Repo : %s"
-
--#: ../output.py:838
-+#: ../output.py:831
- msgid "Matched from:"
- msgstr "Resultado a partir de:"
-
--#: ../output.py:847
-+#: ../output.py:840
- msgid "Description : "
- msgstr "Descrição : "
-
--#: ../output.py:850
-+#: ../output.py:843
- #, python-format
- msgid "URL : %s"
- msgstr "URL : %s"
-
--#: ../output.py:853
-+#: ../output.py:846
- #, python-format
- msgid "License : %s"
- msgstr "Licença : %s"
-
--#: ../output.py:856
-+#: ../output.py:849
- #, python-format
- msgid "Filename : %s"
- msgstr "Nome de arquivo : %s"
-
--#: ../output.py:860
-+#: ../output.py:853
- msgid "Other : "
- msgstr "Outro : "
-
--#: ../output.py:893
-+#: ../output.py:896
- msgid "There was an error calculating total download size"
- msgstr "Houve um erro no cálculo do tamanho total do download"
-
--#: ../output.py:898
-+#: ../output.py:901
- #, python-format
- msgid "Total size: %s"
- msgstr "Tamanho total: %s"
-
--#: ../output.py:901
-+#: ../output.py:904
- #, python-format
- msgid "Total download size: %s"
- msgstr "Tamanho total do download: %s"
-
--#: ../output.py:942
-+#: ../output.py:908
-+#, python-format
-+msgid "Installed size: %s"
-+msgstr "Tamanho depois de instalado: %s"
-+
-+#: ../output.py:949
- msgid "Reinstalling"
- msgstr "Reinstalando"
-
--#: ../output.py:943
-+#: ../output.py:950
- msgid "Downgrading"
- msgstr "Desatualizando"
-
--#: ../output.py:944
-+#: ../output.py:951
- msgid "Installing for dependencies"
- msgstr "Instalando para as dependências"
-
--#: ../output.py:945
-+#: ../output.py:952
- msgid "Updating for dependencies"
- msgstr "Atualizando para as dependências"
-
--#: ../output.py:946
-+#: ../output.py:953
- msgid "Removing for dependencies"
- msgstr "Removendo para as dependências"
-
--#: ../output.py:953
--#: ../output.py:1065
-+#: ../output.py:960 ../output.py:1072
- msgid "Skipped (dependency problems)"
- msgstr "Ignorado (problemas de dependências)"
-
--#: ../output.py:976
-+#: ../output.py:983
- msgid "Package"
- msgstr "Pacote"
-
--#: ../output.py:976
-+#: ../output.py:983
- msgid "Arch"
- msgstr "Arq."
-
--#: ../output.py:977
-+#: ../output.py:984
- msgid "Version"
- msgstr "Versão"
-
--#: ../output.py:977
-+#: ../output.py:984
- msgid "Repository"
- msgstr "Repo"
-
--#: ../output.py:978
-+#: ../output.py:985
- msgid "Size"
- msgstr "Tam."
-
--#: ../output.py:990
-+#: ../output.py:997
- #, python-format
--msgid ""
--" replacing %s%s%s.%s %s\n"
--"\n"
--msgstr ""
--" substituindo %s%s%s.%s %s\n"
--"\n"
-+msgid " replacing %s%s%s.%s %s\n"
-+msgstr " substituindo %s%s%s.%s %s\n"
-
--#: ../output.py:999
-+#: ../output.py:1006
- #, python-format
- msgid ""
- "\n"
-@@ -839,7 +830,7 @@ msgstr ""
- "Resumo da transação\n"
- "%s\n"
-
--#: ../output.py:1006
-+#: ../output.py:1013
- #, python-format
- msgid ""
- "Install %5.5s Package(s)\n"
-@@ -848,7 +839,7 @@ msgstr ""
- "Instalar %5.5s Pacote(s)\n"
- "Atualizar %5.5s Pacote(s)\n"
-
--#: ../output.py:1015
-+#: ../output.py:1022
- #, python-format
- msgid ""
- "Remove %5.5s Package(s)\n"
-@@ -859,32 +850,32 @@ msgstr ""
- "Reinstalar %5.5s Pacote(s)\n"
- "Desatualizar %5.5s Pacote(s)\n"
-
--#: ../output.py:1059
-+#: ../output.py:1066
- msgid "Removed"
- msgstr "Removido(s)"
-
--#: ../output.py:1060
-+#: ../output.py:1067
- msgid "Dependency Removed"
- msgstr "Dependência(s) removida(s)"
-
--#: ../output.py:1062
-+#: ../output.py:1069
- msgid "Dependency Installed"
- msgstr "Dependência(s) instalada(s)"
-
--#: ../output.py:1064
-+#: ../output.py:1071
- msgid "Dependency Updated"
- msgstr "Dependência(s) atualizada(s)"
-
--#: ../output.py:1066
-+#: ../output.py:1073
- msgid "Replaced"
- msgstr "Substituído(s)"
-
--#: ../output.py:1067
-+#: ../output.py:1074
- msgid "Failed"
- msgstr "Falhou"
-
- #. Delta between C-c's so we treat as exit
--#: ../output.py:1133
-+#: ../output.py:1140
- msgid "two"
- msgstr "dois"
-
-@@ -892,227 +883,380 @@ msgstr "dois"
- #. Current download cancelled, interrupt (ctrl-c) again within two seconds
- #. to exit.
- #. Where "interupt (ctrl-c) again" and "two" are highlighted.
--#: ../output.py:1144
-+#: ../output.py:1151
- #, python-format
- msgid ""
- "\n"
--" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n"
-+" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s "
-+"seconds\n"
- "to exit.\n"
- msgstr ""
- "\n"
--" Download atual cancelado, %sinterrompa com (ctrl-c) novamente%s dentro de %s%s%s segundos\n"
-+" Download atual cancelado, %sinterrompa com (ctrl-c) novamente%s dentro de %s"
-+"%s%s segundos\n"
- "para sair.\n"
-
--#: ../output.py:1155
-+#: ../output.py:1162
- msgid "user interrupt"
- msgstr "interrupção do usuário"
-
--#: ../output.py:1173
-+#: ../output.py:1180
- msgid "Total"
- msgstr "Total"
-
-+#: ../output.py:1202
-+msgid "I"
-+msgstr "I"
-+
- #: ../output.py:1203
-+msgid "O"
-+msgstr "O"
-+
-+#: ../output.py:1204
-+msgid "E"
-+msgstr "E"
-+
-+#: ../output.py:1205
-+msgid "R"
-+msgstr "R"
-+
-+#: ../output.py:1206
-+msgid "D"
-+msgstr "D"
-+
-+#: ../output.py:1207
-+msgid "U"
-+msgstr "U"
-+
-+#: ../output.py:1217
- msgid "<unset>"
- msgstr "<indefinido>"
-
--#: ../output.py:1204
-+#: ../output.py:1218
- msgid "System"
- msgstr "Sistema"
-
--#: ../output.py:1240
-+#: ../output.py:1254
- msgid "Bad transaction IDs, or package(s), given"
- msgstr "IDs de transação ou pacote(s) fornecido(s) inválido(s)"
-
--#: ../output.py:1284
--#: ../yumcommands.py:1149
--#: ../yum/__init__.py:1067
--msgid "Warning: RPMDB has been altered since the last yum transaction."
--msgstr "Aviso: o RPMDB foi alterado desde a última transação do yum."
-+#: ../output.py:1266
-+msgid "ID"
-+msgstr "ID"
-+
-+#: ../output.py:1267 ../output.py:1520
-+msgid "Login user"
-+msgstr "Usuário de login"
-+
-+#: ../output.py:1268
-+msgid "Date and time"
-+msgstr "Data e hora"
-+
-+#: ../output.py:1269 ../output.py:1522
-+msgid "Action(s)"
-+msgstr "Ação(ões)"
-
--#: ../output.py:1289
-+#: ../output.py:1270 ../output.py:1523
-+msgid "Altered"
-+msgstr "Alterado"
-+
-+#: ../output.py:1310
- msgid "No transaction ID given"
- msgstr "Nenhum ID de transação fornecido"
-
--#: ../output.py:1297
-+#: ../output.py:1336
- msgid "Bad transaction ID given"
- msgstr "O ID de transação fornecido é inválido"
-
--#: ../output.py:1302
-+#: ../output.py:1341
- msgid "Not found given transaction ID"
- msgstr "O ID de transação dado não foi localizado"
-
--#: ../output.py:1310
-+#: ../output.py:1349
- msgid "Found more than one transaction ID!"
- msgstr "Foi localizado mais de um ID de transação!"
-
--#: ../output.py:1331
-+#: ../output.py:1370
- msgid "No transaction ID, or package, given"
- msgstr "Nenhum ID de transação ou pacote fornecido"
-
--#: ../output.py:1357
-+#: ../output.py:1396
- msgid "Transaction ID :"
- msgstr "ID de transação:"
-
--#: ../output.py:1359
-+#: ../output.py:1398
- msgid "Begin time :"
- msgstr "Horário de início:"
-
--#: ../output.py:1362
--#: ../output.py:1364
-+#: ../output.py:1401 ../output.py:1403
- msgid "Begin rpmdb :"
- msgstr "Início do rpmdb:"
-
--#: ../output.py:1378
-+#: ../output.py:1417
- #, python-format
- msgid "(%s seconds)"
- msgstr "(%s segundos)"
-
--#: ../output.py:1379
-+#: ../output.py:1418
- msgid "End time :"
- msgstr "Horário do fim:"
-
--#: ../output.py:1382
--#: ../output.py:1384
-+#: ../output.py:1421 ../output.py:1423
- msgid "End rpmdb :"
- msgstr "Fim do rpmdb:"
-
--#: ../output.py:1385
-+#: ../output.py:1424
- msgid "User :"
- msgstr "Usuário:"
-
--#: ../output.py:1387
--#: ../output.py:1389
--#: ../output.py:1391
-+#: ../output.py:1426 ../output.py:1428 ../output.py:1430
- msgid "Return-Code :"
- msgstr "Código de retorno:"
-
--#: ../output.py:1387
-+#: ../output.py:1426
- msgid "Aborted"
- msgstr "Interrompido"
-
--#: ../output.py:1389
-+#: ../output.py:1428
- msgid "Failure:"
- msgstr "Falha:"
-
--#: ../output.py:1391
-+#: ../output.py:1430
- msgid "Success"
- msgstr "Sucesso"
-
--#: ../output.py:1392
-+#: ../output.py:1431
- msgid "Transaction performed with:"
- msgstr "Transação realizada com:"
-
--#: ../output.py:1405
-+#: ../output.py:1444 ../output.py:1489
- msgid "Downgraded"
- msgstr "Desatualizados"
-
- #. multiple versions installed, both older and newer
--#: ../output.py:1407
-+#: ../output.py:1446
- msgid "Weird"
- msgstr "Estranho"
-
--#: ../output.py:1409
-+#: ../output.py:1448
- msgid "Packages Altered:"
- msgstr "Pacotes alterados:"
-
--#: ../output.py:1412
-+#: ../output.py:1451
- msgid "Scriptlet output:"
- msgstr "Saída do scriptlet:"
-
--#: ../output.py:1418
-+#: ../output.py:1457
- msgid "Errors:"
- msgstr "Erros:"
-
--#: ../output.py:1489
-+#: ../output.py:1481 ../output.py:1482
-+msgid "Install"
-+msgstr "Instalar"
-+
-+#: ../output.py:1483
-+msgid "Dep-Install"
-+msgstr "Dep-Install"
-+
-+#: ../output.py:1485
-+msgid "Obsoleting"
-+msgstr "Obsoletos"
-+
-+#: ../output.py:1486
-+msgid "Erase"
-+msgstr "Apagar"
-+
-+#: ../output.py:1487
-+msgid "Reinstall"
-+msgstr "Reinstalar"
-+
-+#: ../output.py:1488
-+#, fuzzy
-+msgid "Downgrade"
-+msgstr "Regredir"
-+
-+#: ../output.py:1490
-+msgid "Update"
-+msgstr "Atualizar"
-+
-+#: ../output.py:1521
-+msgid "Time"
-+msgstr "Hora"
-+
-+#: ../output.py:1547
- msgid "Last day"
- msgstr "Ontem"
-
--#: ../output.py:1490
-+#: ../output.py:1548
- msgid "Last week"
- msgstr "Uma semana atrás"
-
--#: ../output.py:1491
-+#: ../output.py:1549
- msgid "Last 2 weeks"
- msgstr "2 semanas atrás"
-
- #. US default :p
--#: ../output.py:1492
-+#: ../output.py:1550
- msgid "Last 3 months"
- msgstr "3 meses atrás"
-
--#: ../output.py:1493
-+#: ../output.py:1551
- msgid "Last 6 months"
- msgstr "6 meses atrás"
-
--#: ../output.py:1494
-+#: ../output.py:1552
- msgid "Last year"
- msgstr "Ano passado"
-
--#: ../output.py:1495
-+#: ../output.py:1553
- msgid "Over a year ago"
- msgstr "Há mais de um ano"
-
--#: ../output.py:1524
-+#: ../output.py:1585
- msgid "installed"
- msgstr "instalado"
-
--#: ../output.py:1525
-+#: ../output.py:1586
- msgid "updated"
- msgstr "atualizado"
-
--#: ../output.py:1526
-+#: ../output.py:1587
- msgid "obsoleted"
- msgstr "obsoleto"
-
--#: ../output.py:1527
-+#: ../output.py:1588
- msgid "erased"
- msgstr "removido"
-
--#: ../output.py:1531
-+#: ../output.py:1592
- #, python-format
- msgid "---> Package %s.%s %s:%s-%s set to be %s"
- msgstr "---> Pacote %s.%s %s:%s-%s definido para ser %s"
-
--#: ../output.py:1538
-+#: ../output.py:1599
- msgid "--> Running transaction check"
- msgstr "--> Executando verificação da transação"
-
--#: ../output.py:1543
-+#: ../output.py:1604
- msgid "--> Restarting Dependency Resolution with new changes."
- msgstr "--> Reiniciando resolução de dependências com as novas alterações."
-
--#: ../output.py:1548
-+#: ../output.py:1609
- msgid "--> Finished Dependency Resolution"
- msgstr "--> Resolução de dependências finalizada"
-
--#: ../output.py:1553
--#: ../output.py:1558
-+#: ../output.py:1614 ../output.py:1619
- #, python-format
- msgid "--> Processing Dependency: %s for package: %s"
- msgstr "--> Processando dependência: %s para o pacote: %s"
-
--#: ../output.py:1562
-+#: ../output.py:1623
- #, python-format
- msgid "--> Unresolved Dependency: %s"
- msgstr "--> Dependência não resolvida: %s"
-
--#: ../output.py:1568
--#: ../output.py:1573
-+#: ../output.py:1634
-+#, python-format
-+msgid "Package: %s"
-+msgstr "Pacote: %s"
-+
-+#: ../output.py:1636
-+#, python-format
-+msgid ""
-+"\n"
-+" Requires: %s"
-+msgstr ""
-+"\n"
-+" Requer: %s"
-+
-+#: ../output.py:1649 ../output.py:1660
-+#, python-format
-+msgid ""
-+"\n"
-+" %s: %s (%s)"
-+msgstr ""
-+"\n"
-+" %s: %s (%s)"
-+
-+#: ../output.py:1657
-+msgid "Available"
-+msgstr "Disponível"
-+
-+#: ../output.py:1665 ../output.py:1670
- #, python-format
- msgid "--> Processing Conflict: %s conflicts %s"
- msgstr "--> Processando conflito: %s conflita com %s"
-
--#: ../output.py:1577
-+#: ../output.py:1674
- msgid "--> Populating transaction set with selected packages. Please wait."
--msgstr "--> Construindo conjunto de transações com os pacotes selecionados. Por favor aguarde."
-+msgstr ""
-+"--> Construindo conjunto de transações com os pacotes selecionados. Por "
-+"favor aguarde."
-
--#: ../output.py:1581
-+#: ../output.py:1678
- #, python-format
- msgid "---> Downloading header for %s to pack into transaction set."
- msgstr "--> Baixando cabeçalho do %s para inclusão no conjunto de transações."
-
--#: ../utils.py:137
--#: ../yummain.py:42
-+#: ../utils.py:93
-+msgid "Running"
-+msgstr "Executando"
-+
-+#: ../utils.py:94
-+msgid "Sleeping"
-+msgstr "Dormindo"
-+
-+#: ../utils.py:95
-+msgid "Uninterruptible"
-+msgstr "Ininterrompível"
-+
-+#: ../utils.py:96
-+msgid "Zombie"
-+msgstr "Zumbi"
-+
-+#: ../utils.py:97
-+msgid "Traced/Stopped"
-+msgstr "Rastreado/Parado"
-+
-+#: ../utils.py:98 ../yumcommands.py:917
-+msgid "Unknown"
-+msgstr "Desconhecido"
-+
-+#: ../utils.py:109
-+msgid " The other application is: PackageKit"
-+msgstr " O outro aplicativo é: PackageKit"
-+
-+#: ../utils.py:111
-+#, python-format
-+msgid " The other application is: %s"
-+msgstr " O outro aplicativo é: %s"
-+
-+#: ../utils.py:114
-+#, python-format
-+msgid " Memory : %5s RSS (%5sB VSZ)"
-+msgstr " Memória: %5s RSS (%5sB VSZ)"
-+
-+#: ../utils.py:119
-+#, python-format
-+msgid " Started: %s - %s ago"
-+msgstr " Iniciado: %s - %s atrás"
-+
-+#: ../utils.py:121
-+#, python-format
-+msgid " State : %s, pid: %d"
-+msgstr " Estado: %s, pid: %d"
-+
-+#: ../utils.py:199
-+#, python-format
-+msgid "PluginExit Error: %s"
-+msgstr "Erro PluginExit: %s"
-+
-+#: ../utils.py:202
-+#, python-format
-+msgid "Yum Error: %s"
-+msgstr "Error do Yum: %s"
-+
-+#: ../utils.py:235 ../yummain.py:42
- msgid ""
- "\n"
- "\n"
-@@ -1122,8 +1266,7 @@ msgstr ""
- "\n"
- "Saindo pelo cancelamento do usuário"
-
--#: ../utils.py:143
--#: ../yummain.py:48
-+#: ../utils.py:241 ../yummain.py:48
- msgid ""
- "\n"
- "\n"
-@@ -1133,8 +1276,7 @@ msgstr ""
- "\n"
- "Saindo por um pipe defeituoso"
-
--#: ../utils.py:145
--#: ../yummain.py:50
-+#: ../utils.py:243 ../yummain.py:50
- #, python-format
- msgid ""
- "\n"
-@@ -1145,20 +1287,20 @@ msgstr ""
- "\n"
- "%s"
-
--#: ../utils.py:184
--#: ../yummain.py:273
-+#: ../utils.py:282 ../yummain.py:211
- msgid "Complete!"
- msgstr "Concluído!"
-
--#: ../yumcommands.py:42
-+#: ../yumcommands.py:43
- msgid "You need to be root to perform this command."
- msgstr "Você precisa ser root para executar este comando."
-
--#: ../yumcommands.py:49
-+#: ../yumcommands.py:50
- msgid ""
- "\n"
- "You have enabled checking of packages via GPG keys. This is a good thing. \n"
--"However, you do not have any GPG public keys installed. You need to download\n"
-+"However, you do not have any GPG public keys installed. You need to "
-+"download\n"
- "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"
-@@ -1171,8 +1313,10 @@ msgid ""
- "For more information contact your distribution or package provider.\n"
- msgstr ""
- "\n"
--"Você habilitou a verificação de pacotes através de chaves GPG. Isso é uma boa coisa.\n"
--"Entretanto, você não tem nenhuma chave GPG pública instalada. Você precisa baixar\n"
-+"Você habilitou a verificação de pacotes através de chaves GPG. Isso é uma "
-+"boa coisa.\n"
-+"Entretanto, você não tem nenhuma chave GPG pública instalada. Você precisa "
-+"baixar\n"
- "e instalar essas chaves para os pacotes que deseja instalar.\n"
- "Você pode fazer isso executando o comando:\n"
- " rpm --import public.gpg.key\n"
-@@ -1182,345 +1326,338 @@ msgstr ""
- " do repositório, a url da chave que você gostaria de usar\n"
- "para ele e o yum irá instalá-la para você.\n"
- "\n"
--"Para mais informações contate o fornecedor da sua distribuição ou do pacote.\n"
-+"Para mais informações contate o fornecedor da sua distribuição ou do "
-+"pacote.\n"
-
--#: ../yumcommands.py:69
-+#: ../yumcommands.py:70
- #, python-format
- msgid "Error: Need to pass a list of pkgs to %s"
- msgstr "Erro: É necessário passar uma lista de pacotes para %s"
-
--#: ../yumcommands.py:75
-+#: ../yumcommands.py:76
- msgid "Error: Need an item to match"
- msgstr "Erro: É necessário um item para corresponder"
-
--#: ../yumcommands.py:81
-+#: ../yumcommands.py:82
- msgid "Error: Need a group or list of groups"
- msgstr "Erro: É necessário um grupo ou uma lista de grupos"
-
--#: ../yumcommands.py:90
-+#: ../yumcommands.py:91
- #, python-format
- msgid "Error: clean requires an option: %s"
- msgstr "Erro: a limpeza requer uma opção: %s"
-
--#: ../yumcommands.py:95
-+#: ../yumcommands.py:96
- #, python-format
- msgid "Error: invalid clean argument: %r"
- msgstr "Erro: argumento de limpeza inválido: %r"
-
--#: ../yumcommands.py:108
-+#: ../yumcommands.py:109
- msgid "No argument to shell"
- msgstr "Nenhum argumento para o shell"
-
--#: ../yumcommands.py:110
-+#: ../yumcommands.py:111
- #, python-format
- msgid "Filename passed to shell: %s"
- msgstr "Nome de arquivo passado para o shell: %s"
-
--#: ../yumcommands.py:114
-+#: ../yumcommands.py:115
- #, python-format
- msgid "File %s given as argument to shell does not exist."
- msgstr "O arquivo %s, passado como um argumento para o shell, não existe."
-
--#: ../yumcommands.py:120
-+#: ../yumcommands.py:121
- msgid "Error: more than one file given as argument to shell."
- msgstr "Erro: mais de um arquivo passado como argumento para o shell."
-
--#: ../yumcommands.py:169
-+#: ../yumcommands.py:170
- msgid "PACKAGE..."
- msgstr "PACOTE..."
-
--#: ../yumcommands.py:172
-+#: ../yumcommands.py:173
- msgid "Install a package or packages on your system"
- msgstr "Instala um ou mais pacotes no seu sistema"
-
--#: ../yumcommands.py:180
-+#: ../yumcommands.py:181
- msgid "Setting up Install Process"
- msgstr "Configurando o processo de instalação"
-
--#: ../yumcommands.py:191
-+#: ../yumcommands.py:192
- msgid "[PACKAGE...]"
- msgstr "[PACOTE...]"
-
--#: ../yumcommands.py:194
-+#: ../yumcommands.py:195
- msgid "Update a package or packages on your system"
- msgstr "Atualiza um ou mais pacotes do seu sistema"
-
--#: ../yumcommands.py:201
-+#: ../yumcommands.py:202
- msgid "Setting up Update Process"
- msgstr "Configurando o processo de atualização"
-
--#: ../yumcommands.py:246
-+#: ../yumcommands.py:244
- msgid "Display details about a package or group of packages"
- msgstr "Mostra detalhes sobre um pacote ou grupos de pacotes"
-
--#: ../yumcommands.py:295
-+#: ../yumcommands.py:293
- msgid "Installed Packages"
- msgstr "Pacotes instalados"
-
--#: ../yumcommands.py:303
-+#: ../yumcommands.py:301
- msgid "Available Packages"
- msgstr "Pacotes disponíveis"
-
--#: ../yumcommands.py:307
-+#: ../yumcommands.py:305
- msgid "Extra Packages"
- msgstr "Pacotes extras"
-
--#: ../yumcommands.py:311
-+#: ../yumcommands.py:309
- msgid "Updated Packages"
- msgstr "Pacotes atualizados"
-
- #. This only happens in verbose mode
--#: ../yumcommands.py:319
--#: ../yumcommands.py:326
--#: ../yumcommands.py:603
-+#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
- msgid "Obsoleting Packages"
- msgstr "Tornando pacotes obsoletos"
-
--#: ../yumcommands.py:328
-+#: ../yumcommands.py:326
- msgid "Recently Added Packages"
- msgstr "Pacotes adicionados recentemente"
-
--#: ../yumcommands.py:335
-+#: ../yumcommands.py:333
- msgid "No matching Packages to list"
- msgstr "Nenhum pacote correspondente a ser listado"
-
--#: ../yumcommands.py:349
-+#: ../yumcommands.py:347
- msgid "List a package or groups of packages"
- msgstr "Lista um pacote ou grupos de pacotes"
-
--#: ../yumcommands.py:361
-+#: ../yumcommands.py:359
- msgid "Remove a package or packages from your system"
- msgstr "Remove um ou mais pacotes do seu sistema"
-
--#: ../yumcommands.py:368
-+#: ../yumcommands.py:366
- msgid "Setting up Remove Process"
- msgstr "Configurando o processo de remoção"
-
--#: ../yumcommands.py:382
-+#: ../yumcommands.py:380
- msgid "Setting up Group Process"
- msgstr "Configurando o processo de grupos"
-
--#: ../yumcommands.py:388
-+#: ../yumcommands.py:386
- msgid "No Groups on which to run command"
- msgstr "Não há grupos nos quais executar o comando"
-
--#: ../yumcommands.py:401
-+#: ../yumcommands.py:399
- msgid "List available package groups"
- msgstr "Lista os grupos de pacotes disponíveis"
-
--#: ../yumcommands.py:418
-+#: ../yumcommands.py:416
- msgid "Install the packages in a group on your system"
- msgstr "Instala pacotes em um grupo ou no seu sistema"
-
--#: ../yumcommands.py:440
-+#: ../yumcommands.py:438
- msgid "Remove the packages in a group from your system"
- msgstr "Remove pacotes de um grupo ou do seu sistema"
-
--#: ../yumcommands.py:467
-+#: ../yumcommands.py:465
- msgid "Display details about a package group"
- msgstr "Mostra detalhes sobre um grupo de pacotes"
-
--#: ../yumcommands.py:491
-+#: ../yumcommands.py:489
- msgid "Generate the metadata cache"
- msgstr "Gera o cache de metadados"
-
--#: ../yumcommands.py:497
-+#: ../yumcommands.py:495
- msgid "Making cache files for all metadata files."
- msgstr "Realizando cache de arquivos para todos os metadados."
-
--#: ../yumcommands.py:498
-+#: ../yumcommands.py:496
- msgid "This may take a while depending on the speed of this computer"
- msgstr "Isso pode demorar um pouco, dependendo da velocidade deste computador"
-
--#: ../yumcommands.py:519
-+#: ../yumcommands.py:517
- msgid "Metadata Cache Created"
- msgstr "Cache de metadados criado"
-
--#: ../yumcommands.py:533
-+#: ../yumcommands.py:531
- msgid "Remove cached data"
- msgstr "Remove os dados do cache"
-
--#: ../yumcommands.py:553
-+#: ../yumcommands.py:551
- msgid "Find what package provides the given value"
- msgstr "Localiza qual pacote fornece o valor dado"
-
--#: ../yumcommands.py:573
-+#: ../yumcommands.py:571
- msgid "Check for available package updates"
- msgstr "Verifica por atualizações de pacotes disponíveis"
-
--#: ../yumcommands.py:623
-+#: ../yumcommands.py:621
- msgid "Search package details for the given string"
- msgstr "Pesquisa detalhes do pacote para a string fornecida"
-
--#: ../yumcommands.py:629
-+#: ../yumcommands.py:627
- msgid "Searching Packages: "
- msgstr "Pesquisando por pacotes:"
-
--#: ../yumcommands.py:646
-+#: ../yumcommands.py:644
- msgid "Update packages taking obsoletes into account"
- msgstr "Atualiza pacotes levando em conta os obsoletos"
-
--#: ../yumcommands.py:654
-+#: ../yumcommands.py:652
- msgid "Setting up Upgrade Process"
- msgstr "Configurando o processo de atualização"
-
--#: ../yumcommands.py:668
-+#: ../yumcommands.py:666
- msgid "Install a local RPM"
- msgstr "Instala um RPM local"
-
--#: ../yumcommands.py:676
-+#: ../yumcommands.py:674
- msgid "Setting up Local Package Process"
- msgstr "Configurando o processo de pacote local"
-
--#: ../yumcommands.py:695
-+#: ../yumcommands.py:693
- msgid "Determine which package provides the given dependency"
- msgstr "Determina qual pacote fornece a dependência dada"
-
--#: ../yumcommands.py:698
-+#: ../yumcommands.py:696
- msgid "Searching Packages for Dependency:"
- msgstr "Pesquisando pacotes por dependência:"
-
--#: ../yumcommands.py:712
-+#: ../yumcommands.py:710
- msgid "Run an interactive yum shell"
- msgstr "Executa um shell interativo do yum"
-
--#: ../yumcommands.py:718
-+#: ../yumcommands.py:716
- msgid "Setting up Yum Shell"
- msgstr "Configurando o shell do Yum"
-
--#: ../yumcommands.py:736
-+#: ../yumcommands.py:734
- msgid "List a package's dependencies"
- msgstr "Lista as dependências de um pacote"
-
--#: ../yumcommands.py:742
-+#: ../yumcommands.py:740
- msgid "Finding dependencies: "
- msgstr "Localizando dependências:"
-
--#: ../yumcommands.py:758
-+#: ../yumcommands.py:756
- msgid "Display the configured software repositories"
- msgstr "Exibe os repositórios de software configurados"
-
--#: ../yumcommands.py:810
--#: ../yumcommands.py:811
-+#: ../yumcommands.py:822 ../yumcommands.py:823
- msgid "enabled"
- msgstr "habilitado"
-
--#: ../yumcommands.py:819
--#: ../yumcommands.py:820
-+#: ../yumcommands.py:849 ../yumcommands.py:850
- msgid "disabled"
- msgstr "desabilitado"
-
--#: ../yumcommands.py:834
-+#: ../yumcommands.py:866
- msgid "Repo-id : "
- msgstr "Repo-id : "
-
--#: ../yumcommands.py:835
-+#: ../yumcommands.py:867
- msgid "Repo-name : "
- msgstr "Repo-name : "
-
--#: ../yumcommands.py:836
-+#: ../yumcommands.py:870
- msgid "Repo-status : "
- msgstr "Repo-status : "
-
--#: ../yumcommands.py:838
-+#: ../yumcommands.py:873
- msgid "Repo-revision: "
- msgstr "Repo-revision: "
-
--#: ../yumcommands.py:842
-+#: ../yumcommands.py:877
- msgid "Repo-tags : "
- msgstr "Repo-tags : "
-
--#: ../yumcommands.py:848
-+#: ../yumcommands.py:883
- msgid "Repo-distro-tags: "
- msgstr "Repo-distro-tags: "
-
--#: ../yumcommands.py:853
-+#: ../yumcommands.py:888
- msgid "Repo-updated : "
- msgstr "Repo-updated : "
-
--#: ../yumcommands.py:855
-+#: ../yumcommands.py:890
- msgid "Repo-pkgs : "
- msgstr "Repo-pkgs : "
-
--#: ../yumcommands.py:856
-+#: ../yumcommands.py:891
- msgid "Repo-size : "
- msgstr "Repo-size : "
-
--#: ../yumcommands.py:863
-+#: ../yumcommands.py:898
- msgid "Repo-baseurl : "
- msgstr "Repo-baseurl : "
-
--#: ../yumcommands.py:871
-+#: ../yumcommands.py:906
- msgid "Repo-metalink: "
- msgstr "Repo-metalink: "
-
--#: ../yumcommands.py:875
-+#: ../yumcommands.py:910
- msgid " Updated : "
- msgstr " Atualizados :"
-
--#: ../yumcommands.py:878
-+#: ../yumcommands.py:913
- msgid "Repo-mirrors : "
- msgstr "Repo-mirrors : "
-
--#: ../yumcommands.py:882
--#: ../yummain.py:133
--msgid "Unknown"
--msgstr "Desconhecido"
--
--#: ../yumcommands.py:888
-+#: ../yumcommands.py:923
- #, python-format
- msgid "Never (last: %s)"
- msgstr "Nunca (último: %s)"
-
--#: ../yumcommands.py:890
-+#: ../yumcommands.py:925
- #, python-format
- msgid "Instant (last: %s)"
- msgstr "Instante (último: %s)"
-
--#: ../yumcommands.py:893
-+#: ../yumcommands.py:928
- #, python-format
- msgid "%s second(s) (last: %s)"
- msgstr "%s segundo(s) (último: %s)"
-
--#: ../yumcommands.py:895
-+#: ../yumcommands.py:930
- msgid "Repo-expire : "
- msgstr "Repo-expire : "
-
--#: ../yumcommands.py:898
-+#: ../yumcommands.py:933
- msgid "Repo-exclude : "
- msgstr "Repo-exclude : "
-
--#: ../yumcommands.py:902
-+#: ../yumcommands.py:937
- msgid "Repo-include : "
- msgstr "Repo-include : "
-
-+#: ../yumcommands.py:941
-+msgid "Repo-excluded: "
-+msgstr "Repo-excluded: "
-+
- #. Work out the first (id) and last (enabled/disalbed/count),
- #. then chop the middle (name)...
--#: ../yumcommands.py:912
--#: ../yumcommands.py:938
-+#: ../yumcommands.py:951 ../yumcommands.py:980
- msgid "repo id"
- msgstr "id do repo"
-
--#: ../yumcommands.py:926
--#: ../yumcommands.py:927
--#: ../yumcommands.py:941
-+#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
- msgid "status"
- msgstr "status"
-
--#: ../yumcommands.py:939
-+#: ../yumcommands.py:981
- msgid "repo name"
- msgstr "nome do repo"
-
--#: ../yumcommands.py:965
-+#: ../yumcommands.py:1018
- msgid "Display a helpful usage message"
- msgstr "Exibe uma mensagem de uso para ajuda"
-
--#: ../yumcommands.py:999
-+#: ../yumcommands.py:1052
- #, python-format
- msgid "No help available for %s"
- msgstr "Nenhuma ajuda disponível para %s"
-
--#: ../yumcommands.py:1004
-+#: ../yumcommands.py:1057
- msgid ""
- "\n"
- "\n"
-@@ -1530,7 +1667,7 @@ msgstr ""
- "\n"
- "apelidos: "
-
--#: ../yumcommands.py:1006
-+#: ../yumcommands.py:1059
- msgid ""
- "\n"
- "\n"
-@@ -1540,143 +1677,99 @@ msgstr ""
- "\n"
- "apelido: "
-
--#: ../yumcommands.py:1034
-+#: ../yumcommands.py:1087
- msgid "Setting up Reinstall Process"
- msgstr "Configurando o processo de reinstalação"
-
--#: ../yumcommands.py:1042
-+#: ../yumcommands.py:1095
- msgid "reinstall a package"
- msgstr "reinstala um pacote"
-
--#: ../yumcommands.py:1060
-+#: ../yumcommands.py:1113
- msgid "Setting up Downgrade Process"
- msgstr "Configurando o processo de retrocesso"
-
--#: ../yumcommands.py:1067
-+#: ../yumcommands.py:1120
- msgid "downgrade a package"
- msgstr "retrocedendo um pacote"
-
--#: ../yumcommands.py:1081
-+#: ../yumcommands.py:1134
- msgid "Display a version for the machine and/or available repos."
- msgstr "Exibe uma versão para a máquina e/ou os repositórios disponíveis."
-
--#: ../yumcommands.py:1111
-+#: ../yumcommands.py:1173
- msgid " Yum version groups:"
- msgstr " Grupos da versão do Yum:"
-
--#: ../yumcommands.py:1121
-+#: ../yumcommands.py:1183
- msgid " Group :"
- msgstr " Grupo:"
-
--#: ../yumcommands.py:1122
-+#: ../yumcommands.py:1184
- msgid " Packages:"
- msgstr " Pacotes:"
-
--#: ../yumcommands.py:1152
-+#: ../yumcommands.py:1213
- msgid "Installed:"
- msgstr "Instalados:"
-
--#: ../yumcommands.py:1157
-+#: ../yumcommands.py:1218
- msgid "Group-Installed:"
- msgstr "Grupos instalados:"
-
--#: ../yumcommands.py:1166
-+#: ../yumcommands.py:1227
- msgid "Available:"
- msgstr "Disponíveis:"
-
--#: ../yumcommands.py:1172
-+#: ../yumcommands.py:1233
- msgid "Group-Available:"
- msgstr "Grupos disponíveis:"
-
--#: ../yumcommands.py:1211
-+#: ../yumcommands.py:1272
- msgid "Display, or use, the transaction history"
- msgstr "Exibir ou usar o histórico de transações"
-
--#: ../yumcommands.py:1239
-+#: ../yumcommands.py:1300
- #, python-format
- msgid "Invalid history sub-command, use: %s."
- msgstr "Subcomando de histórico inválido, use: %s."
-
--#: ../yummain.py:128
--msgid "Running"
--msgstr "Executando"
--
--#: ../yummain.py:129
--msgid "Sleeping"
--msgstr "Dormindo"
--
--#: ../yummain.py:130
--msgid "Uninteruptable"
--msgstr "Ininterrompível"
--
--#: ../yummain.py:131
--msgid "Zombie"
--msgstr "Zumbi"
--
--#: ../yummain.py:132
--msgid "Traced/Stopped"
--msgstr "Rastreado/Parado"
--
--#: ../yummain.py:137
--msgid " The other application is: PackageKit"
--msgstr " O outro aplicativo é: PackageKit"
--
--#: ../yummain.py:139
--#, python-format
--msgid " The other application is: %s"
--msgstr " O outro aplicativo é: %s"
--
--#: ../yummain.py:142
--#, python-format
--msgid " Memory : %5s RSS (%5sB VSZ)"
--msgstr " Memória: %5s RSS (%5sB VSZ)"
--
--#: ../yummain.py:146
--#, python-format
--msgid " Started: %s - %s ago"
--msgstr " Iniciado: %s - %s atrás"
--
--#: ../yummain.py:148
--#, python-format
--msgid " State : %s, pid: %d"
--msgstr " Estado: %s, pid: %d"
-+#: ../yumcommands.py:1345
-+msgid "Check for problems in the rpmdb"
-+msgstr "Procurar por problemas no rpmdb"
-
--#: ../yummain.py:173
--msgid "Another app is currently holding the yum lock; waiting for it to exit..."
--msgstr "Outro aplicativo está retendo o bloqueio do yum; esperando por ele para sair..."
-+#: ../yummain.py:102
-+msgid ""
-+"Another app is currently holding the yum lock; waiting for it to exit..."
-+msgstr ""
-+"Outro aplicativo está retendo o bloqueio do yum; esperando por ele para "
-+"sair..."
-
--#: ../yummain.py:201
--#: ../yummain.py:240
-+#: ../yummain.py:130 ../yummain.py:169
- #, python-format
- msgid "Error: %s"
- msgstr "Error: %s"
-
--#: ../yummain.py:211
--#: ../yummain.py:253
-+#: ../yummain.py:140 ../yummain.py:182
- #, python-format
- msgid "Unknown Error(s): Exit Code: %d:"
- msgstr "Erro(s) desconhecido(s): código de saída: %d:"
-
- #. Depsolve stage
--#: ../yummain.py:218
-+#: ../yummain.py:147
- msgid "Resolving Dependencies"
- msgstr "Resolvendo dependências"
-
--#: ../yummain.py:242
-+#: ../yummain.py:173
- msgid " You could try using --skip-broken to work around the problem"
--msgstr " Você pode tentar usar o parâmetro --skip-broken para contornar o problema"
--
--#: ../yummain.py:243
--msgid ""
--" You could try running: package-cleanup --problems\n"
--" package-cleanup --dupes\n"
--" rpm -Va --nofiles --nodigest"
- msgstr ""
--" Você pode tentar executar: package-cleanup --problems\n"
--" package-cleanup --dupes\n"
--" rpm -Va --nofiles --nodigest"
-+" Você pode tentar usar o parâmetro --skip-broken para contornar o problema"
-+
-+#: ../yummain.py:175 ../yummain.py:208
-+msgid " You could try running: rpm -Va --nofiles --nodigest"
-+msgstr " Você pode tentar executar: rpm -Va --nofiles --nodigest"
-
--#: ../yummain.py:259
-+#: ../yummain.py:188
- msgid ""
- "\n"
- "Dependencies Resolved"
-@@ -1684,7 +1777,7 @@ msgstr ""
- "\n"
- "Dependências resolvidas"
-
--#: ../yummain.py:326
-+#: ../yummain.py:265
- msgid ""
- "\n"
- "\n"
-@@ -1700,7 +1793,8 @@ msgstr "doTsSetup() será removida em uma futura versão do Yum.\n"
-
- #: ../yum/depsolve.py:97
- msgid "Setting up TransactionSets before config class is up"
--msgstr "Configurando TransactionSets antes da ativação da classe de configuração"
-+msgstr ""
-+"Configurando TransactionSets antes da ativação da classe de configuração"
-
- #: ../yum/depsolve.py:148
- #, python-format
-@@ -1722,173 +1816,165 @@ msgstr "Correspondência potencial para o %s a partir de %s"
- msgid "Matched %s to require for %s"
- msgstr "%s encontrado para solicitar o %s"
-
--#: ../yum/depsolve.py:224
-+#: ../yum/depsolve.py:225
- #, python-format
- msgid "Member: %s"
- msgstr "Membro: %s"
-
--#: ../yum/depsolve.py:238
--#: ../yum/depsolve.py:749
-+#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
- #, python-format
- msgid "%s converted to install"
- msgstr "%s convertido para instalar"
-
--#: ../yum/depsolve.py:245
-+#: ../yum/depsolve.py:246
- #, python-format
- msgid "Adding Package %s in mode %s"
- msgstr "Adicionando pacote %s no modo %s"
-
--#: ../yum/depsolve.py:255
-+#: ../yum/depsolve.py:256
- #, python-format
- msgid "Removing Package %s"
- msgstr "Removendo pacote %s"
-
--#: ../yum/depsolve.py:277
-+#: ../yum/depsolve.py:278
- #, python-format
- msgid "%s requires: %s"
- msgstr "%s requer: %s"
-
--#: ../yum/depsolve.py:335
-+#: ../yum/depsolve.py:319
-+#, python-format
-+msgid "%s requires %s"
-+msgstr "%s requer %s"
-+
-+#: ../yum/depsolve.py:346
- msgid "Needed Require has already been looked up, cheating"
- msgstr "O requerimento necessário já foi localizado, enganando"
-
--#: ../yum/depsolve.py:345
-+#: ../yum/depsolve.py:356
- #, python-format
- msgid "Needed Require is not a package name. Looking up: %s"
- msgstr "O requerimento necessário não é o nome de um pacote. Localizando: %s"
-
--#: ../yum/depsolve.py:352
-+#: ../yum/depsolve.py:363
- #, python-format
- msgid "Potential Provider: %s"
- msgstr "Fornecedor em potencial: %s"
-
--#: ../yum/depsolve.py:375
-+#: ../yum/depsolve.py:386
- #, python-format
- msgid "Mode is %s for provider of %s: %s"
- msgstr "O modo é %s para o fornecedor do %s: %s"
-
--#: ../yum/depsolve.py:379
-+#: ../yum/depsolve.py:390
- #, python-format
- msgid "Mode for pkg providing %s: %s"
- msgstr "Modo para o pacote que fornece o %s: %s"
-
--#: ../yum/depsolve.py:383
-+#: ../yum/depsolve.py:394
- #, python-format
- msgid "TSINFO: %s package requiring %s marked as erase"
- msgstr "TSINFO: o pacote %s que requer o %s foi marcado para remoção"
-
--#: ../yum/depsolve.py:396
-+#: ../yum/depsolve.py:407
- #, python-format
- msgid "TSINFO: Obsoleting %s with %s to resolve dep."
- msgstr "TSINFO: Tornando %s obsoleto com o %s para resolver a dependência."
-
--#: ../yum/depsolve.py:399
-+#: ../yum/depsolve.py:410
- #, python-format
- msgid "TSINFO: Updating %s to resolve dep."
- msgstr "TSINFO: Atualizando %s para resolver a dependência."
-
--#: ../yum/depsolve.py:407
-+#: ../yum/depsolve.py:418
- #, python-format
- msgid "Cannot find an update path for dep for: %s"
--msgstr "Não foi possível encontrar um caminho de atualização para a dep. para: %s"
--
--#: ../yum/depsolve.py:417
--#, python-format
--msgid "Unresolvable requirement %s for %s"
--msgstr "Requerimento %s insolúvel para o %s"
-+msgstr ""
-+"Não foi possível encontrar um caminho de atualização para a dep. para: %s"
-
--#: ../yum/depsolve.py:440
-+#: ../yum/depsolve.py:449
- #, python-format
- msgid "Quick matched %s to require for %s"
- msgstr "%s localizado rapidamente a ser requerido por %s"
-
- #. is it already installed?
--#: ../yum/depsolve.py:482
-+#: ../yum/depsolve.py:491
- #, python-format
- msgid "%s is in providing packages but it is already installed, removing."
- msgstr "%s está nos pacotes fornecedores mas já está instalado, removendo."
-
--#: ../yum/depsolve.py:498
-+#: ../yum/depsolve.py:507
- #, python-format
- msgid "Potential resolving package %s has newer instance in ts."
- msgstr "O pacote de solução em potencial %s tem uma instância mais nova no ct."
-
--#: ../yum/depsolve.py:509
-+#: ../yum/depsolve.py:518
- #, python-format
- msgid "Potential resolving package %s has newer instance installed."
--msgstr "O pacote de solução em potencial %s tem uma instância mais nova instalada."
--
--#: ../yum/depsolve.py:517
--#: ../yum/depsolve.py:563
--#, python-format
--msgid "Missing Dependency: %s is needed by package %s"
--msgstr "Dependência faltando: %s é requerido pelo pacote %s"
-+msgstr ""
-+"O pacote de solução em potencial %s tem uma instância mais nova instalada."
-
--#: ../yum/depsolve.py:530
-+#: ../yum/depsolve.py:536
- #, python-format
- msgid "%s already in ts, skipping this one"
- msgstr "%s já está no ct, pulando esse"
-
--#: ../yum/depsolve.py:573
-+#: ../yum/depsolve.py:578
- #, python-format
- msgid "TSINFO: Marking %s as update for %s"
- msgstr "TSINFO: Marcando %s como uma atualização para o %s"
-
--#: ../yum/depsolve.py:581
-+#: ../yum/depsolve.py:586
- #, python-format
- msgid "TSINFO: Marking %s as install for %s"
- msgstr "TSINFO: Marcando %s como uma instalação para o %s"
-
--#: ../yum/depsolve.py:685
--#: ../yum/depsolve.py:767
-+#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
- msgid "Success - empty transaction"
- msgstr "Sucesso - transação vazia"
-
--#: ../yum/depsolve.py:724
--#: ../yum/depsolve.py:739
-+#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
- msgid "Restarting Loop"
- msgstr "Reiniciando o loop"
-
--#: ../yum/depsolve.py:755
-+#: ../yum/depsolve.py:760
- msgid "Dependency Process ending"
- msgstr "Término do processo de dependências"
-
--#: ../yum/depsolve.py:761
-+#: ../yum/depsolve.py:774
- #, python-format
- msgid "%s from %s has depsolving problems"
- msgstr "%s a partir de %s tem problemas de resolução de dependências"
-
--#: ../yum/depsolve.py:768
-+#: ../yum/depsolve.py:782
- msgid "Success - deps resolved"
- msgstr "Sucesso - dependências resolvidas"
-
--#: ../yum/depsolve.py:782
-+#: ../yum/depsolve.py:796
- #, python-format
- msgid "Checking deps for %s"
- msgstr "Verificando dependências para %s"
-
--#: ../yum/depsolve.py:865
-+#: ../yum/depsolve.py:874
- #, python-format
- msgid "looking for %s as a requirement of %s"
- msgstr "procurando por %s como um requerimento do %s"
-
--#: ../yum/depsolve.py:1007
-+#: ../yum/depsolve.py:1090
- #, python-format
- msgid "Running compare_providers() for %s"
- msgstr "Executando compare_providers() para %s"
-
--#: ../yum/depsolve.py:1041
--#: ../yum/depsolve.py:1047
-+#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
- #, python-format
- msgid "better arch in po %s"
- msgstr "melhor arquitetura no po %s"
-
--#: ../yum/depsolve.py:1142
-+#: ../yum/depsolve.py:1218
- #, python-format
- msgid "%s obsoletes %s"
- msgstr "%s torna %s obsoleto"
-
--#: ../yum/depsolve.py:1154
-+#: ../yum/depsolve.py:1230
- #, python-format
- msgid ""
- "archdist compared %s to %s on %s\n"
-@@ -1897,117 +1983,141 @@ msgstr ""
- "archdist comparou %s com %s em %s\n"
- " Vencedor: %s"
-
--#: ../yum/depsolve.py:1161
-+#: ../yum/depsolve.py:1237
- #, python-format
- msgid "common sourcerpm %s and %s"
- msgstr "Sourcerpm comum %s e %s"
-
--#: ../yum/depsolve.py:1167
-+#: ../yum/depsolve.py:1241
-+#, python-format
-+msgid "base package %s is installed for %s"
-+msgstr "o pacote base %s está instalado para o %s"
-+
-+#: ../yum/depsolve.py:1247
- #, python-format
- msgid "common prefix of %s between %s and %s"
- msgstr "prefixo comum de %s entre %s e %s"
-
--#: ../yum/depsolve.py:1175
-+#: ../yum/depsolve.py:1256
- #, python-format
- msgid "Best Order: %s"
- msgstr "Melhor ordem: %s"
-
--#: ../yum/__init__.py:187
-+#: ../yum/__init__.py:192
- msgid "doConfigSetup() will go away in a future version of Yum.\n"
- msgstr "doConfigSetup() será removida em uma futura versão do Yum.\n"
-
--#: ../yum/__init__.py:412
-+#: ../yum/__init__.py:424
- #, python-format
- msgid "Repository %r is missing name in configuration, using id"
- msgstr "O repositório %r não tem nome na configuração, usando o id"
-
--#: ../yum/__init__.py:450
-+#: ../yum/__init__.py:462
- msgid "plugins already initialised"
- msgstr "plugins já inicializados"
-
--#: ../yum/__init__.py:457
-+#: ../yum/__init__.py:469
- msgid "doRpmDBSetup() will go away in a future version of Yum.\n"
- msgstr "doRpmDBSetup() será removida em uma futura versão do Yum.\n"
-
--#: ../yum/__init__.py:468
-+#: ../yum/__init__.py:480
- msgid "Reading Local RPMDB"
- msgstr "Lendo RPMDB local"
-
--#: ../yum/__init__.py:489
-+#: ../yum/__init__.py:504
- msgid "doRepoSetup() will go away in a future version of Yum.\n"
- msgstr "doRepoSetup() será removida em uma futura versão do Yum.\n"
-
--#: ../yum/__init__.py:509
-+#: ../yum/__init__.py:524
- msgid "doSackSetup() will go away in a future version of Yum.\n"
- msgstr "doSackSetup() será removida em uma futura versão do Yum.\n"
-
--#: ../yum/__init__.py:539
-+#: ../yum/__init__.py:554
- msgid "Setting up Package Sacks"
- msgstr "Configurando sacos de pacotes"
-
--#: ../yum/__init__.py:584
-+#: ../yum/__init__.py:599
- #, python-format
- msgid "repo object for repo %s lacks a _resetSack method\n"
- msgstr "o objeto de repositório para o %s necessita de um método _resetSack\n"
-
--#: ../yum/__init__.py:585
-+#: ../yum/__init__.py:600
- msgid "therefore this repo cannot be reset.\n"
- msgstr "conseqüentemente este repo não pode ser restaurado.\n"
-
--#: ../yum/__init__.py:590
-+#: ../yum/__init__.py:605
- msgid "doUpdateSetup() will go away in a future version of Yum.\n"
- msgstr "doUpdateSetup() será removida em uma futura versão do Yum.\n"
-
--#: ../yum/__init__.py:602
-+#: ../yum/__init__.py:617
- msgid "Building updates object"
- msgstr "Construindo objeto de atualizações"
-
--#: ../yum/__init__.py:637
-+#: ../yum/__init__.py:652
- msgid "doGroupSetup() will go away in a future version of Yum.\n"
- msgstr "doGroupSetup() será removida em uma futura versão do Yum.\n"
-
--#: ../yum/__init__.py:662
-+#: ../yum/__init__.py:677
- msgid "Getting group metadata"
- msgstr "Obtendo metadados do grupo"
-
--#: ../yum/__init__.py:688
-+#: ../yum/__init__.py:703
- #, python-format
- msgid "Adding group file from repository: %s"
- msgstr "Adicionando arquivo de grupo a partir do repositório: %s"
-
--#: ../yum/__init__.py:697
-+#: ../yum/__init__.py:712
- #, python-format
- msgid "Failed to add groups file for repository: %s - %s"
- msgstr "Falha ao adicionar o arquivo de grupos para o repositório: %s - %s"
-
--#: ../yum/__init__.py:703
-+#: ../yum/__init__.py:718
- msgid "No Groups Available in any repository"
- msgstr "Nenhum grupo disponível em nenhum repositório"
-
--#: ../yum/__init__.py:763
-+#: ../yum/__init__.py:730
-+msgid "Getting pkgtags metadata"
-+msgstr "Obtendo metadados do pkgtags"
-+
-+#: ../yum/__init__.py:740
-+#, python-format
-+msgid "Adding tags from repository: %s"
-+msgstr "Adicionando tags do repositório: %s"
-+
-+#: ../yum/__init__.py:749
-+#, python-format
-+msgid "Failed to add Pkg Tags for repository: %s - %s"
-+msgstr "Falha ao adicionar as Pkg Tags para o repositório: %s - %s"
-+
-+#: ../yum/__init__.py:827
- msgid "Importing additional filelist information"
- msgstr "Importando informações adicionais da lista de arquivos"
-
--#: ../yum/__init__.py:777
-+#: ../yum/__init__.py:841
- #, python-format
- msgid "The program %s%s%s is found in the yum-utils package."
- msgstr "O programa %s%s%s está localizado no pacote yum-utils."
-
--#: ../yum/__init__.py:785
--msgid "There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them."
--msgstr "Há transações não finalizadas restantes. Você pode considerar executar o yum-complete-transaction primeiro para finalizá-las."
-+#: ../yum/__init__.py:849
-+msgid ""
-+"There are unfinished transactions remaining. You might consider running yum-"
-+"complete-transaction first to finish them."
-+msgstr ""
-+"Há transações não finalizadas restantes. Você pode considerar executar o yum-"
-+"complete-transaction primeiro para finalizá-las."
-
--#: ../yum/__init__.py:853
-+#. Kind of hacky
-+#: ../yum/__init__.py:922
- #, python-format
- msgid "Skip-broken round %i"
- msgstr "Rodada de ignoração de dependências quebradas %i"
-
--#: ../yum/__init__.py:906
-+#: ../yum/__init__.py:975
- #, python-format
- msgid "Skip-broken took %i rounds "
- msgstr "A ignoração de dependências quebradas levou %i rodadas"
-
--#: ../yum/__init__.py:907
-+#: ../yum/__init__.py:976
- msgid ""
- "\n"
- "Packages skipped because of dependency problems:"
-@@ -2015,76 +2125,93 @@ msgstr ""
- "\n"
- "Pacotes ignorados devido a problemas de dependências:"
-
--#: ../yum/__init__.py:911
-+#: ../yum/__init__.py:980
- #, python-format
- msgid " %s from %s"
- msgstr " %s a partir de %s"
-
--#: ../yum/__init__.py:1083
--msgid "Warning: scriptlet or other non-fatal errors occurred during transaction."
--msgstr "Aviso: scriptlet ou outros erros não fatais ocorreram durante a transação."
-+#: ../yum/__init__.py:1121
-+msgid "Warning: RPMDB altered outside of yum."
-+msgstr "Aviso: o RPMDB foi alterado de fora do yum."
-
--#: ../yum/__init__.py:1101
-+#: ../yum/__init__.py:1126
-+msgid "missing requires"
-+msgstr "faltando exigências"
-+
-+#: ../yum/__init__.py:1127
-+msgid "installed conflict"
-+msgstr "conflito instalado"
-+
-+#: ../yum/__init__.py:1180
-+msgid ""
-+"Warning: scriptlet or other non-fatal errors occurred during transaction."
-+msgstr ""
-+"Aviso: scriptlet ou outros erros não fatais ocorreram durante a transação."
-+
-+#: ../yum/__init__.py:1198
- #, python-format
- msgid "Failed to remove transaction file %s"
- msgstr "Falha ao remover o arquivo de transação %s"
-
- #. maybe a file log here, too
- #. but raising an exception is not going to do any good
--#: ../yum/__init__.py:1130
-+#: ../yum/__init__.py:1227
- #, python-format
- msgid "%s was supposed to be installed but is not!"
- msgstr "%s deveria ter sido instalado mas não foi!"
-
- #. maybe a file log here, too
- #. but raising an exception is not going to do any good
--#: ../yum/__init__.py:1169
-+#: ../yum/__init__.py:1266
- #, python-format
- msgid "%s was supposed to be removed but is not!"
- msgstr "%s deveria ter sido removido mas não foi!"
-
- #. Whoa. What the heck happened?
--#: ../yum/__init__.py:1289
-+#: ../yum/__init__.py:1386
- #, python-format
- msgid "Unable to check if PID %s is active"
- msgstr "Não foi possível verificar se o PID %s está ativo"
-
- #. Another copy seems to be running.
--#: ../yum/__init__.py:1293
-+#: ../yum/__init__.py:1390
- #, python-format
- msgid "Existing lock %s: another copy is running as pid %s."
- msgstr "Bloqueio existente em %s: outra cópia está em execução com o pid %s."
-
- #. Whoa. What the heck happened?
--#: ../yum/__init__.py:1328
-+#: ../yum/__init__.py:1425
- #, python-format
- msgid "Could not create lock at %s: %s "
- msgstr "Não foi possível criar um bloqueio em %s: %s"
-
--#: ../yum/__init__.py:1373
--msgid "Package does not match intended download"
--msgstr "O pacote não corresponde ao download pretendido"
-+#: ../yum/__init__.py:1470
-+msgid ""
-+"Package does not match intended download. Suggestion: run yum clean metadata"
-+msgstr ""
-+"O pacote não corresponde ao download pretendido. Sugestão: execute yum clean "
-+"metadata"
-
--#: ../yum/__init__.py:1388
-+#: ../yum/__init__.py:1486
- msgid "Could not perform checksum"
- msgstr "Não foi possível realizar a soma de verificação"
-
--#: ../yum/__init__.py:1391
-+#: ../yum/__init__.py:1489
- msgid "Package does not match checksum"
- msgstr "O pacote não corresponde à soma de verificação"
-
--#: ../yum/__init__.py:1433
-+#: ../yum/__init__.py:1531
- #, python-format
- msgid "package fails checksum but caching is enabled for %s"
--msgstr "o pacote falhou na soma de verificação mas o cache está habilitado para o %s"
-+msgstr ""
-+"o pacote falhou na soma de verificação mas o cache está habilitado para o %s"
-
--#: ../yum/__init__.py:1436
--#: ../yum/__init__.py:1465
-+#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
- #, python-format
- msgid "using local copy of %s"
- msgstr "usando cópia local do %s"
-
--#: ../yum/__init__.py:1477
-+#: ../yum/__init__.py:1575
- #, python-format
- msgid ""
- "Insufficient space in download directory %s\n"
-@@ -2095,419 +2222,423 @@ msgstr ""
- " * livre %s\n"
- " * necessário %s"
-
--#: ../yum/__init__.py:1526
-+#: ../yum/__init__.py:1624
- msgid "Header is not complete."
- msgstr "O cabeçalho não está completo."
-
--#: ../yum/__init__.py:1563
-+#: ../yum/__init__.py:1661
- #, python-format
--msgid "Header not in local cache and caching-only mode enabled. Cannot download %s"
--msgstr "O cabeçalho não está no cache local e o modo de somente cache está habilitado. Não foi possível baixar o %s."
-+msgid ""
-+"Header not in local cache and caching-only mode enabled. Cannot download %s"
-+msgstr ""
-+"O cabeçalho não está no cache local e o modo de somente cache está "
-+"habilitado. Não foi possível baixar o %s."
-
--#: ../yum/__init__.py:1618
-+#: ../yum/__init__.py:1716
- #, python-format
- msgid "Public key for %s is not installed"
- msgstr "A chave pública para o %s não está instalada"
-
--#: ../yum/__init__.py:1622
-+#: ../yum/__init__.py:1720
- #, python-format
- msgid "Problem opening package %s"
- msgstr "Problema ao abrir o pacote %s"
-
--#: ../yum/__init__.py:1630
-+#: ../yum/__init__.py:1728
- #, python-format
- msgid "Public key for %s is not trusted"
- msgstr "A chave pública para o %s não é confiável"
-
--#: ../yum/__init__.py:1634
-+#: ../yum/__init__.py:1732
- #, python-format
- msgid "Package %s is not signed"
- msgstr "O pacote %s não está assinado"
-
--#: ../yum/__init__.py:1672
-+#: ../yum/__init__.py:1770
- #, python-format
- msgid "Cannot remove %s"
- msgstr "Não foi possível remover %s"
-
--#: ../yum/__init__.py:1676
-+#: ../yum/__init__.py:1774
- #, python-format
- msgid "%s removed"
- msgstr "%s removido"
-
--#: ../yum/__init__.py:1712
-+#: ../yum/__init__.py:1820
- #, python-format
- msgid "Cannot remove %s file %s"
- msgstr "Não foi possível remover %s arquivo %s"
-
--#: ../yum/__init__.py:1716
-+#: ../yum/__init__.py:1824
- #, python-format
- msgid "%s file %s removed"
- msgstr "%s arquivo %s removido"
-
--#: ../yum/__init__.py:1718
-+#: ../yum/__init__.py:1826
- #, python-format
- msgid "%d %s files removed"
- msgstr "%d %s arquivos removidos"
-
--#: ../yum/__init__.py:1787
-+#: ../yum/__init__.py:1895
- #, python-format
- msgid "More than one identical match in sack for %s"
- msgstr "Mais de uma correspondência idêntica no saco para %s"
-
--#: ../yum/__init__.py:1793
-+#: ../yum/__init__.py:1901
- #, python-format
- msgid "Nothing matches %s.%s %s:%s-%s from update"
- msgstr "Nada corresponde ao %s.%s %s:%s-%s a partir da atualização"
-
--#: ../yum/__init__.py:2026
--msgid "searchPackages() will go away in a future version of Yum. Use searchGenerator() instead. \n"
--msgstr "searchPackages() será removida em uma futura versão do Yum. Ao invés disso, use a searchGenerator().\n"
-+#: ../yum/__init__.py:2180
-+msgid ""
-+"searchPackages() will go away in a future version of "
-+"Yum. Use searchGenerator() instead. \n"
-+msgstr ""
-+"searchPackages() será removida em uma futura versão do Yum. Ao invés disso, "
-+"use a searchGenerator().\n"
-
--#: ../yum/__init__.py:2065
-+#: ../yum/__init__.py:2219
- #, python-format
- msgid "Searching %d packages"
- msgstr "Pesquisando por %d pacotes"
-
--#: ../yum/__init__.py:2069
-+#: ../yum/__init__.py:2223
- #, python-format
- msgid "searching package %s"
- msgstr "pesquisando pelo pacote %s"
-
--#: ../yum/__init__.py:2081
-+#: ../yum/__init__.py:2235
- msgid "searching in file entries"
- msgstr "pesquisando nas entradas do arquivo"
-
--#: ../yum/__init__.py:2088
-+#: ../yum/__init__.py:2242
- msgid "searching in provides entries"
- msgstr "pesquisando nas entradas dos fornecimentos"
-
--#: ../yum/__init__.py:2121
-+#: ../yum/__init__.py:2275
- #, python-format
- msgid "Provides-match: %s"
- msgstr "Fornecimento combina com: %s"
-
--#: ../yum/__init__.py:2170
-+#: ../yum/__init__.py:2324
- msgid "No group data available for configured repositories"
- msgstr "Nenhum dado de grupos disponível para os repositório configurados"
-
--#: ../yum/__init__.py:2201
--#: ../yum/__init__.py:2220
--#: ../yum/__init__.py:2251
--#: ../yum/__init__.py:2257
--#: ../yum/__init__.py:2336
--#: ../yum/__init__.py:2340
--#: ../yum/__init__.py:2655
-+#: ../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
- #, python-format
- msgid "No Group named %s exists"
- msgstr "Não existe nenhum grupo de nome %s"
-
--#: ../yum/__init__.py:2232
--#: ../yum/__init__.py:2353
-+#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
- #, python-format
- msgid "package %s was not marked in group %s"
- msgstr "o pacote %s não foi marcado no grupo %s"
-
--#: ../yum/__init__.py:2279
-+#: ../yum/__init__.py:2433
- #, python-format
- msgid "Adding package %s from group %s"
- msgstr "Adicionando o pacote %s do grupo %s"
-
--#: ../yum/__init__.py:2283
-+#: ../yum/__init__.py:2437
- #, python-format
- msgid "No package named %s available to be installed"
- msgstr "Nenhum pacote de nome %s disponível para ser instalado"
-
--#: ../yum/__init__.py:2380
-+#: ../yum/__init__.py:2539
- #, python-format
- msgid "Package tuple %s could not be found in packagesack"
- msgstr "A tupla %s do pacote não pôde ser encontrada no packagesack"
-
--#: ../yum/__init__.py:2399
-+#: ../yum/__init__.py:2558
- #, python-format
- msgid "Package tuple %s could not be found in rpmdb"
- msgstr "A tupla %s do pacote não pôde ser localizada no rpmdb"
-
--#: ../yum/__init__.py:2455
--#: ../yum/__init__.py:2505
-+#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
- msgid "Invalid version flag"
- msgstr "Sinalizador de versão inválido"
-
--#: ../yum/__init__.py:2475
--#: ../yum/__init__.py:2480
-+#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
- #, python-format
- msgid "No Package found for %s"
- msgstr "Nenhum pacote encontrado para %s"
-
--#: ../yum/__init__.py:2696
-+#: ../yum/__init__.py:2855
- msgid "Package Object was not a package object instance"
- msgstr "O pacote de objeto não era uma instância de pacote de objeto"
-
--#: ../yum/__init__.py:2700
-+#: ../yum/__init__.py:2859
- msgid "Nothing specified to install"
- msgstr "Nada especificado para instalar"
-
--#: ../yum/__init__.py:2716
--#: ../yum/__init__.py:3489
-+#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
- #, python-format
- msgid "Checking for virtual provide or file-provide for %s"
- msgstr "Verificando por fornecimento virtual ou de arquivo para %s"
-
--#: ../yum/__init__.py:2722
--#: ../yum/__init__.py:3037
--#: ../yum/__init__.py:3205
--#: ../yum/__init__.py:3495
-+#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:3658
- #, python-format
- msgid "No Match for argument: %s"
- msgstr "Nenhuma correspondência para o argumento: %s"
-
--#: ../yum/__init__.py:2798
-+#: ../yum/__init__.py:2957
- #, python-format
- msgid "Package %s installed and not available"
- msgstr "Pacote %s instalado, mas não disponível"
-
--#: ../yum/__init__.py:2801
-+#: ../yum/__init__.py:2960
- msgid "No package(s) available to install"
- msgstr "Nenhum pacote disponível para instalar"
-
--#: ../yum/__init__.py:2813
-+#: ../yum/__init__.py:2972
- #, python-format
- msgid "Package: %s - already in transaction set"
- msgstr "Pacote: %s - já está no conjunto de transações"
-
--#: ../yum/__init__.py:2839
-+#: ../yum/__init__.py:2998
- #, python-format
- msgid "Package %s is obsoleted by %s which is already installed"
- msgstr "O pacote %s foi tornado obsoleto pelo %s, o qual já está instalado"
-
--#: ../yum/__init__.py:2842
-+#: ../yum/__init__.py:3001
- #, python-format
- msgid "Package %s is obsoleted by %s, trying to install %s instead"
--msgstr "O pacote %s foi tornado obsoleto por %s, tentando instalar %s ao invés disso"
-+msgstr ""
-+"O pacote %s foi tornado obsoleto por %s, tentando instalar %s ao invés disso"
-
--#: ../yum/__init__.py:2850
-+#: ../yum/__init__.py:3009
- #, python-format
- msgid "Package %s already installed and latest version"
- msgstr "O pacote %s já está instalado em sua última versão"
-
--#: ../yum/__init__.py:2864
-+#: ../yum/__init__.py:3023
- #, python-format
- msgid "Package matching %s already installed. Checking for update."
- msgstr "O pacote %s já está instalado. Verificando por uma atualização."
-
- #. update everything (the easy case)
--#: ../yum/__init__.py:2966
-+#: ../yum/__init__.py:3126
- msgid "Updating Everything"
- msgstr "Atualizando tudo"
-
--#: ../yum/__init__.py:2987
--#: ../yum/__init__.py:3102
--#: ../yum/__init__.py:3129
--#: ../yum/__init__.py:3155
-+#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3315
- #, python-format
- msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
- msgstr "Pacote já obsoleto não será atualizado: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3022
--#: ../yum/__init__.py:3202
-+#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
- #, python-format
- msgid "%s"
- msgstr "%s"
-
--#: ../yum/__init__.py:3093
-+#: ../yum/__init__.py:3253
- #, python-format
- msgid "Package is already obsoleted: %s.%s %s:%s-%s"
- msgstr "O pacote já está obsoleto: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3124
-+#: ../yum/__init__.py:3284
- #, python-format
- msgid "Not Updating Package that is obsoleted: %s"
- msgstr "Não atualizando o pacote que está obsoleto: %s"
-
--#: ../yum/__init__.py:3133
--#: ../yum/__init__.py:3159
-+#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
- #, python-format
- msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
- msgstr "Pacote já atualizado não será atualizado novamente: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3218
-+#: ../yum/__init__.py:3378
- msgid "No package matched to remove"
- msgstr "Nenhum pacote encontrado para remoção"
-
--#: ../yum/__init__.py:3251
--#: ../yum/__init__.py:3349
--#: ../yum/__init__.py:3432
-+#: ../yum/__init__.py:3412
- #, python-format
--msgid "Cannot open file: %s. Skipping."
--msgstr "Não foi possível abrir o arquivo: %s. Ignorando."
-+msgid "Cannot open: %s. Skipping."
-+msgstr "Não foi possível abrir: %s. Ignorando."
-
--#: ../yum/__init__.py:3254
--#: ../yum/__init__.py:3352
--#: ../yum/__init__.py:3435
-+#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
- #, python-format
- msgid "Examining %s: %s"
- msgstr "Examinando %s: %s"
-
--#: ../yum/__init__.py:3262
--#: ../yum/__init__.py:3355
--#: ../yum/__init__.py:3438
-+#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
- #, python-format
- msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
--msgstr "Não foi possível adicionar o pacote %s à transação. %s não é uma arquitetura compatível."
-+msgstr ""
-+"Não foi possível adicionar o pacote %s à transação. %s não é uma arquitetura "
-+"compatível."
-
--#: ../yum/__init__.py:3270
-+#: ../yum/__init__.py:3431
- #, python-format
--msgid "Package %s not installed, cannot update it. Run yum install to install it instead."
--msgstr "O pacote %s não está instalado, não é possível atualizá-lo. Execute o yum install para instalá-lo."
-+msgid ""
-+"Package %s not installed, cannot update it. Run yum install to install it "
-+"instead."
-+msgstr ""
-+"O pacote %s não está instalado, não é possível atualizá-lo. Execute o yum "
-+"install para instalá-lo."
-
--#: ../yum/__init__.py:3299
--#: ../yum/__init__.py:3360
--#: ../yum/__init__.py:3443
-+#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
- #, python-format
- msgid "Excluding %s"
- msgstr "Excluindo %s"
-
--#: ../yum/__init__.py:3304
-+#: ../yum/__init__.py:3465
- #, python-format
- msgid "Marking %s to be installed"
- msgstr "Marcando %s para ser instalado"
-
--#: ../yum/__init__.py:3310
-+#: ../yum/__init__.py:3471
- #, python-format
- msgid "Marking %s as an update to %s"
- msgstr "Marcando %s como uma atualização do %s"
-
--#: ../yum/__init__.py:3317
-+#: ../yum/__init__.py:3478
- #, python-format
- msgid "%s: does not update installed package."
- msgstr "%s: não atualiza o pacote instalado."
-
--#: ../yum/__init__.py:3379
-+#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
-+#, python-format
-+msgid "Cannot open file: %s. Skipping."
-+msgstr "Não foi possível abrir o arquivo: %s. Ignorando."
-+
-+#: ../yum/__init__.py:3541
- msgid "Problem in reinstall: no package matched to remove"
- msgstr "Problema na reinstalação: nenhum pacote encontrado para remoção"
-
--#: ../yum/__init__.py:3392
--#: ../yum/__init__.py:3523
-+#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
- #, python-format
- msgid "Package %s is allowed multiple installs, skipping"
- msgstr "O pacote %s permite múltiplas instalações, ignorando"
-
--#: ../yum/__init__.py:3413
-+#: ../yum/__init__.py:3575
- #, python-format
- msgid "Problem in reinstall: no package %s matched to install"
- msgstr "Problema na reinstalação: nenhum pacote %s encontrado para instalação"
-
--#: ../yum/__init__.py:3515
-+#: ../yum/__init__.py:3678
- msgid "No package(s) available to downgrade"
- msgstr "Nenhum pacote disponível para ser retrocedido"
-
--#: ../yum/__init__.py:3559
-+#: ../yum/__init__.py:3731
- #, python-format
- msgid "No Match for available package: %s"
- msgstr "Nenhuma correspondência disponível para o pacote: %s"
-
--#: ../yum/__init__.py:3565
-+#: ../yum/__init__.py:3738
- #, python-format
- msgid "Only Upgrade available on package: %s"
- msgstr "Somente a atualização está disponível para o pacote: %s"
-
--#: ../yum/__init__.py:3635
--#: ../yum/__init__.py:3672
-+#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
- #, python-format
- msgid "Failed to downgrade: %s"
- msgstr "Falha ao desatualizar: %s"
-
--#: ../yum/__init__.py:3704
-+#: ../yum/__init__.py:3877
- #, python-format
- msgid "Retrieving GPG key from %s"
- msgstr "Obtendo a chave GPG a partir de %s"
-
--#: ../yum/__init__.py:3724
-+#: ../yum/__init__.py:3897
- msgid "GPG key retrieval failed: "
- msgstr "A obtenção da chave GPG falhou:"
-
--#: ../yum/__init__.py:3735
-+#: ../yum/__init__.py:3903
-+#, python-format
-+msgid "Invalid GPG Key from %s: %s"
-+msgstr "A chave GPG de %s é inválida: %s"
-+
-+#: ../yum/__init__.py:3912
- #, python-format
- msgid "GPG key parsing failed: key does not have value %s"
- msgstr "Falha na análise da chave GPG: ela não tem o valor %s"
-
--#: ../yum/__init__.py:3767
-+#: ../yum/__init__.py:3944
- #, python-format
- msgid "GPG key at %s (0x%s) is already installed"
- msgstr "A chave GPG em %s (0x%s) já está instalada"
-
- #. Try installing/updating GPG key
--#: ../yum/__init__.py:3772
--#: ../yum/__init__.py:3834
-+#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
- #, python-format
- msgid "Importing GPG key 0x%s \"%s\" from %s"
- msgstr "Importando chave GPG 0x%s \"%s\" a partir de %s"
-
--#: ../yum/__init__.py:3789
-+#: ../yum/__init__.py:3966
- msgid "Not installing key"
- msgstr "Não está instalando a chave"
-
--#: ../yum/__init__.py:3795
-+#: ../yum/__init__.py:3972
- #, python-format
- msgid "Key import failed (code %d)"
- msgstr "Falha na importação da chave (código %d)"
-
--#: ../yum/__init__.py:3796
--#: ../yum/__init__.py:3855
-+#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
- msgid "Key imported successfully"
- msgstr "Chave importada com sucesso"
-
--#: ../yum/__init__.py:3801
--#: ../yum/__init__.py:3860
-+#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
- #, python-format
- msgid ""
--"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
-+"The GPG keys listed for the \"%s\" repository are already installed but they "
-+"are not correct for this package.\n"
- "Check that the correct key URLs are configured for this repository."
- msgstr ""
--"As chaves GPG listadas para o repositório \"%s\" já estão instaladas, mas não estão corretas para este pacote.\n"
--"Verifique se as URLs corretas das chaves estão configuradas para esse repositório."
-+"As chaves GPG listadas para o repositório \"%s\" já estão instaladas, mas "
-+"não estão corretas para este pacote.\n"
-+"Verifique se as URLs corretas das chaves estão configuradas para esse "
-+"repositório."
-
--#: ../yum/__init__.py:3810
-+#: ../yum/__init__.py:3987
- msgid "Import of key(s) didn't help, wrong key(s)?"
- msgstr "A importação da(s) chave(s) não ajudou, chave(s) errada(s)?"
-
--#: ../yum/__init__.py:3829
-+#: ../yum/__init__.py:4006
- #, python-format
- msgid "GPG key at %s (0x%s) is already imported"
- msgstr "A chave GPG em %s (0x%s) já foi importada"
-
--#: ../yum/__init__.py:3849
-+#: ../yum/__init__.py:4026
- #, python-format
- msgid "Not installing key for repo %s"
- msgstr "A chave para o repositório %s não será instalada"
-
--#: ../yum/__init__.py:3854
-+#: ../yum/__init__.py:4031
- msgid "Key import failed"
- msgstr "Falha na importação da chave"
-
--#: ../yum/__init__.py:3976
-+#: ../yum/__init__.py:4157
- msgid "Unable to find a suitable mirror."
- msgstr "Não foi possível encontrar um espelho apropriado."
-
--#: ../yum/__init__.py:3978
-+#: ../yum/__init__.py:4159
- msgid "Errors were encountered while downloading packages."
- msgstr "Foram encontrados erros ao baixar os pacotes."
-
--#: ../yum/__init__.py:4028
-+#: ../yum/__init__.py:4209
- #, python-format
- msgid "Please report this error at %s"
- msgstr "Por favor, relate esse erro em %s"
-
--#: ../yum/__init__.py:4052
-+#: ../yum/__init__.py:4233
- msgid "Test Transaction Errors: "
- msgstr "Erros do teste de transação:"
-
-+#: ../yum/__init__.py:4334
-+#, python-format
-+msgid "Could not set cachedir: %s"
-+msgstr "Não foi possível definir a cachedir: %s"
-+
- #. Mostly copied from YumOutput._outKeyValFill()
- #: ../yum/plugins.py:202
- msgid "Loaded plugins: "
- msgstr "Plugins carregados: "
-
--#: ../yum/plugins.py:216
--#: ../yum/plugins.py:222
-+#: ../yum/plugins.py:216 ../yum/plugins.py:222
- #, python-format
- msgid "No plugin match for: %s"
- msgstr "Nenhum plugin correspondente para: %s"
-@@ -2540,8 +2671,10 @@ msgstr "Carregando o plugin \"%s\""
-
- #: ../yum/plugins.py:316
- #, python-format
--msgid "Two or more plugins with the name \"%s\" exist in the plugin search path"
--msgstr "Dois ou mais plugins com o nome \"%s\" existem no caminho de pesquisa plugins"
-+msgid ""
-+"Two or more plugins with the name \"%s\" exist in the plugin search path"
-+msgstr ""
-+"Dois ou mais plugins com o nome \"%s\" existem no caminho de pesquisa plugins"
-
- #: ../yum/plugins.py:336
- #, python-format
-@@ -2559,7 +2692,20 @@ msgstr "Não foi possível encontrar o arquivo de configuração para o plugin %
- msgid "registration of commands not supported"
- msgstr "O registro de comandos não é suportado"
-
--#: ../yum/rpmtrans.py:78
-+#: ../yum/rpmsack.py:102
-+msgid "has missing requires of"
-+msgstr "tem exigências faltando do"
-+
-+#: ../yum/rpmsack.py:105
-+msgid "has installed conflicts"
-+msgstr "tem conflitos instalados"
-+
-+#: ../yum/rpmsack.py:114
-+#, python-format
-+msgid "%s is a duplicate with %s"
-+msgstr "%s é uma duplicação do %s"
-+
-+#: ../yum/rpmtrans.py:79
- msgid "Repackaging"
- msgstr "Reempacotando"
-
-@@ -2575,16 +2721,16 @@ msgstr "O RPM %s não passou na verificação md5"
-
- #: ../rpmUtils/oldUtils.py:151
- msgid "Could not open RPM database for reading. Perhaps it is already in use?"
--msgstr "Não foi possível abrir o banco de dados RPM para leitura. Talvez por que ele já esteja em uso?"
-+msgstr ""
-+"Não foi possível abrir o banco de dados RPM para leitura. Talvez por que ele "
-+"já esteja em uso?"
-
- #: ../rpmUtils/oldUtils.py:183
- msgid "Got an empty Header, something has gone wrong"
- msgstr "Um cabeçalho vazio foi obtido, algo deu errado"
-
--#: ../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 "Cabeçalho %s danificado"
-@@ -2594,21 +2740,44 @@ msgstr "Cabeçalho %s danificado"
- msgid "Error opening rpm %s - error %s"
- msgstr "Erro ao abrir o rpm %s - erro %s"
-
-+#~ msgid "Finished Transaction Test"
-+#~ msgstr "Teste de transação finalizado"
-+
-+#~ msgid ""
-+#~ " You could try running: package-cleanup --problems\n"
-+#~ " package-cleanup --dupes\n"
-+#~ " rpm -Va --nofiles --nodigest"
-+#~ msgstr ""
-+#~ " Você pode tentar executar: package-cleanup --problems\n"
-+#~ " package-cleanup --dupes\n"
-+#~ " rpm -Va --nofiles --nodigest"
-+
-+#~ msgid "Unresolvable requirement %s for %s"
-+#~ msgstr "Requerimento %s insolúvel para o %s"
-+
-+#~ msgid "Missing Dependency: %s is needed by package %s"
-+#~ msgstr "Dependência faltando: %s é requerido pelo pacote %s"
-+
- #~ msgid ""
- #~ "getInstalledPackageObject() will go away, use self.rpmdb.searchPkgTuple"
- #~ "().\n"
- #~ msgstr ""
- #~ "getInstalledPackageObject() será deixada de lado, use a self.rpmdb."
- #~ "searchPkgTuple().\n"
-+
- #~ msgid "Command"
- #~ msgstr "Comando"
-+
- #~ msgid "Created"
- #~ msgstr "Criado"
-+
- #~ msgid "Summary"
- #~ msgstr "Resumo"
-+
- #~ msgid "Matching packages for package list to user args"
- #~ msgstr ""
- #~ "Resultado dos pacotes para a lista de pacotes dos argumentos do usuário"
-+
- #~ msgid ""
- #~ "\n"
- #~ "Transaction Summary\n"
-@@ -2623,67 +2792,94 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ "Instalar %5.5s pacote(s) \n"
- #~ "Atualizar %5.5s pacote(s) \n"
- #~ "Remover %5.5s pacote(s) \n"
-+
- #~ msgid "excluding for cost: %s from %s"
- #~ msgstr "excluindo para custo: %s a partir de %s"
-+
- #~ msgid "Excluding Packages in global exclude list"
- #~ msgstr "Excluindo pacotes na lista global de excluídos"
-+
- #~ msgid "Excluding Packages from %s"
- #~ msgstr "Excluindo pacotes de %s"
-+
- #~ msgid "Reducing %s to included packages only"
- #~ msgstr "Reduzindo %s apenas aos pacotes inclusos"
-+
- #~ msgid "Keeping included package %s"
- #~ msgstr "Mantendo o pacote incluso %s"
-+
- #~ msgid "Removing unmatched package %s"
- #~ msgstr "Removendo pacote não encontrado %s"
-+
- #~ msgid "Finished"
- #~ msgstr "Concluído"
-+
- #~ msgid "Invalid versioned dependency string, try quoting it."
- #~ msgstr "String de dependência versionada inválida, tente citá-la."
-+
- #~ msgid "Entering rpm code"
- #~ msgstr "Entrando no código rpm"
-+
- #~ msgid "Leaving rpm code"
- #~ msgstr "Saindo do código rpm"
-+
- #~ msgid "Parsing package install arguments"
- #~ msgstr "Analisando argumentos da instalação de pacotes"
-+
- #~ msgid ""
- #~ "Failure finding best provider of %s for %s, exceeded maximum loop length"
- #~ msgstr ""
- #~ "Falha ao encontrar o melhor fornecedor de %s para %s, tamanho máximo do "
- #~ "loop excedido"
-+
- #~ msgid "Comparing best: %s to po: %s"
- #~ msgstr "Comparando melhor: %s para po: %s"
-+
- #~ msgid "Same: best %s == po: %s"
- #~ msgstr "Igual: melhor %s == po: %s"
-+
- #~ msgid "po %s obsoletes best: %s"
- #~ msgstr "po %s torna melhor obsoleto: %s"
-+
- #~ msgid "po %s shares a sourcerpm with %s"
- #~ msgstr "po %s compartilha um sourcerpm com %s"
-+
- #~ msgid "best %s shares a sourcerpm with %s"
- #~ msgstr "melhor %s compartilha um sourcerpm com %s"
-+
- #~ msgid "po %s shares more of the name prefix with %s"
- #~ msgstr "po %s compartilha mais do prefixo do nome com %s"
-+
- #~ msgid "po %s has a shorter name than best %s"
- #~ msgstr "po %s tem um nome mais curto do que o melhor %s"
-+
- #~ msgid "bestpkg %s shares more of the name prefix with %s"
- #~ msgstr "bestpkg %s compartilha mais do prefixo do nome com %s"
-+
- #~ msgid "Looking for Obsoletes for %s"
- #~ msgstr "Localizando Obsoletos para %s"
-+
- #~ msgid "unable to find newer package for %s"
- #~ msgstr "não foi possível encontrar um pacote mais recente para o %s"
-+
- #~ msgid "TSINFO: Updating %s to resolve conflict."
- #~ msgstr "TSINFO: Atualizando o %s para resolver o conflito."
--#~ msgid "%s conflicts with %s"
--#~ msgstr "%s conflita com %s"
-+
- #~ msgid "Package %s conflicts with %s."
- #~ msgstr "O pacote %s conflita com %s."
-+
- #~ msgid "Running \"%s\" handler for \"%s\" plugin"
- #~ msgstr "Executando o manipulador \"%s\" para o plugin \"%s\""
-+
- #~ msgid "Directory of rpms must exist"
- #~ msgstr "O diretório de rpms precisa existir"
-+
- #~ msgid "Error accessing URL: %s"
- #~ msgstr "Erro ao acessar a URL: %s"
-+
- #~ msgid "No Packages installed not included in a repository"
- #~ msgstr "Nenhum pacote instalado não incluído em um repositório"
-+
- #~ msgid ""
- #~ "\n"
- #~ " Total: %d\n"
-@@ -2694,10 +2890,13 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ " Total: %d\n"
- #~ " Usado: %d\n"
- #~ " Src: %d"
-+
- #~ msgid "Error restoring the backup of lilo.conf The backup was:\n"
- #~ msgstr "Erro ao restaurar o backup do lilo.conf. O backup era:\n"
-+
- #~ msgid "Looking in available packages for a providing package"
- #~ msgstr "Procurando pelo pacote fornecido nos pacotes disponíveis"
-+
- #~ msgid ""
- #~ "retrygrab() failed for:\n"
- #~ " %s%s\n"
-@@ -2706,12 +2905,16 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ "retrygrab() falhou para:\n"
- #~ " %s%s\n"
- #~ " Executando método de recuperação"
-+
- #~ msgid "I will install/upgrade these to satisfy the dependencies:"
- #~ msgstr "Eu irei instalar/atualizar isto para satisfazer as dependências:"
-+
- #~ msgid "Cannot delete %s - check perms"
- #~ msgstr "Não foi possível remover %s - verifique as permissões"
-+
- #~ msgid "Need a provides to match"
- #~ msgstr "É necessário fornecer uma informação para corresponder"
-+
- #~ msgid ""
- #~ "lilo options that are not supported by yum are used in the default lilo."
- #~ "conf. This file will not be modified. The options include:\n"
-@@ -2719,10 +2922,13 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ "opções do lilo que não são suportadas pelo yum estão sendo utilizadas no "
- #~ "arquivo lilo.conf padrão. Este arquivo não será modificado. Dentre as "
- #~ "opções estão:\n"
-+
- #~ msgid "Error getting file %s"
- #~ msgstr "Erro ao obter arquivo %s"
-+
- #~ msgid "%s is not writable"
- #~ msgstr "%s não é gravável"
-+
- #~ msgid ""
- #~ "\n"
- #~ "Already found tuple: %s %s:\n"
-@@ -2731,86 +2937,117 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ "\n"
- #~ "Tupla já encontrada: %s %s:\n"
- #~ "%s "
-+
- #~ msgid "errors found"
- #~ msgstr "erros encontrados"
-+
- #~ msgid "Unable to determine boot loader."
- #~ msgstr "Não foi possível determinar o gerenciador de inicialização."
-+
- #~ msgid "getting %s"
- #~ msgstr "obtendo %s"
-+
- #~ msgid "Error Reading Header on %s"
- #~ msgstr "Erro ao Ler Cabeçalho em %s"
-+
- #~ msgid "Error accessing File: %s"
- #~ msgstr "Erro ao acessar arquivo: %s"
-+
- #~ msgid "You're not root, we can't install things"
- #~ msgstr "Você não é root, nós não podemos instalar coisas"
-+
- #~ msgid "Cannot find any conf file."
- #~ msgstr "Não foi possível encontrar um arquivo de configuração."
-+
- #~ msgid "Local file does not exist: %s"
- #~ msgstr "O arquivo local não existe: %s"
-+
- #~ msgid "using ftp, http[s], or file for servers, Aborting - %s"
- #~ msgstr "usando ftp, http[s] ou arquivos para servidores. Abortando - %s"
-+
- #~ msgid "Found %s."
- #~ msgstr "%s encontrado."
-+
- #~ msgid "Transaction(s) Complete"
- #~ msgstr "Transação Completa"
-+
- #~ msgid "IOError: %s"
- #~ msgstr "IOError (Erro E/S): %s"
-+
- #~ msgid "Cleaning packages and old headers"
- #~ msgstr "Limpando pacotes e cabeçalhos antigos"
-+
- #~ msgid ""
- #~ "Cannot download %s in caching only mode or when running as non-root user."
- #~ msgstr ""
- #~ "Não é possível baixar %s no modo \"somente cache\" ou quando estiver "
- #~ "executando com um usuário não root."
-+
- #~ msgid ""
- #~ "Error: You may want to run yum clean or remove the file: \n"
- #~ " %s"
- #~ msgstr ""
- #~ "Erro: Você pode querer executar a limpeza do yum ou remover o arquivo: \n"
- #~ " %s"
-+
- #~ msgid "Error reading lilo.conf: The messages was:\n"
- #~ msgstr "Erro ao ler o lilo.conf: A mensagem foi:\n"
-+
- #~ msgid "No groups provided or accessible on any server."
- #~ msgstr "Nenhum grupo fornecido ou acessível em nenhum servidor."
-+
- #~ msgid "%s results returned"
- #~ msgstr "%s resultados retornados"
-+
- #~ msgid "Error moving %s to %s, fatal"
- #~ msgstr "Erro ao mover %s para %s, fatal"
-+
- #~ msgid ""
- #~ "\n"
- #~ "ignoring bad rpm: %s"
- #~ msgstr ""
- #~ "\n"
- #~ "ignorando rpm defeituoso: %s"
-+
- #~ msgid "[erase: %s]"
- #~ msgstr "[remover: %s]"
-+
- #~ msgid "%s is not a dir"
- #~ msgstr "%s não é um diretório"
-+
- #~ msgid "Best version for %s is %s:%s-%s"
- #~ msgstr "A melhor versão para %s é %s:%s-%s"
-+
- #~ msgid "[deps: %s]"
- #~ msgstr "[deps: %s]"
-+
- #~ msgid ""
- #~ "\n"
- #~ "ignoring srpm: %s"
- #~ msgstr ""
- #~ "\n"
- #~ "ignorando srpm: %s"
-+
- #~ msgid "Checking deps %d/%d complete"
- #~ msgstr "Checando dependências, %d/%d completo"
-+
- #~ msgid ""
- #~ "Errors within the dir(s):\n"
- #~ " %s"
- #~ msgstr ""
- #~ "Erro dentro do(s) diretório(s):\n"
- #~ " %s"
-+
- #~ msgid "Please run yum in non-caching mode to correct this header."
- #~ msgstr ""
- #~ "Por favor, execute o yum no modo sem cache para corrigir este cabeçalho."
-+
- #~ msgid "Error installing lilo.conf The message was:\n"
- #~ msgstr "Erro ao instalar o lilo.conf. A mensagem foi:\n"
-+
- #~ msgid "Error: Untrusted GPG key on %s"
- #~ msgstr "Erro: Chave GPG não confiável em %s"
-+
- #~ msgid ""
- #~ "\n"
- #~ "\n"
-@@ -2821,50 +3058,66 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ "\n"
- #~ "Problema com a assinatura gpg ou com o md5sum em %s\n"
- #~ "\n"
-+
- #~ msgid "No Packages Available for Update or Install"
- #~ msgstr "Nenhum Pacote Disponível para Atualização ou Instalação"
-+
- #~ msgid "Found best arch for install only pkg %s"
- #~ msgstr "Encontre a melhor arquitetura para instalar apenas o pacote %s"
-+
- #~ msgid "I will do the following:"
- #~ msgstr "Eu farei o seguinte:"
-+
- #~ msgid "Bad URL: %s"
- #~ msgstr "URL Inválida: %s"
-+
- #~ msgid "NonMatching RPM version, %s, removing."
- #~ msgstr "Versão do RPM não coincide, %s, removendo."
-+
- #~ msgid "I will erase these to satisfy the dependencies:"
- #~ msgstr "Eu irei apagar isto para satisfazer as dependências:"
-+
- #~ msgid "HTTP Error (%s): %s"
- #~ msgstr "Erro HTTP (%s): %s"
-+
- #~ msgid "Please ask your sysadmin to update the headers on this system."
- #~ msgstr ""
- #~ "Por favor, peça ao administrador do seu sistema para atualizar os "
- #~ "cabeçalhos."
-+
- #~ msgid "Putting back old headers"
- #~ msgstr "Recolocando cabeçalhos antigos"
--#~ msgid "CacheDir: %s"
--#~ msgstr "CacheDir (diretório de cache): %s"
-+
- #~ msgid "Completing update for %s - %d/%d"
- #~ msgstr "Completando atualização para %s - %d/%d"
-+
- #~ msgid ""
- #~ "Error: You may need to disable gpg checking to install this package\n"
- #~ msgstr ""
- #~ "Erro: Talvez seja necessário desabilitar a verificação gpg para instalar "
- #~ "este pacote\n"
-+
- #~ msgid "Options Error: no commands found"
- #~ msgstr "Erro nas opções: nenhum comando encontrado"
-+
- #~ msgid "Unable to run grubby correctly: the message was:\n"
- #~ msgstr "Não foi possível executar o grubby corretamente: a mensagem foi:\n"
-+
- #~ msgid "IOError - # %s - %s"
- #~ msgstr "IOError (Erro E/S) - # %s - %s"
-+
- #~ msgid "Kernel Updated/Installed, checking for bootloader"
- #~ msgstr ""
- #~ "Kernel atualizado/instalado, verificando gerenciador de inicialização"
-+
- #~ msgid "Need to pass a list of pkgs to install"
- #~ msgstr "É necessário passar uma lista de pacotes para instalar"
-+
- #~ msgid "Insufficient server config - no servers found. Aborting."
- #~ msgstr ""
- #~ "Configuração de servidor insuficiente - nenhum servidor encontrado. "
- #~ "Abortando."
-+
- #~ msgid ""
- #~ "\n"
- #~ " Usage: yum [options] <update | upgrade | install | info | remove | "
-@@ -2910,76 +3163,102 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ " --version - exibe a versão do yum\n"
- #~ " -h, --help - exibe esta tela\n"
- #~ " "
-+
- #~ msgid "From %s installing %s"
- #~ msgstr "A partir de %s, instalando %s"
-+
- #~ msgid "No bootloader found, Cannot configure kernel, continuing."
- #~ msgstr ""
- #~ "Nenhum gerenciador de inicialização encontrado. Não é possível configurar "
- #~ "o kernel, continuando."
-+
- #~ msgid "Attempt to delete a missing file %s - ignoring."
- #~ msgstr "Tentativa de remover um arquivo faltando %s - ignorando."
-+
- #~ msgid "Getting %s"
- #~ msgstr "Obtendo %s"
-+
- #~ msgid ""
- #~ "\n"
- #~ "Writing header.info file"
- #~ msgstr ""
- #~ "\n"
- #~ "Gravando arquivo header.info"
-+
- #~ msgid "Gathering header information file(s) from server(s)"
- #~ msgstr ""
- #~ "Coletando arquivo(s) de informações de cabeçalhos a partir do(s) servidor"
- #~ "(es)"
-+
- #~ msgid "Using cached header.info file"
- #~ msgstr "Utilizando arquivo header.info do cache"
-+
- #~ msgid "localrpmdb not defined"
- #~ msgstr "localrpmdb não definido"
-+
- #~ msgid "Error installing the new bootloader: \n"
- #~ msgstr "Erro ao instalar o novo gerenciador de inicialização: \n"
-+
- #~ msgid "Error: Could not find the GPG Key necessary to validate pkg %s"
- #~ msgstr ""
- #~ "Erro: Não foi possível localizar a Chave GPG necessária para validar o "
- #~ "pacote %s"
-+
- #~ msgid "No actions to take"
- #~ msgstr "Nenhuma ação a ser tomada"
-+
- #~ msgid ""
- #~ "Available package: %s.%s %s:%s-%s from %s matches with\n"
- #~ " %s"
- #~ msgstr ""
- #~ "Pacote disponível: %s.%s %s:%s-%s de %s resultados com\n"
- #~ " %s"
-+
- #~ msgid " "
- #~ msgstr " "
-+
- #~ msgid "Error: Cannot find baseurl or name for server '%s'. Skipping"
- #~ msgstr ""
- #~ "Erro: Não foi possível localizar a baseurl ou o nome do servidor \"%s\". "
- #~ "Ignorando."
-+
- #~ msgid "Odd header %s suddenly disappeared"
- #~ msgstr "Cabeçalho indefinido %s desapareceu repentinamente"
-+
- #~ msgid "All dependencies resolved and no conflicts detected"
- #~ msgstr "Todas as dependências resolvidas e nenhum conflito detectado"
-+
- #~ msgid "using cached groups from server: %s"
- #~ msgstr "usando grupos em cache a partir do servidor: %s"
-+
- #~ msgid "Exiting."
- #~ msgstr "Saindo."
-+
- #~ msgid ""
- #~ "asking for package %s.%s - does not exist in nevral - bailing out - check "
- #~ "rpmdb for errors"
- #~ msgstr ""
- #~ "perguntando pelo pacote %s.%s - não existe no nevral - saindo "
- #~ "abruptamente - verifique por erros no rpmdb"
-+
- #~ msgid "Errors reported doing trial run"
- #~ msgstr "Erros reportados na execução experimental"
-+
- #~ msgid "Lilo found - adding kernel to lilo and making it the default"
- #~ msgstr "Lilo encontrado - adicionando o kernel ao lilo e tornando-o padrão"
-+
- #~ msgid "[update: %s]"
- #~ msgstr "[atualizar: %s]"
-+
- #~ msgid "ERROR: Url Return no Content-Length - something is wrong"
- #~ msgstr "ERRO: A URL retornou conteúdo vazio - algo está errado"
-+
- #~ msgid "Got a file - yay"
- #~ msgstr "Obteve um arquivo - yay"
-+
- #~ msgid "From %s updating %s"
- #~ msgstr "A partir de %s, atualizando %s"
-+
- #~ msgid ""
- #~ "Usage:\n"
- #~ "yum-arch [-v] [-z] [-l] [-c] [-n] [-d] [-q] [-vv] (path of dir where "
-@@ -3009,54 +3288,74 @@ msgstr "Erro ao abrir o rpm %s - erro %s"
- #~ " -l = utiliza links simbólicos como rpms válidos ao compilar "
- #~ "cabeçalhos\n"
- #~ " -q = faz uma exibição mais discreta"
-+
- #~ msgid "The file %s is damaged."
- #~ msgstr "O arquivo %s está danificado."
-+
- #~ msgid "Repo"
- #~ msgstr "Repo"
-+
- #~ msgid "No bootloader found, Cannot configure kernel."
- #~ msgstr ""
- #~ "Nenhum gerenciador de inicialização encontrado. Não é possível configurar "
- #~ "o kernel."
-+
- #~ msgid "Name"
- #~ msgstr "Nome"
-+
- #~ msgid "Downloading needed headers"
- #~ msgstr "Baixando os cabeçalhos necessários"
-+
- #~ msgid "Header for pkg %s not found"
- #~ msgstr "O cabeçalho para o pacote %s não foi encontrado"
-+
- #~ msgid "Cleaning all headers"
- #~ msgstr "Limpando todos os cabeçalhos"
-+
- #~ msgid "depcheck: package %s needs %s"
- #~ msgstr "verificação de dependências: o pacote %s precisa do %s"
-+
- #~ msgid "Error - %s cannot be found"
- #~ msgstr "Erro - %s não pôde ser encontrado"
-+
- #~ msgid "Erasing: %s %d/%d"
- #~ msgstr "Apagando: %s %d/%d"
-+
- #~ msgid "Nothing in any group to update or install"
- #~ msgstr "Nada em nenhum grupo para atualizar ou instalar"
-+
- #~ msgid "Grub found - making this kernel the default"
- #~ msgstr "Grub encontrado - tornando este kernel o padrão"
-+
- #~ msgid "Digesting rpm - %s - %d/%d"
- #~ msgstr "Preparando rpm - %s - %d/%d"
-+
- #~ msgid "Damaged RPM %s, removing."
- #~ msgstr "RPM %s danificado, removendo."
-+
- #~ msgid ""
- #~ "Bad Header for pkg %s.%s trying to get headers for the nevral - exiting"
- #~ msgstr ""
- #~ "Cabeçalho danificado para o pacote %s.%s, tentando obter cabeçalhos para "
- #~ "o nevral - saindo"
-+
- #~ msgid ""
- #~ "Error: You may also check that you have the correct GPG keys installed"
- #~ msgstr ""
- #~ "Erro: Você também pode verificar se tem as Chaves GPG corretas instaladas"
-+
- #~ msgid "No rpms to work with and no header dir. Exiting."
- #~ msgstr ""
- #~ "Nenhum diretório de cabeçalhos e nenhum rpm para ser utilizado. Saindo."
-+
- #~ msgid "ignoring bad rpm: %s"
- #~ msgstr "ignorando rpm danificado: %s"
-+
- #~ msgid "Directory of rpms must be a directory."
- #~ msgstr "O diretório de rpms deve ser um diretório."
-+
- #~ msgid "failover: out of servers to try"
- #~ msgstr "recuperação: não há mais servidores para tentar"
-+
- #~ msgid "Getting header.info from server"
- #~ msgstr "Obtendo header.info do servidor"
--
-diff --git a/po/ru.po b/po/ru.po
-index a1b946e..f1cbc2f 100644
---- a/po/ru.po
-+++ b/po/ru.po
-@@ -2,56 +2,76 @@
- # Copyright (C) 2010 yum's COPYRIGHT HOLDER
- # This file is distributed under the same license as the yum package.
- #
--# Vladimir Bormotov <bor at insight.donbass.com>, 2002.
--# Grigory Bakunov <black at asplinux.ru>, 2002,2003.
--# Timur Malikin <sora_tm at mail.ru>, 2010.
-+# 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
- msgid ""
- msgstr ""
- "Project-Id-Version: yum\n"
- "Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2010-02-11 10:54-0500\n"
--"PO-Revision-Date: 2010-03-15 21:44+0300\n"
--"Last-Translator: Timur Malikin <sora_tm at mail.ru>\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"
- "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 ../output.py:947 ../yum/rpmtrans.py:72
-+#: ../callback.py:48
-+#: ../output.py:947
-+#: ../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 ../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:946
-+#: ../output.py:1659
-+#: ../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:1484
-+#: ../yum/rpmtrans.py:76
- msgid "Obsoleted"
--msgstr "Заменено"
-+msgstr "Исключено"
-
--#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
-+#: ../callback.py:54
-+#: ../output.py:1070
-+#: ../output.py:1442
-+#: ../output.py:1491
- msgid "Updated"
- msgstr "Обновлено"
-
--#: ../callback.py:55 ../output.py:1438
-+#: ../callback.py:55
-+#: ../output.py:1438
- 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:1068
-+#: ../output.py:1434
-+#: ../output.py:1646
- msgid "Installed"
- msgstr "Установлено"
-
- #: ../callback.py:130
- msgid "No header - huh?"
--msgstr "Нет заголовка?"
-+msgstr "Заголовка нет — ага?"
-
- #: ../callback.py:168
- msgid "Repackage"
-@@ -67,11 +87,14 @@ msgstr "Ошибка: неверный выходной статус: %s для
- msgid "Erased: %s"
- msgstr "Удалено: %s"
-
--#: ../callback.py:217 ../output.py:948 ../output.py:1648
-+#: ../callback.py:217
-+#: ../output.py:948
-+#: ../output.py:1648
- msgid "Removing"
- msgstr "Удаление"
-
--#: ../callback.py:219 ../yum/rpmtrans.py:78
-+#: ../callback.py:219
-+#: ../yum/rpmtrans.py:78
- msgid "Cleanup"
- msgstr "Очистка"
-
-@@ -86,14 +109,17 @@ msgstr "Настройка репозиториев"
-
- #: ../cli.py:130
- msgid "Reading repository metadata in from local files"
--msgstr "Чтение метаданных репозиториев с локальных файлов "
-+msgstr "Чтение локальных метаданных для репозиториев"
-
--#: ../cli.py:194 ../utils.py:193
-+#: ../cli.py:194
-+#: ../utils.py:193
- #, python-format
- msgid "Config Error: %s"
- msgstr "Ошибка конфигурации: %s"
-
--#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
-+#: ../cli.py:197
-+#: ../cli.py:1272
-+#: ../utils.py:196
- #, python-format
- msgid "Options Error: %s"
- msgstr "Ошибка опции: %s"
-@@ -106,12 +132,12 @@ msgstr " Установлено: %s-%s из %s"
- #: ../cli.py:229
- #, python-format
- msgid " Built : %s at %s"
--msgstr " Собрано: %s из %s"
-+msgstr " Собрано : %s из %s"
-
- #: ../cli.py:231
- #, python-format
- msgid " Committed: %s at %s"
--msgstr " Передано: %s из %s"
-+msgstr " Передано : %s из %s"
-
- #: ../cli.py:270
- msgid "You need to give some command"
-@@ -129,7 +155,7 @@ msgstr "Необходимо места на диске:\n"
- #: ../cli.py:316
- #, python-format
- msgid " At least %dMB more space needed on the %s filesystem.\n"
--msgstr "Как минимум %d Мбайт или более необходимо на %s\n"
-+msgstr " Как минимум %d Мбайт необходимо на %s.\n"
-
- #. TODO: simplify the dependency errors?
- #. Fixup the summary
-@@ -138,12 +164,12 @@ msgid ""
- "Error Summary\n"
- "-------------\n"
- msgstr ""
--"Обзор ошибок\n"
--"---------------\n"
-+"Обзор ошибок \n"
-+"-------------\n"
-
- #: ../cli.py:364
- msgid "Trying to run the transaction but nothing to do. Exiting."
--msgstr "Попытка запуска транзакции, но нет задач для выполнения. Выход."
-+msgstr "Попытка предпринята, делать нечего. Завершение."
-
- #: ../cli.py:403
- msgid "Exiting on user Command"
-@@ -157,42 +183,45 @@ msgstr "Загрузка пакетов:"
- msgid "Error Downloading Packages:\n"
- msgstr "Ошибка загрузки пакетов:\n"
-
--#: ../cli.py:426 ../yum/__init__.py:4195
-+#: ../cli.py:426
-+#: ../yum/__init__.py:4195
- msgid "Running rpm_check_debug"
- msgstr "Запуск rpm_check_debug"
-
--#: ../cli.py:435 ../yum/__init__.py:4204
-+#: ../cli.py:435
-+#: ../yum/__init__.py:4204
- msgid "ERROR You need to update rpm to handle:"
--msgstr "ОШИБКА Вам необходимо обновить пакет вручную"
-+msgstr "ОШИБКА Вам необходимо обновить rpm:"
-
--#: ../cli.py:437 ../yum/__init__.py:4207
-+#: ../cli.py:437
-+#: ../yum/__init__.py:4207
- msgid "ERROR with rpm_check_debug vs depsolve:"
--msgstr "ОШИБКА rpm_check_debug и разрешение зависимостей:"
-+msgstr "ОШИБКА в rpm_check_debug и разрешении зависимостей:"
-
- #: ../cli.py:443
- msgid "RPM needs to be updated"
--msgstr "RPM пакет должен быть обновлён"
-+msgstr "менеджер пакетов RPM должен быть обновлен"
-
- #: ../cli.py:444
- #, python-format
- msgid "Please report this error in %s"
--msgstr "Пожалуйста, сообщите об этой ошибке %s"
-+msgstr "Пожалуйста, сообщите об ошибке в %s"
-
- #: ../cli.py:450
- msgid "Running Transaction Test"
--msgstr "Проверка транзакций"
-+msgstr "Проверяем сценарий"
-
- #: ../cli.py:466
- msgid "Transaction Check Error:\n"
--msgstr "Ошибка проверки транзакции:\n"
-+msgstr "Проверка сценария завершена с ошибкой:\n"
-
- #: ../cli.py:473
- msgid "Transaction Test Succeeded"
--msgstr "Проверка прошла успешно"
-+msgstr "Проверка сценария прошла успешно"
-
- #: ../cli.py:495
- msgid "Running Transaction"
--msgstr "Запуск транзакции"
-+msgstr "Запускается сценарий"
-
- #: ../cli.py:525
- msgid ""
-@@ -202,28 +231,36 @@ msgstr ""
- "Отмена автоматического импорта ключей во время запуска без контроля.\n"
- "Используйте \"-y\" для игнорирования."
-
--#: ../cli.py:544 ../cli.py:578
-+#: ../cli.py:544
-+#: ../cli.py:578
- msgid " * Maybe you meant: "
--msgstr "* Возможно вы имели в виду:"
-+msgstr " * Возможно вы имели в виду: "
-
--#: ../cli.py:561 ../cli.py:569
-+#: ../cli.py:561
-+#: ../cli.py:569
- #, 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:575
-+#: ../cli.py:607
-+#: ../cli.py:687
- #, python-format
- msgid "No package %s%s%s available."
- msgstr "Пакет %s%s%s недоступен."
-
--#: ../cli.py:612 ../cli.py:748
-+#: ../cli.py:612
-+#: ../cli.py:748
- msgid "Package(s) to install"
- msgstr "Пакет(ы) для установки"
-
--#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
-+#: ../cli.py:613
-+#: ../cli.py:693
-+#: ../cli.py:727
-+#: ../cli.py:749
- #: ../yumcommands.py:160
- msgid "Nothing to do"
--msgstr "Нечего выполнять"
-+msgstr "Выполнять нечего"
-
- #: ../cli.py:647
- #, python-format
-@@ -232,7 +269,7 @@ msgstr "%d пакеты отмечены для обновления"
-
- #: ../cli.py:650
- msgid "No Packages marked for Update"
--msgstr "Нет пакетов отмеченных для обновления"
-+msgstr "Нет пакетов, отмеченных для обновления"
-
- #: ../cli.py:664
- #, python-format
-@@ -241,16 +278,16 @@ msgstr "%d пакеты отмечены для удаления"
-
- #: ../cli.py:667
- msgid "No Packages marked for removal"
--msgstr "Нет пакетов отмеченных для удаления"
-+msgstr "Нет пакетов, отмеченных для удаления"
-
- #: ../cli.py:692
- msgid "Package(s) to downgrade"
--msgstr "Пакет(ы) для возврата к предыдущей версии"
-+msgstr "Пакет(ы) для отката версии"
-
- #: ../cli.py:717
- #, python-format
- msgid " (from %s)"
--msgstr "(из %s)"
-+msgstr " (из %s)"
-
- #: ../cli.py:719
- #, python-format
-@@ -273,7 +310,7 @@ msgstr "Совпадений: %s"
- #: ../cli.py:825
- #, python-format
- msgid "Warning: No matches found for: %s"
--msgstr "Внимание: Нет совпадений для: %s"
-+msgstr "Внимание: совпадений для %s не найдено"
-
- #: ../cli.py:828
- msgid "No Matches found"
-@@ -286,8 +323,8 @@ msgid ""
- " You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
- msgstr ""
- "Внимание: в yum версии 3.0.x ошибочно совпадают названия файлов.\n"
--"Вы можете использовать \"%s*/%s%s\" и/или \"%s*bin/%s%s\" \n"
--"чтобы получить соответствующее поведение"
-+" Вы можете использовать \"%s*/%s%s\" и/или \"%s*bin/%s%s\" \n"
-+" чтобы получить соответствующее поведение"
-
- #: ../cli.py:884
- #, python-format
-@@ -324,42 +361,46 @@ msgstr "Очистка кэша данных базы RPM"
-
- #: ../cli.py:930
- msgid "Cleaning up plugins"
--msgstr "Очистка плагинов"
-+msgstr "Сброс модулей"
-
- #: ../cli.py:955
- msgid "Installed Groups:"
--msgstr "Установлены группы: "
-+msgstr "Установлены коллекции:"
-
- #: ../cli.py:967
- msgid "Available Groups:"
--msgstr "Доступные группы:"
-+msgstr "Доступные коллекции:"
-
- #: ../cli.py:977
- msgid "Done"
- msgstr "Выполнено"
-
--#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
-+#: ../cli.py:988
-+#: ../cli.py:1006
-+#: ../cli.py:1012
-+#: ../yum/__init__.py:2788
- #, python-format
- msgid "Warning: Group %s does not exist."
--msgstr "Внимание: группа %s не существует."
-+msgstr "Внимание: коллекции %s не существует."
-
- #: ../cli.py:1016
- msgid "No packages in any requested group available to install or update"
--msgstr "В запрашиваемых группах недоступны пакеты для обновления или установки"
-+msgstr "Во всех указанных коллекциях пакеты для установки или обновления отсутствуют"
-
- #: ../cli.py:1018
- #, python-format
- msgid "%d Package(s) to Install"
- msgstr "%d Пакет(ы) для установки"
-
--#: ../cli.py:1028 ../yum/__init__.py:2800
-+#: ../cli.py:1028
-+#: ../yum/__init__.py:2800
- #, python-format
- msgid "No group named %s exists"
--msgstr "Группы с именем %s не существует"
-+msgstr "Коллекции с названием %s не существует"
-
- #: ../cli.py:1034
- msgid "No packages to remove from groups"
--msgstr "Нет пакетов для удаления с групп"
-+msgstr "Нет пакетов для удаления из коллекций"
-
- #: ../cli.py:1036
- #, python-format
-@@ -369,7 +410,7 @@ msgstr "%d Пакет(ы) для удаления"
- #: ../cli.py:1078
- #, python-format
- msgid "Package %s is already installed, skipping"
--msgstr "Пакет %s уже установлен, пропуск"
-+msgstr "Пакет %s уже установлен, пропускаем"
-
- #: ../cli.py:1089
- #, python-format
-@@ -380,11 +421,11 @@ msgstr "Исключение несовместимого пакета %s.%s"
- #: ../cli.py:1115
- #, python-format
- msgid "No other %s installed, adding to list for potential install"
--msgstr "Другое %s не установлено, добавляем в список потенциальных установок"
-+msgstr "Других %s не установлено, добавляем в список для возможной установки"
-
- #: ../cli.py:1135
- msgid "Plugin Options"
--msgstr "Опции плагина"
-+msgstr "Опции модуля"
-
- #: ../cli.py:1143
- #, python-format
-@@ -416,7 +457,7 @@ msgstr "игнорировать ошибки"
-
- #: ../cli.py:1326
- msgid "run entirely from system cache, don't update cache"
--msgstr "запуск только из системного кэша, не обновляйте кэш"
-+msgstr "брать полностью из системного кэша, не обновлять его"
-
- #: ../cli.py:1329
- msgid "config file location"
-@@ -432,7 +473,7 @@ msgstr "уровень отладочных сообщений"
-
- #: ../cli.py:1338
- msgid "show duplicates, in repos, in list/search commands"
--msgstr "отобразить дубликаты в репозиториях, в списках/поиске команд"
-+msgstr "показывать повторяющиеся в репозиториях пакеты, для команд list/search"
-
- #: ../cli.py:1340
- msgid "error output level"
-@@ -452,7 +493,7 @@ msgstr "подробно описывать действия"
-
- #: ../cli.py:1350
- msgid "answer yes for all questions"
--msgstr "Отвечаете \"Да\" на все вопросы"
-+msgstr "Отвечать утвердительно на все вопросы"
-
- #: ../cli.py:1352
- msgid "show Yum version and exit"
-@@ -464,13 +505,11 @@ msgstr "настройка корневой папки"
-
- #: ../cli.py:1357
- msgid "enable one or more repositories (wildcards allowed)"
--msgstr ""
--"включение одного и более репозиториев (поиск по шаблону поддерживается)"
-+msgstr "включение одного и более репозиториев (поиск по шаблону поддерживается)"
-
- #: ../cli.py:1361
- msgid "disable one or more repositories (wildcards allowed)"
--msgstr ""
--"выключение одного и более репозиториев (поиск по шаблону поддерживается)"
-+msgstr "выключение одного и более репозиториев (поиск по шаблону поддерживается)"
-
- #: ../cli.py:1364
- msgid "exclude package(s) by name or glob"
-@@ -482,11 +521,11 @@ msgstr "отключает исключения для конкретного р
-
- #: ../cli.py:1369
- msgid "enable obsoletes processing during updates"
--msgstr "включить процесс замены во время обновления"
-+msgstr "включить обработку устаревших во время обновления"
-
- #: ../cli.py:1371
- msgid "disable Yum plugins"
--msgstr "отключить плагины Yum"
-+msgstr "отключить модули Yum"
-
- #: ../cli.py:1373
- msgid "disable gpg signature checking"
-@@ -494,15 +533,15 @@ msgstr "отключить проверку подписи gpg"
-
- #: ../cli.py:1375
- msgid "disable plugins by name"
--msgstr "отключить плагин по имени"
-+msgstr "отключить модуль по названию"
-
- #: ../cli.py:1378
- msgid "enable plugins by name"
--msgstr "включить плагин по имени"
-+msgstr "включить модуль по названию"
-
- #: ../cli.py:1381
- msgid "skip packages with depsolving problems"
--msgstr "пропускать пакеты, с проблемами с зависимостями"
-+msgstr "пропускать пакеты, с проблемами в зависимостях"
-
- #: ../cli.py:1383
- msgid "control whether color is used"
-@@ -510,9 +549,7 @@ msgstr "Использовать ли цветовые схемы"
-
- #: ../cli.py:1385
- msgid "set value of $releasever in yum config and repo files"
--msgstr ""
--"установите значение $releasever в конфигурационном файле yum и в файлах "
--"репозиториев (repo)"
-+msgstr "установите значение $releasever в конфигурационном файле yum и в файлах репозиториев (repo)"
-
- #: ../output.py:305
- msgid "Jan"
-@@ -524,7 +561,7 @@ msgstr "Фев"
-
- #: ../output.py:305
- msgid "Mar"
--msgstr "Март"
-+msgstr "Мар"
-
- #: ../output.py:305
- msgid "Apr"
-@@ -536,11 +573,11 @@ msgstr "Май"
-
- #: ../output.py:305
- msgid "Jun"
--msgstr "Июнь"
-+msgstr "Июн"
-
- #: ../output.py:306
- msgid "Jul"
--msgstr "Июль"
-+msgstr "Июл"
-
- #: ../output.py:306
- msgid "Aug"
-@@ -548,7 +585,7 @@ msgstr "Авг"
-
- #: ../output.py:306
- msgid "Sep"
--msgstr "Сент"
-+msgstr "Сен"
-
- #: ../output.py:306
- msgid "Oct"
-@@ -564,84 +601,84 @@ msgstr "Дек"
-
- #: ../output.py:316
- msgid "Trying other mirror."
--msgstr "Попытка использования другого зеркала"
-+msgstr "Пробуем другое зеркало."
-
- #: ../output.py:534
- #, python-format
- msgid "Name : %s%s%s"
--msgstr "Имя : %s%s%s"
-+msgstr "Имя : %s%s%s"
-
- #: ../output.py:535
- #, python-format
- msgid "Arch : %s"
--msgstr "Арх. : %s"
-+msgstr "Архитектура : %s"
-
- #: ../output.py:537
- #, python-format
- msgid "Epoch : %s"
--msgstr "Период: %s"
-+msgstr "Период : %s"
-
- #: ../output.py:538
- #, python-format
- msgid "Version : %s"
--msgstr "Версия : %s"
-+msgstr "Версия : %s"
-
- #: ../output.py:539
- #, python-format
- msgid "Release : %s"
--msgstr "Релиз: %s"
-+msgstr "Релиз : %s"
-
- #: ../output.py:540
- #, python-format
- msgid "Size : %s"
--msgstr "Размер: %s"
-+msgstr "Размер : %s"
-
- #: ../output.py:541
- #, python-format
- msgid "Repo : %s"
--msgstr "Репозиторий: %s"
-+msgstr "Репозиторий : %s"
-
- #: ../output.py:543
- #, python-format
- msgid "From repo : %s"
--msgstr "С репозитория: %s"
-+msgstr "Из репозитария : %s"
-
- #: ../output.py:545
- #, python-format
- msgid "Committer : %s"
--msgstr "Создатель: %s"
-+msgstr "Создатель : %s"
-
- #: ../output.py:546
- #, python-format
- msgid "Committime : %s"
--msgstr "Время создания: %s"
-+msgstr "Время создания : %s"
-
- #: ../output.py:547
- #, python-format
- msgid "Buildtime : %s"
--msgstr "Время сборки: %s"
-+msgstr "Время сборки : %s"
-
- #: ../output.py:549
- #, python-format
- msgid "Installtime: %s"
--msgstr "Установочное время: %s"
-+msgstr "Время установки: %s"
-
- #: ../output.py:550
- msgid "Summary : "
--msgstr "Суммарно:"
-+msgstr "Аннотация : "
-
- #: ../output.py:552
- #, python-format
- msgid "URL : %s"
--msgstr "Ссылка: %s"
-+msgstr "Ссылка : %s"
-
- #: ../output.py:553
- msgid "License : "
--msgstr "Лицензия : %s"
-+msgstr "Лицензия : "
-
- #: ../output.py:554
- msgid "Description: "
--msgstr "Описание:"
-+msgstr "Описание : "
-
- #: ../output.py:622
- msgid "y"
-@@ -649,7 +686,7 @@ msgstr "y"
-
- #: ../output.py:622
- msgid "yes"
--msgstr "Да"
-+msgstr "да"
-
- #: ../output.py:623
- msgid "n"
-@@ -657,11 +694,11 @@ msgstr "n"
-
- #: ../output.py:623
- msgid "no"
--msgstr "Нет"
-+msgstr "нет"
-
- #: ../output.py:627
- msgid "Is this ok [y/N]: "
--msgstr "Выполнить [y/N]: "
-+msgstr "Продолжить? [y/N]: "
-
- #: ../output.py:715
- #, python-format
-@@ -670,12 +707,12 @@ msgid ""
- "Group: %s"
- msgstr ""
- "\n"
--"Группа: %s"
-+"Коллекция: %s"
-
- #: ../output.py:719
- #, python-format
- msgid " Group-Id: %s"
--msgstr " Идентификатор группы: %s"
-+msgstr " Код коллекции: %s"
-
- #: ../output.py:724
- #, python-format
-@@ -684,7 +721,7 @@ msgstr " Описание: %s"
-
- #: ../output.py:726
- msgid " Mandatory Packages:"
--msgstr " Обязательные пакеты"
-+msgstr " Обязательные пакеты:"
-
- #: ../output.py:727
- msgid " Default Packages:"
-@@ -714,12 +751,12 @@ msgstr " зависимость: %s"
-
- #: ../output.py:758
- msgid " Unsatisfied dependency"
--msgstr " Зависимость неудовлетворена"
-+msgstr " Неудовлетворенная зависимость"
-
- #: ../output.py:830
- #, python-format
- msgid "Repo : %s"
--msgstr "Репозиторий: %s"
-+msgstr "Репозиторий : %s"
-
- #: ../output.py:831
- msgid "Matched from:"
-@@ -727,30 +764,30 @@ msgstr "Совпадения с:"
-
- #: ../output.py:840
- msgid "Description : "
--msgstr "Описание:"
-+msgstr "Описание : "
-
- #: ../output.py:843
- #, python-format
- msgid "URL : %s"
--msgstr "Ссылка: %s"
-+msgstr "Ссылка : %s"
-
- #: ../output.py:846
- #, python-format
- msgid "License : %s"
--msgstr "Лицензия: %s"
-+msgstr "Лицензия : %s"
-
- #: ../output.py:849
- #, python-format
- msgid "Filename : %s"
--msgstr "Имя файла: %s"
-+msgstr "Имя файла : %s"
-
- #: ../output.py:853
- msgid "Other : "
--msgstr "Другое:"
-+msgstr "Другое : "
-
- #: ../output.py:896
- msgid "There was an error calculating total download size"
--msgstr "Произошла ошибка при подсчёте общего объёма загрузки"
-+msgstr "Произошла ошибка при подсчете общего объема загрузки"
-
- #: ../output.py:901
- #, python-format
-@@ -760,20 +797,20 @@ msgstr "Общий размер: %s"
- #: ../output.py:904
- #, python-format
- msgid "Total download size: %s"
--msgstr "Общий объем загрузки: %s"
-+msgstr "Объем загрузки: %s"
-
- #: ../output.py:908
- #, python-format
- msgid "Installed size: %s"
--msgstr "установленный размер: %s"
-+msgstr "Будет установлено: %s"
-
- #: ../output.py:949
- msgid "Reinstalling"
--msgstr "Переустановка:"
-+msgstr "Переустановка"
-
- #: ../output.py:950
- msgid "Downgrading"
--msgstr "Возврат к предыдущей версии"
-+msgstr "Откат версии"
-
- #: ../output.py:951
- msgid "Installing for dependencies"
-@@ -787,7 +824,8 @@ msgstr "Обновление зависимостей"
- msgid "Removing for dependencies"
- msgstr "Удаление зависимостей"
-
--#: ../output.py:960 ../output.py:1072
-+#: ../output.py:960
-+#: ../output.py:1072
- msgid "Skipped (dependency problems)"
- msgstr "Пропущено (ошибка зависимостей)"
-
-@@ -797,7 +835,7 @@ msgstr "Пакет"
-
- #: ../output.py:983
- msgid "Arch"
--msgstr "Арх."
-+msgstr "Архитектура"
-
- #: ../output.py:984
- msgid "Version"
-@@ -824,7 +862,7 @@ msgid ""
- "%s\n"
- msgstr ""
- "\n"
--"Итог\n"
-+"Результат операции\n"
- "%s\n"
-
- #: ../output.py:1013
-@@ -833,7 +871,7 @@ msgid ""
- "Install %5.5s Package(s)\n"
- "Upgrade %5.5s Package(s)\n"
- msgstr ""
--"Установка %5.5s пакетов\n"
-+"Установка %5.5s пакетов\n"
- "Обновление %5.5s пакетов\n"
-
- #: ../output.py:1022
-@@ -843,9 +881,9 @@ msgid ""
- "Reinstall %5.5s Package(s)\n"
- "Downgrade %5.5s Package(s)\n"
- msgstr ""
--"Удаление %5.5s пакет(ов)\n"
--"Переустановка %5.5s пакета(ов)\n"
--"Возврат к предыдущей версии %5.5s пакета(ов)\n"
-+"Удаление %5.5s пакет(ов)\n"
-+"Переустановка %5.5s пакет(ов)\n"
-+"Откат версии %5.5s пакет(ов)\n"
-
- #: ../output.py:1066
- msgid "Removed"
-@@ -884,13 +922,11 @@ msgstr "два"
- #, python-format
- msgid ""
- "\n"
--" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s "
--"seconds\n"
-+" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n"
- "to exit.\n"
- msgstr ""
- "\n"
--"Текущая закачка отменена, %sвызвано (ctrl-c) повторите %s в течении%s%s%s "
--"секунд\n"
-+" Текущая закачка отменена, %sвызвано (ctrl-c) повторите%s в течении %s%s%s секунд\n"
- "для выхода.\n"
-
- #: ../output.py:1162
-@@ -935,13 +971,14 @@ msgstr "Система"
-
- #: ../output.py:1254
- msgid "Bad transaction IDs, or package(s), given"
--msgstr "Передан плохой идентификатор транзакции или пакет(ы)"
-+msgstr "Передан(ы) неверный код действий или пакет(ы)"
-
- #: ../output.py:1266
- msgid "ID"
- msgstr "ID"
-
--#: ../output.py:1267 ../output.py:1520
-+#: ../output.py:1267
-+#: ../output.py:1520
- msgid "Login user"
- msgstr "Вход пользователя"
-
-@@ -949,45 +986,48 @@ msgstr "Вход пользователя"
- msgid "Date and time"
- msgstr "Дата и время"
-
--#: ../output.py:1269 ../output.py:1522
-+#: ../output.py:1269
-+#: ../output.py:1522
- msgid "Action(s)"
- msgstr "Действия"
-
--#: ../output.py:1270 ../output.py:1523
-+#: ../output.py:1270
-+#: ../output.py:1523
- msgid "Altered"
- msgstr "Изменено"
-
- #: ../output.py:1310
- msgid "No transaction ID given"
--msgstr "Идентификатор транзакции недоступен"
-+msgstr "Код действия не задан"
-
- #: ../output.py:1336
- msgid "Bad transaction ID given"
--msgstr "Плохой идентификатор транзакции"
-+msgstr "Код действия неверен"
-
- #: ../output.py:1341
- msgid "Not found given transaction ID"
--msgstr "Не найден данный ID транзакции"
-+msgstr "Указанный код действия не найден"
-
- #: ../output.py:1349
- msgid "Found more than one transaction ID!"
--msgstr "Найдено более одного ID транзакции!"
-+msgstr "Указано более одной операции!"
-
- #: ../output.py:1370
- msgid "No transaction ID, or package, given"
--msgstr "Нет данного ID транзакции или пакета"
-+msgstr "Не задан код действия или пакет"
-
- #: ../output.py:1396
- msgid "Transaction ID :"
--msgstr "Идентификатор транзакции:"
-+msgstr "Код операции :"
-
- #: ../output.py:1398
- msgid "Begin time :"
--msgstr "Время начала:"
-+msgstr "Время начала :"
-
--#: ../output.py:1401 ../output.py:1403
-+#: ../output.py:1401
-+#: ../output.py:1403
- msgid "Begin rpmdb :"
--msgstr "Начало базы данных RPM:"
-+msgstr "Начало rpmdb :"
-
- #: ../output.py:1417
- #, python-format
-@@ -996,19 +1036,22 @@ msgstr "(%s секунд)"
-
- #: ../output.py:1418
- msgid "End time :"
--msgstr "Конечное время:"
-+msgstr "Конечное время :"
-
--#: ../output.py:1421 ../output.py:1423
-+#: ../output.py:1421
-+#: ../output.py:1423
- msgid "End rpmdb :"
--msgstr "Конец базы данных RPM:"
-+msgstr "Конец rpmdb :"
-
- #: ../output.py:1424
- msgid "User :"
--msgstr "Пользователь:"
-+msgstr "Пользователь :"
-
--#: ../output.py:1426 ../output.py:1428 ../output.py:1430
-+#: ../output.py:1426
-+#: ../output.py:1428
-+#: ../output.py:1430
- msgid "Return-Code :"
--msgstr "Код возврата:"
-+msgstr "Код возврата :"
-
- #: ../output.py:1426
- msgid "Aborted"
-@@ -1024,11 +1067,12 @@ msgstr "Успешно"
-
- #: ../output.py:1431
- msgid "Transaction performed with:"
--msgstr "Транзакция выполняется с:"
-+msgstr "Действие выполнено:"
-
--#: ../output.py:1444 ../output.py:1489
-+#: ../output.py:1444
-+#: ../output.py:1489
- msgid "Downgraded"
--msgstr "Возвращено к предыдущей версии"
-+msgstr "Откачено"
-
- #. multiple versions installed, both older and newer
- #: ../output.py:1446
-@@ -1047,7 +1091,8 @@ msgstr "Вывод сценария:"
- msgid "Errors:"
- msgstr "Ошибки:"
-
--#: ../output.py:1481 ../output.py:1482
-+#: ../output.py:1481
-+#: ../output.py:1482
- msgid "Install"
- msgstr "Установка "
-
-@@ -1057,7 +1102,7 @@ msgstr "Установка зависимостей"
-
- #: ../output.py:1485
- msgid "Obsoleting"
--msgstr "Замена"
-+msgstr "Исключаем"
-
- #: ../output.py:1486
- msgid "Erase"
-@@ -1069,7 +1114,7 @@ msgstr "Переустановка"
-
- #: ../output.py:1488
- msgid "Downgrade"
--msgstr "Возврат к предыдущей версии"
-+msgstr "Откат версии"
-
- #: ../output.py:1490
- msgid "Update"
-@@ -1110,38 +1155,39 @@ msgstr "Более года назад"
-
- #: ../output.py:1585
- msgid "installed"
--msgstr "Установлено"
-+msgstr "для установки"
-
- #: ../output.py:1586
- msgid "updated"
--msgstr "Обновлено"
-+msgstr "для обновления"
-
- #: ../output.py:1587
- msgid "obsoleted"
--msgstr "Заменено"
-+msgstr "как недействительный"
-
- #: ../output.py:1588
- msgid "erased"
--msgstr "удалено"
-+msgstr "для удаления"
-
- #: ../output.py:1592
- #, python-format
- msgid "---> Package %s.%s %s:%s-%s set to be %s"
--msgstr "---> Пакет %s.%s %s:%s-%s должен %s"
-+msgstr "---> Пакет %s.%s %s:%s-%s помечен %s"
-
- #: ../output.py:1599
- msgid "--> Running transaction check"
--msgstr "--> Запуск проверки транзакции"
-+msgstr "--> Проверка сценария"
-
- #: ../output.py:1604
- msgid "--> Restarting Dependency Resolution with new changes."
--msgstr "--> Перезапуск разрешения зависимостей с новыми параметрами."
-+msgstr "--> Перепроверка зависимостей с новыми параметрами."
-
- #: ../output.py:1609
- msgid "--> Finished Dependency Resolution"
--msgstr "--> Окончание разрешения зависимостей"
-+msgstr "--> Проверка зависимостей окончена"
-
--#: ../output.py:1614 ../output.py:1619
-+#: ../output.py:1614
-+#: ../output.py:1619
- #, python-format
- msgid "--> Processing Dependency: %s for package: %s"
- msgstr "--> Обработка зависимостей: %s для пакета: %s"
-@@ -1149,7 +1195,7 @@ msgstr "--> Обработка зависимостей: %s для пакета:
- #: ../output.py:1623
- #, python-format
- msgid "--> Unresolved Dependency: %s"
--msgstr "--> Неразрешённая зависимость: %s"
-+msgstr "--> Неразрешенная зависимость: %s"
-
- #: ../output.py:1634
- #, python-format
-@@ -1165,7 +1211,8 @@ msgstr ""
- "\n"
- " Необходимо: %s"
-
--#: ../output.py:1649 ../output.py:1660
-+#: ../output.py:1649
-+#: ../output.py:1660
- #, python-format
- msgid ""
- "\n"
-@@ -1178,20 +1225,20 @@ msgstr ""
- msgid "Available"
- msgstr "Доступно"
-
--#: ../output.py:1665 ../output.py:1670
-+#: ../output.py:1665
-+#: ../output.py:1670
- #, python-format
- msgid "--> Processing Conflict: %s conflicts %s"
--msgstr "--> Конфликт обработки: %s конфликтует %s"
-+msgstr "--> Обработка конфликта: %s конфликтует с %s"
-
- #: ../output.py:1674
- msgid "--> Populating transaction set with selected packages. Please wait."
--msgstr ""
--"--> Формирование транзакций для выбранных пакетов. Пожалуйста подождите."
-+msgstr "--> Заполнение списка действий выбранными пакетами. Подождите, пожалуйста."
-
- #: ../output.py:1678
- #, python-format
- msgid "---> Downloading header for %s to pack into transaction set."
--msgstr "-- > Загрузка заголовков %s для создания набора транзакций"
-+msgstr "---> Загрузка заголовка %s для включения в список."
-
- #: ../utils.py:93
- msgid "Running"
-@@ -1213,7 +1260,8 @@ msgstr "Зомби"
- msgid "Traced/Stopped"
- msgstr "Трассировано/Остановлено"
-
--#: ../utils.py:98 ../yumcommands.py:917
-+#: ../utils.py:98
-+#: ../yumcommands.py:917
- msgid "Unknown"
- msgstr "Неизвестно"
-
-@@ -1229,29 +1277,30 @@ msgstr " Другое приложение: %s"
- #: ../utils.py:114
- #, python-format
- msgid " Memory : %5s RSS (%5sB VSZ)"
--msgstr " Память: %5s RSS (%5sB VSZ)"
-+msgstr " Память : %5s RSS (%5sB VSZ)"
-
- #: ../utils.py:119
- #, python-format
- msgid " Started: %s - %s ago"
--msgstr " Запущено: %s - %s назад"
-+msgstr " Запущено : %s — %s назад"
-
- #: ../utils.py:121
- #, python-format
- msgid " State : %s, pid: %d"
--msgstr " Статус: %s, pid: %d"
-+msgstr " Статус : %s, pid: %d"
-
- #: ../utils.py:199
- #, python-format
- msgid "PluginExit Error: %s"
--msgstr "Ошибка выхода плагина: %s"
-+msgstr "Ошибка PluginExit: %s"
-
- #: ../utils.py:202
- #, python-format
- msgid "Yum Error: %s"
- msgstr "Ошибка Yum: %s"
-
--#: ../utils.py:235 ../yummain.py:42
-+#: ../utils.py:235
-+#: ../yummain.py:42
- msgid ""
- "\n"
- "\n"
-@@ -1261,7 +1310,8 @@ msgstr ""
- "\n"
- "Выход по запросу пользователя"
-
--#: ../utils.py:241 ../yummain.py:48
-+#: ../utils.py:241
-+#: ../yummain.py:48
- msgid ""
- "\n"
- "\n"
-@@ -1271,7 +1321,8 @@ msgstr ""
- "\n"
- "Выход из-за разрыва связи"
-
--#: ../utils.py:243 ../yummain.py:50
-+#: ../utils.py:243
-+#: ../yummain.py:50
- #, python-format
- msgid ""
- "\n"
-@@ -1282,9 +1333,10 @@ msgstr ""
- "\n"
- "%s"
-
--#: ../utils.py:282 ../yummain.py:211
-+#: ../utils.py:282
-+#: ../yummain.py:211
- msgid "Complete!"
--msgstr "Выполнено!"
-+msgstr "Готово!"
-
- #: ../yumcommands.py:43
- msgid "You need to be root to perform this command."
-@@ -1294,8 +1346,7 @@ msgstr "Необходимы привилегии суперпользовате
- msgid ""
- "\n"
- "You have enabled checking of packages via GPG keys. This is a good thing. \n"
--"However, you do not have any GPG public keys installed. You need to "
--"download\n"
-+"However, you do not have any GPG public keys installed. You need to download\n"
- "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"
-@@ -1312,15 +1363,14 @@ msgstr ""
- "Однако, у вас не установлено публичных ключей GPG. Вам необходимо скачать\n"
- "ключи для пакетов которые хотите установить, и затем запускать установку.\n"
- "Вы можете выполнить это при помощи команды\n"
--"rpm --import public.gpg.key\n"
-+" rpm --import public.gpg.key\n"
- "\n"
- "\n"
- "Вы также можете ввести адрес ключ, который будет использоваться\n"
--"для репозитория. Опция \"gpgkey\" в секции репозитория и Yum\n"
--"установит его.\n"
-+"для репозитория. Опция 'gpgkey' в секции репозитория и Yum\n"
-+"установит его за Вас.\n"
- "\n"
--"Чтобы узнать больше, пожалуйста, свяжитесь с поставщиком дистрибутива или "
--"пакета.\n"
-+"Чтобы узнать больше, пожалуйста, свяжитесь с поставщиком дистрибутива или пакета.\n"
-
- #: ../yumcommands.py:70
- #, python-format
-@@ -1333,12 +1383,12 @@ msgstr "Ошибка: Необходим параметр для соответ
-
- #: ../yumcommands.py:82
- msgid "Error: Need a group or list of groups"
--msgstr "Ошибка: Необходима группа или список групп"
-+msgstr "Ошибка: нужна коллекция или список групп"
-
- #: ../yumcommands.py:91
- #, python-format
- msgid "Error: clean requires an option: %s"
--msgstr "Ошибка: очистка требует опции %s"
-+msgstr "Ошибка: очистка требует опции: %s"
-
- #: ../yumcommands.py:96
- #, python-format
-@@ -1357,14 +1407,11 @@ msgstr "Имя файла принятое для командной оболо
- #: ../yumcommands.py:115
- #, python-format
- msgid "File %s given as argument to shell does not exist."
--msgstr ""
--"Файл %s переданный в качестве аргумента для командной оболочки не существует."
-+msgstr "Файл %s переданный в качестве аргумента для командной оболочки не существует."
-
- #: ../yumcommands.py:121
- msgid "Error: more than one file given as argument to shell."
--msgstr ""
--"Ошибка: более чем один файл указан в качестве аргумента для командной "
--"оболочки."
-+msgstr "Ошибка: более чем один файл указан в качестве аргумента для командной оболочки."
-
- #: ../yumcommands.py:170
- msgid "PACKAGE..."
-@@ -1372,11 +1419,11 @@ msgstr "ПАКЕТ..."
-
- #: ../yumcommands.py:173
- msgid "Install a package or packages on your system"
--msgstr "Установка пакета(пакетов) в вашей системе"
-+msgstr "Установка пакета(ов) в систему"
-
- #: ../yumcommands.py:181
- msgid "Setting up Install Process"
--msgstr "Настройка процесса установки"
-+msgstr "Подготовка к установке"
-
- #: ../yumcommands.py:192
- msgid "[PACKAGE...]"
-@@ -1384,15 +1431,15 @@ msgstr "[ПАКЕТ...]"
-
- #: ../yumcommands.py:195
- msgid "Update a package or packages on your system"
--msgstr "Обновление пакета(ов) в вашей системе"
-+msgstr "Обновление пакета(ов) в системе"
-
- #: ../yumcommands.py:202
- msgid "Setting up Update Process"
--msgstr "Настройка процесса обновления"
-+msgstr "Подготовка к обновлению"
-
- #: ../yumcommands.py:244
- msgid "Display details about a package or group of packages"
--msgstr "Отобразить подробности о пакете или о группе пакетов"
-+msgstr "Отобразить информацию о пакете или о коллекции пакетов"
-
- #: ../yumcommands.py:293
- msgid "Installed Packages"
-@@ -1408,12 +1455,14 @@ msgstr "Дополнительные пакеты"
-
- #: ../yumcommands.py:309
- msgid "Updated Packages"
--msgstr "Обновлённые пакеты"
-+msgstr "Обновленные пакеты"
-
- #. This only happens in verbose mode
--#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
-+#: ../yumcommands.py:317
-+#: ../yumcommands.py:324
-+#: ../yumcommands.py:601
- msgid "Obsoleting Packages"
--msgstr "Заменённые пакеты"
-+msgstr "Исключенные пакеты"
-
- #: ../yumcommands.py:326
- msgid "Recently Added Packages"
-@@ -1421,43 +1470,43 @@ msgstr "Недавно добавленные пакеты"
-
- #: ../yumcommands.py:333
- msgid "No matching Packages to list"
--msgstr "Нет совпадений с списком пакетов"
-+msgstr "Совпадений среди пакетов не найдено"
-
- #: ../yumcommands.py:347
- msgid "List a package or groups of packages"
--msgstr "Список пакетов или группы пакетов"
-+msgstr "Вывести список пакетов или коллекций пакетов"
-
- #: ../yumcommands.py:359
- msgid "Remove a package or packages from your system"
--msgstr "Удаление пакета(пакетов) с вашей системы"
-+msgstr "Удаление пакета(ов) из системы"
-
- #: ../yumcommands.py:366
- msgid "Setting up Remove Process"
--msgstr "Настройка процесса удаления"
-+msgstr "Подготовка к удалению"
-
- #: ../yumcommands.py:380
- msgid "Setting up Group Process"
--msgstr "Настройка группового процесса"
-+msgstr "Подготовка к обработке коллекции"
-
- #: ../yumcommands.py:386
- msgid "No Groups on which to run command"
--msgstr "Нет групп для запуска команды"
-+msgstr "Коллекций пакетов к обработке нет"
-
- #: ../yumcommands.py:399
- msgid "List available package groups"
--msgstr "Список доступных групп пакетов"
-+msgstr "Список доступных коллекций пакетов"
-
- #: ../yumcommands.py:416
- msgid "Install the packages in a group on your system"
--msgstr "Установка пакетов из группы в вашу систему"
-+msgstr "Установка коллекции пакетов в систему"
-
- #: ../yumcommands.py:438
- msgid "Remove the packages in a group from your system"
--msgstr "Удаление пакета(пакетов) с вашей системы из группы"
-+msgstr "Удаление коллекции пакета(ов) из системы"
-
- #: ../yumcommands.py:465
- msgid "Display details about a package group"
--msgstr "Отображение подробностей о группе пакетов"
-+msgstr "Показать информацию о коллекции пакетов"
-
- #: ../yumcommands.py:489
- msgid "Generate the metadata cache"
-@@ -1469,7 +1518,7 @@ msgstr "Создание кэша для всех метаданных файл
-
- #: ../yumcommands.py:496
- msgid "This may take a while depending on the speed of this computer"
--msgstr "Это займёт немного времени, в зависимости от скорости компьютера"
-+msgstr "Это займет немного времени, в зависимости от скорости компьютера"
-
- #: ../yumcommands.py:517
- msgid "Metadata Cache Created"
-@@ -1477,7 +1526,7 @@ msgstr "Кэш метаданных создан"
-
- #: ../yumcommands.py:531
- msgid "Remove cached data"
--msgstr "Удаление закэшированных данных"
-+msgstr "Удаление кэшированных данных"
-
- #: ../yumcommands.py:551
- msgid "Find what package provides the given value"
-@@ -1497,7 +1546,7 @@ msgstr "Поиск пакетов:"
-
- #: ../yumcommands.py:644
- msgid "Update packages taking obsoletes into account"
--msgstr "Обновить пакеты, учитывая замены"
-+msgstr "Обновить пакеты, учитывая недействительные"
-
- #: ../yumcommands.py:652
- msgid "Setting up Upgrade Process"
-@@ -1509,7 +1558,7 @@ msgstr "Установка локального пакета"
-
- #: ../yumcommands.py:674
- msgid "Setting up Local Package Process"
--msgstr "Настройка процесса для локального пакета"
-+msgstr "Подготовка действий с локальным пакетом"
-
- #: ../yumcommands.py:693
- msgid "Determine which package provides the given dependency"
-@@ -1539,65 +1588,67 @@ msgstr "Поиск зависимостей:"
- msgid "Display the configured software repositories"
- msgstr "Отобразить сконфигурированные репозитории ПО"
-
--#: ../yumcommands.py:822 ../yumcommands.py:823
-+#: ../yumcommands.py:822
-+#: ../yumcommands.py:823
- msgid "enabled"
- msgstr "включено"
-
--#: ../yumcommands.py:849 ../yumcommands.py:850
-+#: ../yumcommands.py:849
-+#: ../yumcommands.py:850
- msgid "disabled"
- msgstr "отключено"
-
- #: ../yumcommands.py:866
- msgid "Repo-id : "
--msgstr "Идентификатор репозитория:"
-+msgstr "Код репозитория : "
-
- #: ../yumcommands.py:867
- msgid "Repo-name : "
--msgstr "Имя репозитория:"
-+msgstr "Имя репозитория : "
-
- #: ../yumcommands.py:870
- msgid "Repo-status : "
--msgstr "Статус репозитория:"
-+msgstr "Состояние репозитория: "
-
- #: ../yumcommands.py:873
- msgid "Repo-revision: "
--msgstr "Ревизия репозитория:"
-+msgstr "Ревизия репозитория : "
-
- #: ../yumcommands.py:877
- msgid "Repo-tags : "
--msgstr "Метки репозитория:"
-+msgstr "Метки репозитория : "
-
- #: ../yumcommands.py:883
- msgid "Repo-distro-tags: "
--msgstr "Метки репозитория дистрибутива:"
-+msgstr "Метки дистрибутива : "
-
- #: ../yumcommands.py:888
- msgid "Repo-updated : "
--msgstr "Репозиторий обновлён:"
-+msgstr "Репозиторий обновлен : "
-
- #: ../yumcommands.py:890
- msgid "Repo-pkgs : "
--msgstr "Пакеты репозитория:"
-+msgstr "Пакеты репозитория : "
-
- #: ../yumcommands.py:891
- msgid "Repo-size : "
--msgstr "Размер репозитория:"
-+msgstr "Размер репозитория : "
-
- #: ../yumcommands.py:898
- msgid "Repo-baseurl : "
--msgstr "Ссылка на репозиторий:"
-+msgstr "baseurl репозитория : "
-
- #: ../yumcommands.py:906
- msgid "Repo-metalink: "
--msgstr "Метассылка репозитория:"
-+msgstr "metalink репозитория : "
-
- #: ../yumcommands.py:910
- msgid " Updated : "
--msgstr " Обновлено: "
-+msgstr " Обновлено : "
-
- #: ../yumcommands.py:913
- msgid "Repo-mirrors : "
--msgstr "Зеркала репозитория:"
-+msgstr "Зеркала репозитория : "
-
- #: ../yumcommands.py:923
- #, python-format
-@@ -1616,37 +1667,40 @@ msgstr "%s секунд(а) (осталось: %s)"
-
- #: ../yumcommands.py:930
- msgid "Repo-expire : "
--msgstr "Окончание срока репозитория:"
-+msgstr "Окончание срока репозитория: "
-
- #: ../yumcommands.py:933
- msgid "Repo-exclude : "
--msgstr "Исключения репозитория:"
-+msgstr "Исключения репозитория : "
-
- #: ../yumcommands.py:937
- msgid "Repo-include : "
--msgstr "Включено в репозиторий:"
-+msgstr "Включено в репозиторий : "
-
- #: ../yumcommands.py:941
- msgid "Repo-excluded: "
--msgstr "Исключено из репозитория:"
-+msgstr "Исключено из репозитория : "
-
- #. Work out the first (id) and last (enabled/disalbed/count),
- #. then chop the middle (name)...
--#: ../yumcommands.py:951 ../yumcommands.py:980
-+#: ../yumcommands.py:951
-+#: ../yumcommands.py:980
- msgid "repo id"
- msgstr "Идентификатор репозитория"
-
--#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
-+#: ../yumcommands.py:968
-+#: ../yumcommands.py:969
-+#: ../yumcommands.py:987
- msgid "status"
--msgstr "статус"
-+msgstr "состояние"
-
- #: ../yumcommands.py:981
- msgid "repo name"
--msgstr "имя репозитория"
-+msgstr "репозиторий"
-
- #: ../yumcommands.py:1018
- msgid "Display a helpful usage message"
--msgstr "Отобразить сообщение помощи"
-+msgstr "Отобразить подсказку к использованию"
-
- #: ../yumcommands.py:1052
- #, python-format
-@@ -1661,7 +1715,7 @@ msgid ""
- msgstr ""
- "\n"
- "\n"
--"альтернативные названия:"
-+"альтернативные названия: "
-
- #: ../yumcommands.py:1059
- msgid ""
-@@ -1671,23 +1725,23 @@ msgid ""
- msgstr ""
- "\n"
- "\n"
--"альтернативное название:"
-+"альтернативное название: "
-
- #: ../yumcommands.py:1087
- msgid "Setting up Reinstall Process"
--msgstr "Настройка процесса переустановки"
-+msgstr "Подготовка к повторной установке"
-
- #: ../yumcommands.py:1095
- msgid "reinstall a package"
--msgstr "Переустановка пакета"
-+msgstr "переустановка пакета"
-
- #: ../yumcommands.py:1113
- msgid "Setting up Downgrade Process"
--msgstr "Настройка процесса возврата к предыдущей версии"
-+msgstr "Подготовка к откату версии"
-
- #: ../yumcommands.py:1120
- msgid "downgrade a package"
--msgstr "Возврат к предыдущей версии пакета"
-+msgstr "откат к предыдущей версии пакета"
-
- #: ../yumcommands.py:1134
- msgid "Display a version for the machine and/or available repos."
-@@ -1699,55 +1753,56 @@ msgstr " Группы версий Yum:"
-
- #: ../yumcommands.py:1183
- msgid " Group :"
--msgstr " Группа:"
-+msgstr " Коллекция :"
-
- #: ../yumcommands.py:1184
- msgid " Packages:"
--msgstr " Пакеты:"
-+msgstr " Пакеты :"
-
- #: ../yumcommands.py:1213
- msgid "Installed:"
--msgstr "Установлено: "
-+msgstr "Установлен(ы):"
-
- #: ../yumcommands.py:1218
- msgid "Group-Installed:"
--msgstr "Группа установленных:"
-+msgstr "Установлены коллекции:"
-
- #: ../yumcommands.py:1227
- msgid "Available:"
--msgstr "Доступно:"
-+msgstr "Доступен(ы):"
-
- #: ../yumcommands.py:1233
- msgid "Group-Available:"
--msgstr "Группа доступных:"
-+msgstr "Доступны коллекции :"
-
- #: ../yumcommands.py:1272
- msgid "Display, or use, the transaction history"
--msgstr "Отображать или использовать историю транзакций"
-+msgstr "Отобразить (или использовать) журнал операций"
-
- #: ../yumcommands.py:1300
- #, python-format
- msgid "Invalid history sub-command, use: %s."
--msgstr "Неверная субкоманда истории, используйте:%s."
-+msgstr "Неверная подкоманда журнала, используйте: %s."
-
- #: ../yumcommands.py:1345
- msgid "Check for problems in the rpmdb"
- msgstr "Проверка проблем в базе данных RPM"
-
- #: ../yummain.py:102
--msgid ""
--"Another app is currently holding the yum lock; waiting for it to exit..."
-+msgid "Another app is currently holding the yum lock; waiting for it to exit..."
- msgstr "Еще одно приложение, в настоящее время блокирует Yum. Подождите..."
-
--#: ../yummain.py:130 ../yummain.py:169
-+#: ../yummain.py:130
-+#: ../yummain.py:169
- #, python-format
- msgid "Error: %s"
- msgstr "Ошибка: %s"
-
--#: ../yummain.py:140 ../yummain.py:182
-+#: ../yummain.py:140
-+#: ../yummain.py:182
- #, python-format
- msgid "Unknown Error(s): Exit Code: %d:"
--msgstr "Неизвестная ошибка(ошибки): Код выхода:%d:"
-+msgstr "Неизвестная ошибка(ошибки): Код выхода: %d:"
-
- #. Depsolve stage
- #: ../yummain.py:147
-@@ -1756,9 +1811,10 @@ msgstr "Разрешение зависимостей"
-
- #: ../yummain.py:173
- msgid " You could try using --skip-broken to work around the problem"
--msgstr " Вы можете попробовать --skip-broken чтобы обойти проблему."
-+msgstr " Вы можете попробовать --skip-broken чтобы обойти проблему"
-
--#: ../yummain.py:175 ../yummain.py:208
-+#: ../yummain.py:175
-+#: ../yummain.py:208
- msgid " You could try running: rpm -Va --nofiles --nodigest"
- msgstr " Вы можете попробовать запустить: rpm -Va --nofiles --nodigest"
-
-@@ -1782,11 +1838,11 @@ msgstr ""
-
- #: ../yum/depsolve.py:82
- msgid "doTsSetup() will go away in a future version of Yum.\n"
--msgstr "doTsSetup() будет устранён в следующей версии Yum\n"
-+msgstr "doTsSetup() будет устранен в следующей версии Yum\n"
-
- #: ../yum/depsolve.py:97
- msgid "Setting up TransactionSets before config class is up"
--msgstr "Настройка набора транзакций до включения класса конфигурации"
-+msgstr "Составление списка действий до включения класса конфигурации"
-
- #: ../yum/depsolve.py:148
- #, python-format
-@@ -1801,22 +1857,23 @@ msgstr "Поиск набора пакетов для зависимости: %s
- #: ../yum/depsolve.py:175
- #, python-format
- msgid "Potential match for %s from %s"
--msgstr "Потенциальное совпадение для %s из %s"
-+msgstr "Возможное совпадение для %s из %s"
-
- #: ../yum/depsolve.py:183
- #, python-format
- msgid "Matched %s to require for %s"
--msgstr "%s подходит в качестве требования для %s"
-+msgstr "%s подходит как требуемый для %s"
-
- #: ../yum/depsolve.py:225
- #, python-format
- msgid "Member: %s"
- msgstr "Член: %s"
-
--#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
-+#: ../yum/depsolve.py:239
-+#: ../yum/depsolve.py:754
- #, python-format
- msgid "%s converted to install"
--msgstr "%s сконвертировано для установки"
-+msgstr "%s преобразован для установки"
-
- #: ../yum/depsolve.py:246
- #, python-format
-@@ -1850,7 +1907,7 @@ msgstr "Требуемая зависимость не является имен
- #: ../yum/depsolve.py:363
- #, python-format
- msgid "Potential Provider: %s"
--msgstr "Потенциальный поставщик:%s"
-+msgstr "Возможный поставщик: %s"
-
- #: ../yum/depsolve.py:386
- #, python-format
-@@ -1870,8 +1927,7 @@ msgstr "TSINFO: %s пакет необходимый для %s был помеч
- #: ../yum/depsolve.py:407
- #, python-format
- msgid "TSINFO: Obsoleting %s with %s to resolve dep."
--msgstr ""
--"TSINFO: Замена устаревшего %s пакета пакетом %s чтобы разрешить зависимости."
-+msgstr "TSINFO: Замена устаревшего %s пакета пакетом %s чтобы разрешить зависимости."
-
- #: ../yum/depsolve.py:410
- #, python-format
-@@ -1881,7 +1937,7 @@ msgstr "TSINFO: Обновление %s для разрешения зависи
- #: ../yum/depsolve.py:418
- #, python-format
- msgid "Cannot find an update path for dep for: %s"
--msgstr "Не удаётся найти путь обновления зависимости для: %s"
-+msgstr "Не удается найти путь обновления зависимости для: %s"
-
- #: ../yum/depsolve.py:449
- #, python-format
-@@ -1897,19 +1953,17 @@ msgstr "Зависимый пакет %s уже установлен и буде
- #: ../yum/depsolve.py:507
- #, python-format
- msgid "Potential resolving package %s has newer instance in ts."
--msgstr ""
--"Пакет %s новой версии, потенциально разрешающий, находится в составе "
--"транзакции."
-+msgstr "Пакет %s в сценарии новее доступного"
-
- #: ../yum/depsolve.py:518
- #, python-format
- msgid "Potential resolving package %s has newer instance installed."
--msgstr "Пакет %s ,потенциально разрешающий, установлен новой версии."
-+msgstr "Более новый пакет %s уже установлен в систему."
-
- #: ../yum/depsolve.py:536
- #, python-format
- msgid "%s already in ts, skipping this one"
--msgstr "%s уже находится в наборе транзакций, пропуск"
-+msgstr "%s уже в списке к действию, пропускаем его"
-
- #: ../yum/depsolve.py:578
- #, python-format
-@@ -1921,11 +1975,14 @@ msgstr "TSINFO: %s отмечен как обновление для %s"
- msgid "TSINFO: Marking %s as install for %s"
- msgstr "TSINFO: Отмечен %s чтобы установить %s"
-
--#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
-+#: ../yum/depsolve.py:690
-+#: ../yum/depsolve.py:781
- msgid "Success - empty transaction"
--msgstr "Успех - пустая транзакция"
-+msgstr "Успешно — пустой сценарий"
-
--#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
-+#: ../yum/depsolve.py:729
-+#: ../yum/depsolve.py:744
-+#, fuzzy
- msgid "Restarting Loop"
- msgstr "Перезапуск петли"
-
-@@ -1940,7 +1997,7 @@ msgstr "%s из %s имеет проблемы с разрешением зав
-
- #: ../yum/depsolve.py:782
- msgid "Success - deps resolved"
--msgstr "Успешно - зависимости разрешены"
-+msgstr "Успешно — зависимости разрешены"
-
- #: ../yum/depsolve.py:796
- #, python-format
-@@ -1957,7 +2014,8 @@ msgstr "поиск %s требуется для %s"
- msgid "Running compare_providers() for %s"
- msgstr "Запуск compare_providers() для %s"
-
--#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
-+#: ../yum/depsolve.py:1117
-+#: ../yum/depsolve.py:1123
- #, python-format
- msgid "better arch in po %s"
- msgstr "Лучший архив в %s"
-@@ -1965,16 +2023,16 @@ msgstr "Лучший архив в %s"
- #: ../yum/depsolve.py:1218
- #, python-format
- msgid "%s obsoletes %s"
--msgstr "%s заменяет %s"
-+msgstr "%s исключает %s"
-
- #: ../yum/depsolve.py:1230
--#, python-format
-+#, fuzzy, python-format
- msgid ""
- "archdist compared %s to %s on %s\n"
- " Winner: %s"
- msgstr ""
- "archdist сравнение %s до %s в %s\n"
--" Победитель:%s"
-+" Победитель: %s"
-
- #: ../yum/depsolve.py:1237
- #, python-format
-@@ -1984,7 +2042,7 @@ msgstr "общий источник RPM %s и %s"
- #: ../yum/depsolve.py:1241
- #, python-format
- msgid "base package %s is installed for %s"
--msgstr "базовый пакет %s установлен для %s."
-+msgstr "базовый пакет %s установлен для %s"
-
- #: ../yum/depsolve.py:1247
- #, python-format
-@@ -1998,20 +2056,20 @@ msgstr "Лучший выбор: %s"
-
- #: ../yum/__init__.py:192
- msgid "doConfigSetup() will go away in a future version of Yum.\n"
--msgstr "doConfigSetup() будет устранён в следующей версии Yum.\n"
-+msgstr "doConfigSetup() будет устранен в следующей версии Yum.\n"
-
- #: ../yum/__init__.py:424
- #, python-format
- msgid "Repository %r is missing name in configuration, using id"
--msgstr "Хранилище %r не имеет названия в конфигурации, используются ID"
-+msgstr "Репозиторий %r не имеет названия в конфигурации, используется ID"
-
- #: ../yum/__init__.py:462
- msgid "plugins already initialised"
--msgstr "плагин уже инициализирован"
-+msgstr "модули уже загружены"
-
- #: ../yum/__init__.py:469
- msgid "doRpmDBSetup() will go away in a future version of Yum.\n"
--msgstr "doRpmDBSetup() будет устранён в следующей версии Yum.\n"
-+msgstr "doRpmDBSetup() будет устранен в следующей версии Yum.\n"
-
- #: ../yum/__init__.py:480
- msgid "Reading Local RPMDB"
-@@ -2019,11 +2077,11 @@ msgstr "Чтение локальной базы данных RPM"
-
- #: ../yum/__init__.py:504
- msgid "doRepoSetup() will go away in a future version of Yum.\n"
--msgstr "doRepoSetup() будет устранён в следующей версии Yum.\n"
-+msgstr "doRepoSetup() будет устранен в следующей версии Yum.\n"
-
- #: ../yum/__init__.py:524
- msgid "doSackSetup() will go away in a future version of Yum.\n"
--msgstr "doSackSetup() будет устранён в следующей версии Yum.\n"
-+msgstr "doSackSetup() будет устранен в следующей версии Yum.\n"
-
- #: ../yum/__init__.py:554
- msgid "Setting up Package Sacks"
-@@ -2040,7 +2098,7 @@ msgstr "поэтому этот репозиторий не может быть
-
- #: ../yum/__init__.py:605
- msgid "doUpdateSetup() will go away in a future version of Yum.\n"
--msgstr "doUpdateSetup() будет устранён в следующей версии Yum.\n"
-+msgstr "doUpdateSetup() будет устранен в следующей версии Yum.\n"
-
- #: ../yum/__init__.py:617
- msgid "Building updates object"
-@@ -2048,39 +2106,39 @@ msgstr "Построение объекта обновлений"
-
- #: ../yum/__init__.py:652
- msgid "doGroupSetup() will go away in a future version of Yum.\n"
--msgstr "doGroupSetup() будет устранён в следующей версии Yum.\n"
-+msgstr "doGroupSetup() будет устранен в следующей версии Yum.\n"
-
- #: ../yum/__init__.py:677
- msgid "Getting group metadata"
--msgstr "Получение метаданных групп"
-+msgstr "Получение метаданных коллекции"
-
- #: ../yum/__init__.py:703
- #, python-format
- msgid "Adding group file from repository: %s"
--msgstr "Добавление файла групп из репозитория: %s"
-+msgstr "Добавление файла коллекций из репозитория: %s"
-
- #: ../yum/__init__.py:712
- #, python-format
- msgid "Failed to add groups file for repository: %s - %s"
--msgstr "Ошибка добавления файла групп для репозитория: %s - %s"
-+msgstr "Ошибка добавления файла коллекций для репозитория: %s — %s"
-
- #: ../yum/__init__.py:718
- msgid "No Groups Available in any repository"
--msgstr "Нет доступных групп в любом репозитории"
-+msgstr "Ни в одном репозитории нет доступных коллекций"
-
- #: ../yum/__init__.py:730
- msgid "Getting pkgtags metadata"
--msgstr "Загрузка метаданных меток пакета "
-+msgstr "Загрузка метаданных меток пакета"
-
- #: ../yum/__init__.py:740
- #, python-format
- msgid "Adding tags from repository: %s"
--msgstr "Добавление меток с репозитория: %s"
-+msgstr "Добавление меток из репозитория: %s"
-
- #: ../yum/__init__.py:749
- #, python-format
- msgid "Failed to add Pkg Tags for repository: %s - %s"
--msgstr "Ошибка добавление меток пакета для репозитория: %s - %s"
-+msgstr "Ошибка добавление меток пакета для репозитория: %s — %s"
-
- #: ../yum/__init__.py:827
- msgid "Importing additional filelist information"
-@@ -2092,23 +2150,19 @@ msgid "The program %s%s%s is found in the yum-utils package."
- msgstr "Программа %s%s%s найдена в пакете yum-utils."
-
- #: ../yum/__init__.py:849
--msgid ""
--"There are unfinished transactions remaining. You might consider running yum-"
--"complete-transaction first to finish them."
--msgstr ""
--"Присутствуют незавершённые транзакции. Вы можете запустить команду yum-"
--"complete-transaction для их завершения."
-+msgid "There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them."
-+msgstr "Остались незавершенные действия. Возможно, сначала следует выполнить yum-complete-transaction для их завершения."
-
- #. Kind of hacky
- #: ../yum/__init__.py:922
--#, python-format
-+#, fuzzy, python-format
- msgid "Skip-broken round %i"
--msgstr "Раунд %i пропуская поврежденные"
-+msgstr "Пропуск сломанных, раунд %i"
-
- #: ../yum/__init__.py:975
--#, python-format
-+#, fuzzy, python-format
- msgid "Skip-broken took %i rounds "
--msgstr "Раунд пропуская повреждённые прошло%i "
-+msgstr "Разрушено %i связей"
-
- #: ../yum/__init__.py:976
- msgid ""
-@@ -2125,27 +2179,26 @@ msgstr " %s из %s"
-
- #: ../yum/__init__.py:1121
- msgid "Warning: RPMDB altered outside of yum."
--msgstr "ПРЕДУПРЕЖДЕНИЕ: база данных RPM была изменена вне Yum."
-+msgstr "ПРЕДУПРЕЖДЕНИЕ: база данных RPM была изменена вне yum."
-
- #: ../yum/__init__.py:1126
-+#, fuzzy
- msgid "missing requires"
- msgstr "не требуется"
-
- #: ../yum/__init__.py:1127
-+#, fuzzy
- msgid "installed conflict"
- msgstr "установлен в конфликте"
-
- #: ../yum/__init__.py:1180
--msgid ""
--"Warning: scriptlet or other non-fatal errors occurred during transaction."
--msgstr ""
--"Внимание: во время транзакции была вызвана ошибка сценария или произошла\n"
--" иная не критичная ошибка"
-+msgid "Warning: scriptlet or other non-fatal errors occurred during transaction."
-+msgstr "Внимание: в ходе операции возникли некоторые некритические ошибки."
-
- #: ../yum/__init__.py:1198
- #, python-format
- msgid "Failed to remove transaction file %s"
--msgstr "Невозможно удалить файл транзакции %s"
-+msgstr "Невозможно удалить файл сценария %s"
-
- #. maybe a file log here, too
- #. but raising an exception is not going to do any good
-@@ -2159,7 +2212,7 @@ msgstr "%s должен был быть установлен, но не был
- #: ../yum/__init__.py:1266
- #, python-format
- msgid "%s was supposed to be removed but is not!"
--msgstr "%s должен был быть удалён, но не был удалён!"
-+msgstr "%s должен был быть удален, но не был удален!"
-
- #. Whoa. What the heck happened?
- #: ../yum/__init__.py:1386
-@@ -2177,14 +2230,11 @@ msgstr "Заблокировано %s: другая копия запущена
- #: ../yum/__init__.py:1425
- #, python-format
- msgid "Could not create lock at %s: %s "
--msgstr "Вы не можете создать блокировку %s: %s"
-+msgstr "Вы не можете создать блокировку %s: %s "
-
- #: ../yum/__init__.py:1470
--msgid ""
--"Package does not match intended download. Suggestion: run yum clean metadata"
--msgstr ""
--"Пакет не соответствует предназначенному для загрузки. Предложение: "
--"Пожалуйста, запустите yum clean metadata"
-+msgid "Package does not match intended download. Suggestion: run yum clean metadata"
-+msgstr "Пакет не соответствует предназначенному для загрузки. Предложение: запустите yum clean metadata"
-
- #: ../yum/__init__.py:1486
- msgid "Could not perform checksum"
-@@ -2199,7 +2249,8 @@ msgstr "Пакет не совпадает с контрольной суммо
- msgid "package fails checksum but caching is enabled for %s"
- msgstr "проверка контрольной суммы неудачна, но кэширование включено для %s"
-
--#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
-+#: ../yum/__init__.py:1534
-+#: ../yum/__init__.py:1563
- #, python-format
- msgid "using local copy of %s"
- msgstr "использование локальной копии %s"
-@@ -2217,15 +2268,12 @@ msgstr ""
-
- #: ../yum/__init__.py:1624
- msgid "Header is not complete."
--msgstr "Заголовок не готов."
-+msgstr "Заголовок не полный."
-
- #: ../yum/__init__.py:1661
- #, python-format
--msgid ""
--"Header not in local cache and caching-only mode enabled. Cannot download %s"
--msgstr ""
--"Заголовок не в локальном кэше. Включён режим только из кэша. Невозможно "
--"загрузить %s"
-+msgid "Header not in local cache and caching-only mode enabled. Cannot download %s"
-+msgstr "Заголовок не в локальном кэше. Включен режим только из кэша. Невозможно загрузить %s"
-
- #: ../yum/__init__.py:1716
- #, python-format
-@@ -2240,7 +2288,7 @@ msgstr "Проблема открытия пакета %s"
- #: ../yum/__init__.py:1728
- #, python-format
- msgid "Public key for %s is not trusted"
--msgstr "Публичный ключ для %s не подлежит доверию"
-+msgstr "Публичный ключ для %s не заслуживает доверия"
-
- #: ../yum/__init__.py:1732
- #, python-format
-@@ -2260,7 +2308,7 @@ msgstr "%s удален(ы)"
- #: ../yum/__init__.py:1820
- #, python-format
- msgid "Cannot remove %s file %s"
--msgstr "Невозможно удалить %s файл %s"
-+msgstr "Невозможно удалить %s файл %s"
-
- #: ../yum/__init__.py:1824
- #, python-format
-@@ -2283,12 +2331,8 @@ msgid "Nothing matches %s.%s %s:%s-%s from update"
- msgstr "Совпадений не найдено %s.%s %s:%s-%s из обновлений"
-
- #: ../yum/__init__.py:2180
--msgid ""
--"searchPackages() will go away in a future version of "
--"Yum. Use searchGenerator() instead. \n"
--msgstr ""
--"searchPackages() будет убрано в следующей версии Yum. Используйте "
--"searchGenerator() взамен. \n"
-+msgid "searchPackages() will go away in a future version of Yum. Use searchGenerator() instead. \n"
-+msgstr "searchPackages() будет убрано в следующей версии Yum. Используйте searchGenerator() взамен. \n"
-
- #: ../yum/__init__.py:2219
- #, python-format
-@@ -2305,6 +2349,7 @@ msgid "searching in file entries"
- msgstr "поиск среди файлов"
-
- #: ../yum/__init__.py:2242
-+#, fuzzy
- msgid "searching in provides entries"
- msgstr "Поиск среди предоставлений"
-
-@@ -2315,24 +2360,29 @@ msgstr "Результат совпадений: %s"
-
- #: ../yum/__init__.py:2324
- msgid "No group data available for configured repositories"
--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
-+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
- #: ../yum/__init__.py:2814
- #, python-format
- msgid "No Group named %s exists"
--msgstr "Группы с именем %s не существует"
-+msgstr "Коллекции с названием %s не существует"
-
--#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
-+#: ../yum/__init__.py:2386
-+#: ../yum/__init__.py:2513
- #, python-format
- msgid "package %s was not marked in group %s"
--msgstr "пакет %s не отмечен в группе %s"
-+msgstr "пакет %s не отмечен в коллекции %s"
-
- #: ../yum/__init__.py:2433
- #, python-format
- msgid "Adding package %s from group %s"
--msgstr "Добавление пакета %s из группы %s"
-+msgstr "Добавление пакета %s из коллекции %s"
-
- #: ../yum/__init__.py:2437
- #, python-format
-@@ -2349,16 +2399,19 @@ msgstr "Кортеж пакетов %s не найден в наборе пак
- msgid "Package tuple %s could not be found in rpmdb"
- msgstr "Кортеж пакетов %s не найден в базе RPM"
-
--#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
-+#: ../yum/__init__.py:2614
-+#: ../yum/__init__.py:2664
- msgid "Invalid version flag"
--msgstr "Hеверная версия флага %s"
-+msgstr "Неверная версия флага"
-
--#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
-+#: ../yum/__init__.py:2634
-+#: ../yum/__init__.py:2639
- #, python-format
- msgid "No Package found for %s"
- msgstr "Пакет %s не найден"
-
- #: ../yum/__init__.py:2855
-+#, fuzzy
- msgid "Package Object was not a package object instance"
- msgstr "Объект пакета не являлся экземпляром объекта пакета"
-
-@@ -2366,12 +2419,15 @@ msgstr "Объект пакета не являлся экземпляром о
- msgid "Nothing specified to install"
- msgstr "Ничего не отмечено для установки"
-
--#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
-+#: ../yum/__init__.py:2875
-+#: ../yum/__init__.py:3652
- #, python-format
- msgid "Checking for virtual provide or file-provide for %s"
- msgstr "Проверка виртуального провайдера или файлового провайдера для %s"
-
--#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:2881
-+#: ../yum/__init__.py:3197
-+#: ../yum/__init__.py:3365
- #: ../yum/__init__.py:3658
- #, python-format
- msgid "No Match for argument: %s"
-@@ -2389,17 +2445,17 @@ msgstr "Нет доступных для установки пакетов"
- #: ../yum/__init__.py:2972
- #, python-format
- msgid "Package: %s - already in transaction set"
--msgstr "Пакет: %s - уже включён в транзакцию"
-+msgstr "Пакет: %s — уже в списке к действию"
-
- #: ../yum/__init__.py:2998
- #, python-format
- msgid "Package %s is obsoleted by %s which is already installed"
--msgstr "Пакет %s был заменён на %s и он уже установлен"
-+msgstr "Пакет %s недействителен из-за установленного %s"
-
- #: ../yum/__init__.py:3001
- #, python-format
- msgid "Package %s is obsoleted by %s, trying to install %s instead"
--msgstr "Пакет %s был заменён на %s, попытка установки %s взамен"
-+msgstr "Пакет %s недействителен из-за %s, попытка установки %s взамен"
-
- #: ../yum/__init__.py:3009
- #, python-format
-@@ -2409,20 +2465,23 @@ msgstr "Пакет %s уже установлен, и это последняя
- #: ../yum/__init__.py:3023
- #, python-format
- msgid "Package matching %s already installed. Checking for update."
--msgstr "Пакет %s уже установлен.Проверка для обновления."
-+msgstr "Пакет %s уже установлен. Проверка обновлений."
-
- #. update everything (the easy case)
- #: ../yum/__init__.py:3126
- msgid "Updating Everything"
- msgstr "Полное обновление"
-
--#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3147
-+#: ../yum/__init__.py:3262
-+#: ../yum/__init__.py:3289
- #: ../yum/__init__.py:3315
- #, python-format
- msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
--msgstr "Пакет не обновляется, уже заменён: %s.%s %s:%s-%s"
-+msgstr "Устаревший и уже необновляемый пакет: %s.%s %s:%s-%s"
-
--#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
-+#: ../yum/__init__.py:3182
-+#: ../yum/__init__.py:3362
- #, python-format
- msgid "%s"
- msgstr "%s"
-@@ -2430,17 +2489,18 @@ msgstr "%s"
- #: ../yum/__init__.py:3253
- #, python-format
- msgid "Package is already obsoleted: %s.%s %s:%s-%s"
--msgstr "Пакет был заменён:%s.%s %s:%s-%s"
-+msgstr "Пакет уже устарел: %s.%s %s:%s-%s"
-
- #: ../yum/__init__.py:3284
- #, python-format
- msgid "Not Updating Package that is obsoleted: %s"
--msgstr "Пакет не обновляется, заменён: %s"
-+msgstr "Устаревший необновляемый пакет: %s"
-
--#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
-+#: ../yum/__init__.py:3293
-+#: ../yum/__init__.py:3319
- #, python-format
- msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
--msgstr "Уже обновленный пакет не обновляется: %s.%s %s:%s-%s"
-+msgstr "Необновленный пакет, который был обновлен ранее: %s.%s %s:%s-%s"
-
- #: ../yum/__init__.py:3378
- msgid "No package matched to remove"
-@@ -2451,30 +2511,31 @@ msgstr "Нет пакетов для удаления"
- msgid "Cannot open: %s. Skipping."
- msgstr "Невозможно открыть: %s. Пропуск."
-
--#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
-+#: ../yum/__init__.py:3415
-+#: ../yum/__init__.py:3514
-+#: ../yum/__init__.py:3598
- #, python-format
- msgid "Examining %s: %s"
- msgstr "Проверка %s: %s"
-
--#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
-+#: ../yum/__init__.py:3423
-+#: ../yum/__init__.py:3517
-+#: ../yum/__init__.py:3601
- #, python-format
- msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
--msgstr ""
--"Невозможно добавить пакет %s в транзакцию. Несовместимая архитектура: %s"
-+msgstr "Невозможно добавить пакет %s в список действий. Несовместимая архитектура: %s"
-
- #: ../yum/__init__.py:3431
- #, python-format
--msgid ""
--"Package %s not installed, cannot update it. Run yum install to install it "
--"instead."
--msgstr ""
--"Пакет %s не установлен, невозможно обновить его. Запустите yum для установки "
--"заместо обновления."
-+msgid "Package %s not installed, cannot update it. Run yum install to install it instead."
-+msgstr "Пакет %s не установлен, невозможно обновить его. Запустите yum install для его установки."
-
--#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
-+#: ../yum/__init__.py:3460
-+#: ../yum/__init__.py:3522
-+#: ../yum/__init__.py:3606
- #, python-format
- msgid "Excluding %s"
--msgstr "Удаление %s"
-+msgstr "Исключаем %s"
-
- #: ../yum/__init__.py:3465
- #, python-format
-@@ -2489,9 +2550,10 @@ msgstr "%s отмечен как обновление для %s"
- #: ../yum/__init__.py:3478
- #, python-format
- msgid "%s: does not update installed package."
--msgstr "%s: не обновляет установленный пакет"
-+msgstr "%s: не обновляет установленный пакет."
-
--#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
-+#: ../yum/__init__.py:3511
-+#: ../yum/__init__.py:3595
- #, python-format
- msgid "Cannot open file: %s. Skipping."
- msgstr "Невозможно открыть файл %s. Пропуск."
-@@ -2500,7 +2562,8 @@ msgstr "Невозможно открыть файл %s. Пропуск."
- msgid "Problem in reinstall: no package matched to remove"
- msgstr "Проблема при переустановке: не найден пакет для удаления"
-
--#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
-+#: ../yum/__init__.py:3554
-+#: ../yum/__init__.py:3686
- #, python-format
- msgid "Package %s is allowed multiple installs, skipping"
- msgstr "Пакет %s может быть повторно установлен, пропуск"
-@@ -2512,7 +2575,7 @@ msgstr "Проблема при переустановке: пакет %s не
-
- #: ../yum/__init__.py:3678
- msgid "No package(s) available to downgrade"
--msgstr "Нет доступных пакетов для перехода к предыдущей версии"
-+msgstr "Пакеты для отката версии отсутствуют"
-
- #: ../yum/__init__.py:3731
- #, python-format
-@@ -2522,12 +2585,13 @@ msgstr "Пакеты недоступны: %s"
- #: ../yum/__init__.py:3738
- #, python-format
- msgid "Only Upgrade available on package: %s"
--msgstr "Только переход к следующей версии доступен для пакета: : %s"
-+msgstr "Только переход к следующей версии доступен для пакета: %s"
-
--#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
-+#: ../yum/__init__.py:3808
-+#: ../yum/__init__.py:3845
- #, python-format
- msgid "Failed to downgrade: %s"
--msgstr "Ошибка возврата к предыдущей версии: %s"
-+msgstr "Ошибка отката версии: %s"
-
- #: ../yum/__init__.py:3877
- #, python-format
-@@ -2554,7 +2618,8 @@ msgid "GPG key at %s (0x%s) is already installed"
- msgstr "GPG ключ %s (0x%s) уже установлен"
-
- #. Try installing/updating GPG key
--#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
-+#: ../yum/__init__.py:3949
-+#: ../yum/__init__.py:4011
- #, python-format
- msgid "Importing GPG key 0x%s \"%s\" from %s"
- msgstr "Импорт GPG ключа 0x%s \"%s\" из %s"
-@@ -2568,21 +2633,20 @@ msgstr "Не установлен ключ"
- msgid "Key import failed (code %d)"
- msgstr "Неудача импорта ключа (code %d)"
-
--#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
-+#: ../yum/__init__.py:3973
-+#: ../yum/__init__.py:4032
- msgid "Key imported successfully"
- msgstr "Импорт ключа успешно завершен"
-
--#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
-+#: ../yum/__init__.py:3978
-+#: ../yum/__init__.py:4037
- #, python-format
- msgid ""
--"The GPG keys listed for the \"%s\" repository are already installed but they "
--"are not correct for this package.\n"
-+"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
- "Check that the correct key URLs are configured for this repository."
- msgstr ""
--"GPG ключи включены для репозитория \"%s\", но они не является правильными "
--"для данного пакета.\n"
--"Пожалуйста, проверьте правильно ли настроены URL ключи для данного "
--"репозитория."
-+"GPG ключи включены для репозитория \"%s\", но они не является правильными для данного пакета.\n"
-+"Пожалуйста, проверьте правильно ли настроены URL ключей для данного репозитория."
-
- #: ../yum/__init__.py:3987
- msgid "Import of key(s) didn't help, wrong key(s)?"
-@@ -2600,11 +2664,11 @@ msgstr "Ключ для репозитория %s не установлен."
-
- #: ../yum/__init__.py:4031
- msgid "Key import failed"
--msgstr "Импорт ключа не успешен"
-+msgstr "Импорт ключа неудачен"
-
- #: ../yum/__init__.py:4157
- msgid "Unable to find a suitable mirror."
--msgstr "Не удаётся найти подходящее зеркало"
-+msgstr "Не удается найти подходящее зеркало"
-
- #: ../yum/__init__.py:4159
- msgid "Errors were encountered while downloading packages."
-@@ -2617,56 +2681,54 @@ msgstr "Пожалуйста, сообщите об этой ошибке в %s"
-
- #: ../yum/__init__.py:4233
- msgid "Test Transaction Errors: "
--msgstr "Ошибки теста транзакции:"
-+msgstr "Ошибки проверки сценария:"
-
- #: ../yum/__init__.py:4334
- #, python-format
- msgid "Could not set cachedir: %s"
--msgstr "Невозможно установить директорию кэша: %s"
-+msgstr "Невозможно задать кэш-папку: %s"
-
- #. Mostly copied from YumOutput._outKeyValFill()
- #: ../yum/plugins.py:202
- msgid "Loaded plugins: "
--msgstr "Загруженные плагины:"
-+msgstr "Загружены модули: "
-
--#: ../yum/plugins.py:216 ../yum/plugins.py:222
-+#: ../yum/plugins.py:216
-+#: ../yum/plugins.py:222
- #, python-format
- msgid "No plugin match for: %s"
--msgstr "Нет плагина: %s"
-+msgstr "Нет модуля: %s"
-
- #: ../yum/plugins.py:252
- #, python-format
- msgid "Not loading \"%s\" plugin, as it is disabled"
--msgstr "Плагин \"%s\" не был загружен, поскольку он отключен"
-+msgstr "Модуль \"%s\" не был загружен, поскольку отключен"
-
- #. Give full backtrace:
- #: ../yum/plugins.py:264
- #, python-format
- msgid "Plugin \"%s\" can't be imported"
--msgstr "Невозможен импорт плагина \"%s\""
-+msgstr "Невозможен импорт модуля \"%s\""
-
- #: ../yum/plugins.py:271
- #, python-format
- msgid "Plugin \"%s\" doesn't specify required API version"
--msgstr "Плагин \"%s\" не указывает необходимую версию API"
-+msgstr "Модулем \"%s\" не указана требуемая версия API"
-
- #: ../yum/plugins.py:276
- #, python-format
- msgid "Plugin \"%s\" requires API %s. Supported API is %s."
--msgstr "Плагин \"%s\" требует API %s. Поддерживаемый API %s."
-+msgstr "Модуль \"%s\" требует API %s. Поддерживаемая API — %s."
-
- #: ../yum/plugins.py:309
- #, python-format
- msgid "Loading \"%s\" plugin"
--msgstr "Загрузка \"%s\" плагина"
-+msgstr "Загрузка модуля \"%s\""
-
- #: ../yum/plugins.py:316
- #, python-format
--msgid ""
--"Two or more plugins with the name \"%s\" exist in the plugin search path"
--msgstr ""
--"Найдено два или более плагинов с названием \"%s\" в директории поиска "
--"плагинов"
-+msgid "Two or more plugins with the name \"%s\" exist in the plugin search path"
-+msgstr "В каталоге модулей обнаружено два или более с названием \"%s\""
-
- #: ../yum/plugins.py:336
- #, python-format
-@@ -2678,13 +2740,14 @@ msgstr "Конфигурационный файл %s не найден"
- #: ../yum/plugins.py:339
- #, python-format
- msgid "Unable to find configuration file for plugin %s"
--msgstr "Невозможно найти конфигурационный файл для плагина %s"
-+msgstr "Не найден файл настройки модуля %s"
-
- #: ../yum/plugins.py:501
- msgid "registration of commands not supported"
- msgstr "регистрация команд не поддерживается"
-
- #: ../yum/rpmsack.py:102
-+#, fuzzy
- msgid "has missing requires of"
- msgstr "не пройдены требования"
-
-@@ -2713,45 +2776,40 @@ msgstr "Контрольная сумма md5 пакета %s не совпад
-
- #: ../rpmUtils/oldUtils.py:151
- msgid "Could not open RPM database for reading. Perhaps it is already in use?"
--msgstr ""
--"Невозможно открыть базу RPM для чтения. Возможно база уже используется."
-+msgstr "Невозможно открыть базу RPM для чтения. Возможно база уже используется."
-
- #: ../rpmUtils/oldUtils.py:183
- 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"
-+msgstr "Поврежденный заголовок %s"
-
- #: ../rpmUtils/oldUtils.py:281
- #, python-format
- msgid "Error opening rpm %s - error %s"
--msgstr "Невозможно открыть пакет %s - ошибка %s"
-+msgstr "Невозможно открыть пакет %s — ошибка %s"
-
--#, fuzzy
- #~ msgid "Parsing package install arguments"
- #~ msgstr "Ошибка при разборе параметров командной строки: %s"
-
--#, fuzzy
- #~ msgid "Reducing %s to included packages only"
- #~ msgstr "Поиск устаревших пакетов"
-
--#, fuzzy
- #~ msgid "Keeping included package %s"
- #~ msgstr "Поиск обновленных пакетов"
-
--#, fuzzy
- #~ msgid "Removing unmatched package %s"
- #~ msgstr "Поиск обновленных пакетов"
-
--#, fuzzy
- #~ msgid "Package %s conflicts with %s."
- #~ msgstr "зависимости: пакет %s конфликтует с %s"
-
--#, fuzzy
- #~ msgid ""
- #~ "Description:\n"
- #~ "%s"
-@@ -2780,8 +2838,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ " SRC: %d"
-
- #~ msgid "Error restoring the backup of lilo.conf The backup was:\n"
--#~ msgstr ""
--#~ "Ошибка восстановления резервной копии lilo.conf. Резервная копия была:\n"
-+#~ msgstr "Ошибка восстановления резервной копии lilo.conf. Резервная копия была:\n"
-
- #~ msgid "Looking in available packages for a providing package"
- #~ msgstr "Просмотр доступных пакетов предоставляющих пакет"
-@@ -2795,12 +2852,8 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgid "Need a provides to match"
- #~ msgstr "Необходим еще один параметр"
-
--#~ msgid ""
--#~ "lilo options that are not supported by yum are used in the default lilo."
--#~ "conf. This file will not be modified. The options include:\n"
--#~ msgstr ""
--#~ "параметры lilo не поддерживаются yum. Будет использованы параметры из "
--#~ "lilo.conf. Файл lilo.conf останется неизмеренным. Параметры включают:\n"
-+#~ msgid "lilo options that are not supported by yum are used in the default lilo.conf. This file will not be modified. The options include:\n"
-+#~ msgstr "параметры lilo не поддерживаются yum. Будет использованы параметры из lilo.conf. Файл lilo.conf останется неизмеренным. Параметры включают:\n"
-
- #~ msgid "Error getting file %s"
- #~ msgstr "Ошибка получения файла: %s"
-@@ -2853,8 +2906,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgid "Cleaning packages and old headers"
- #~ msgstr "Удаление пакетов и старых заголовков"
-
--#~ msgid ""
--#~ "Cannot download %s in caching only mode or when running as non-root user."
-+#~ msgid "Cannot download %s in caching only mode or when running as non-root user."
- #~ msgstr "Невозможно получить %s используя кэш или не от пользователя root."
-
- #~ msgid ""
-@@ -2961,18 +3013,14 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgid "Putting back old headers"
- #~ msgstr "Возврат старых заголовков"
-
--#~ msgid ""
--#~ "Error: You may need to disable gpg checking to install this package\n"
--#~ msgstr ""
--#~ "Ошибка: Возможно необходимо отключить проверку GPG для установки пакета\n"
-+#~ msgid "Error: You may need to disable gpg checking to install this package\n"
-+#~ msgstr "Ошибка: Возможно необходимо отключить проверку GPG для установки пакета\n"
-
- #~ msgid "Options Error: no commands found"
- #~ msgstr "Ошибка опций: команда не найдена"
-
- #~ msgid "You appear to have insufficient disk space to handle these packages"
--#~ msgstr ""
--#~ "Не найдено достаточно дискового пространства для выполнения действий над "
--#~ "пакетами"
-+#~ msgstr "Не найдено достаточно дискового пространства для выполнения действий над пакетами"
-
- #~ msgid "Unable to run grubby correctly: the message was:\n"
- #~ msgstr "Hевозможно запустить grubby:\n"
-@@ -2993,20 +3041,15 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgstr "Необходимо указать список пакетов для установки"
-
- #~ msgid "using ftp, http[s], removable or file for servers, Aborting - %s"
--#~ msgstr ""
--#~ "Используйте только протоколы ftp, http[s], removable или file. Завершение "
--#~ "работы - %s"
-+#~ msgstr "Используйте только протоколы ftp, http[s], removable или file. Завершение работы - %s"
-
- #~ msgid "Insufficient server config - no servers found. Aborting."
--#~ msgstr ""
--#~ "Не найден файл настроек сервера - репозиторий не найден. Завершение."
-+#~ msgstr "Не найден файл настроек сервера - репозиторий не найден. Завершение."
-
- #~ msgid ""
- #~ "\n"
--#~ " Usage: yum [options] <update | upgrade | install | info | remove | "
--#~ "list |\n"
--#~ " clean | provides | search | check-update | groupinstall | "
--#~ "groupupdate |\n"
-+#~ " Usage: yum [options] <update | upgrade | install | info | remove | list |\n"
-+#~ " clean | provides | search | check-update | groupinstall | groupupdate |\n"
- #~ " grouplist >\n"
- #~ " \n"
- #~ " Options:\n"
-@@ -3015,8 +3058,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ " -d [debug level] - set the debugging level\n"
- #~ " -y answer yes to all questions\n"
- #~ " -t be tolerant about errors in package commands\n"
--#~ " -R [time in minutes] - set the max amount of time to randomly "
--#~ "run in.\n"
-+#~ " -R [time in minutes] - set the max amount of time to randomly run in.\n"
- #~ " -C run from cache only - do not update the cache\n"
- #~ " --installroot=[path] - set the install root (default '/')\n"
- #~ " --version - output the version of yum\n"
-@@ -3024,10 +3066,8 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ " "
- #~ msgstr ""
- #~ "\n"
--#~ " Usage: yum [options] <update | upgrade | install | info | remove | "
--#~ "list |\n"
--#~ " clean | provides |search | check-update | groupinstall | "
--#~ "groupupdate |\n"
-+#~ " Usage: yum [options] <update | upgrade | install | info | remove | list |\n"
-+#~ " clean | provides |search | check-update | groupinstall | groupupdate |\n"
- #~ " grouplist >\n"
- #~ " \n"
- #~ " Options:\n"
-@@ -3038,8 +3078,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ " -t пропускать ошибки при установке пакетов\n"
- #~ " -R [time in minutes] - установить время случайной задержки\n"
- #~ " -C работать только с кэшем, не обновляя его\n"
--#~ " --installroot=[path] - установить install root (по умолчанию "
--#~ "'/')\n"
-+#~ " --installroot=[path] - установить install root (по умолчанию '/')\n"
- #~ " --version - показать версию yum\n"
- #~ " -h, --help - показать это сообщение\n"
- #~ " "
-@@ -3076,8 +3115,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgstr "Ошибка установки нового загрузчика: \n"
-
- #~ msgid "Error: Could not find the GPG Key necessary to validate pkg %s"
--#~ msgstr ""
--#~ "Ошибка: Невозможно найти GPG ключ необходимый для проверки пакета %s"
-+#~ msgstr "Ошибка: Невозможно найти GPG ключ необходимый для проверки пакета %s"
-
- #~ msgid "No actions to take"
- #~ msgstr "Hикаких действий не нужно"
-@@ -3098,8 +3136,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgstr " "
-
- #~ msgid "Error: Cannot find baseurl or name for server '%s'. Skipping"
--#~ msgstr ""
--#~ "Ошибка: Невозможно определить URL или имя для сервера '%s'. Пропущено"
-+#~ msgstr "Ошибка: Невозможно определить URL или имя для сервера '%s'. Пропущено"
-
- #~ msgid "Odd header %s suddenly disappeared"
- #~ msgstr "Непарный заголовок %s внезапно исчез"
-@@ -3122,12 +3159,8 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgid "Exiting."
- #~ msgstr "Завершение."
-
--#~ msgid ""
--#~ "asking for package %s.%s - does not exist in nevral - bailing out - check "
--#~ "rpmdb for errors"
--#~ msgstr ""
--#~ "Запрос на пакет %s.%s - не существует в nevral - выкинут - проверьте "
--#~ "ошибки в rpmdb"
-+#~ msgid "asking for package %s.%s - does not exist in nevral - bailing out - check rpmdb for errors"
-+#~ msgstr "Запрос на пакет %s.%s - не существует в nevral - выкинут - проверьте ошибки в rpmdb"
-
- #~ msgid "Lilo found - adding kernel to lilo and making it the default"
- #~ msgstr "Найден Lilo - новое ядро будет загружено по умолчанию"
-@@ -3146,8 +3179,7 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
-
- #~ msgid ""
- #~ "Usage:\n"
--#~ "yum-arch [-v] [-z] [-l] [-c] [-n] [-d] [-q] [-vv] (path of dir where "
--#~ "headers/ should/does live)\n"
-+#~ "yum-arch [-v] [-z] [-l] [-c] [-n] [-d] [-q] [-vv] (path of dir where headers/ should/does live)\n"
- #~ " -d = check dependencies and conflicts in tree\n"
- #~ " -v = more verbose output\n"
- #~ " -vv = even more verbose output\n"
-@@ -3164,10 +3196,8 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ " -v = выводить отладочную информацию\n"
- #~ " -vv = еще больше отладочной информации\n"
- #~ " -n = не создавать заголовков\n"
--#~ " -c = проверять пакеты с помощью gpg и md5 - невозможно "
--#~ "использовать с -n\n"
--#~ " -z = сжимать заголовки с помощью алгоритма gzip [по умолчанию "
--#~ "включено]\n"
-+#~ " -c = проверять пакеты с помощью gpg и md5 - невозможно использовать с -n\n"
-+#~ " -z = сжимать заголовки с помощью алгоритма gzip [по умолчанию включено]\n"
- #~ " -s = создавать заголовки для src пакетов\n"
- #~ " -l = разрешить использование символических ссылок\n"
- #~ " -q = \"молчаливый\" режим"
-@@ -3211,14 +3241,11 @@ msgstr "Невозможно открыть пакет %s - ошибка %s"
- #~ msgid "Damaged RPM %s, removing."
- #~ msgstr "Поврежденный пакет %s, удаление."
-
--#~ msgid ""
--#~ "Bad Header for pkg %s.%s trying to get headers for the nevral - exiting"
-+#~ msgid "Bad Header for pkg %s.%s trying to get headers for the nevral - exiting"
- #~ msgstr "Поврежден заголовок пакет %s.%s завершает работу"
-
--#~ msgid ""
--#~ "Error: You may also check that you have the correct GPG keys installed"
--#~ msgstr ""
--#~ "Ошибка: Необходимо убедиться в том что вы имеете подходящий gpg ключ"
-+#~ msgid "Error: You may also check that you have the correct GPG keys installed"
-+#~ msgstr "Ошибка: Необходимо убедиться в том что вы имеете подходящий gpg ключ"
-
- #~ msgid "Insert disk \"%s\" and press enter\n"
- #~ msgstr "Вставьте диск \"%s\" и нажмите 'Enter'\n"
-diff --git a/po/sv.po b/po/sv.po
-index 59a2df1..48b836b 100644
---- a/po/sv.po
-+++ b/po/sv.po
-@@ -1,49 +1,50 @@
- # Swedish messages for yum
--# Copyright © 2009 Free Software Foundation
-+# Copyright © 2009-2010 Free Software Foundation
- # This file is distributed under the same license as the yum package.
--# Göran Uddeborg <goeran at uddeborg.se>, 2009.
-+# Göran Uddeborg <goeran at uddeborg.se>, 2009-2010.
- #
--# $Id: yum-HEAD.patch,v 1.65 2010/07/26 21:25:59 skvidal Exp $
-+# $Id: yum-HEAD.patch,v 1.65 2010/07/26 21:25:59 skvidal Exp $
- #
- msgid ""
- msgstr ""
- "Project-Id-Version: yum\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2009-10-15 15:45+0200\n"
--"PO-Revision-Date: 2009-09-05 16:56+0200\n"
-+"POT-Creation-Date: 2010-02-11 10:54-0500\n"
-+"PO-Revision-Date: 2010-05-22 00:30+0200\n"
- "Last-Translator: Göran Uddeborg <goeran at uddeborg.se>\n"
- "Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
--#: ../callback.py:48 ../output.py:940 ../yum/rpmtrans.py:71
-+#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
- msgid "Updating"
- msgstr "Uppdaterar"
-
--#: ../callback.py:49 ../yum/rpmtrans.py:72
-+#: ../callback.py:49 ../yum/rpmtrans.py:73
- msgid "Erasing"
- msgstr "Raderar"
-
--#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:939
--#: ../yum/rpmtrans.py:73 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:76
-+#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:946
-+#: ../output.py:1659 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
-+#: ../yum/rpmtrans.py:77
- msgid "Installing"
- msgstr "Installerar"
-
--#: ../callback.py:52 ../callback.py:58 ../yum/rpmtrans.py:75
-+#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
- msgid "Obsoleted"
--msgstr "Låter utgå"
-+msgstr "Utfasad"
-
--#: ../callback.py:54 ../output.py:1063 ../output.py:1403
-+#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
- msgid "Updated"
- msgstr "Uppdaterade"
-
--#: ../callback.py:55 ../output.py:1399
-+#: ../callback.py:55 ../output.py:1438
- msgid "Erased"
- msgstr "Raderade"
-
--#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1061
--#: ../output.py:1395
-+#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
-+#: ../output.py:1434 ../output.py:1646
- msgid "Installed"
- msgstr "Installerade"
-
-@@ -65,68 +66,73 @@ msgstr "Fel: ogiltig utdatatillstånd: %s för %s"
- msgid "Erased: %s"
- msgstr "Raderade: %s"
-
--#: ../callback.py:217 ../output.py:941
-+#: ../callback.py:217 ../output.py:948 ../output.py:1648
- msgid "Removing"
- msgstr "Tar bort"
-
--#: ../callback.py:219 ../yum/rpmtrans.py:77
-+#: ../callback.py:219 ../yum/rpmtrans.py:78
- msgid "Cleanup"
- msgstr "Rensar upp"
-
--#: ../cli.py:106
-+#: ../cli.py:107
- #, python-format
- msgid "Command \"%s\" already defined"
- msgstr "Kommando \"%s\" redan definierat"
-
--#: ../cli.py:118
-+#: ../cli.py:119
- msgid "Setting up repositories"
- msgstr "Gör i ordning förråd"
-
--#: ../cli.py:129
-+#: ../cli.py:130
- msgid "Reading repository metadata in from local files"
- msgstr "Läser in förrådsmetadata från lokala filer"
-
--#: ../cli.py:192 ../utils.py:107
-+#: ../cli.py:194 ../utils.py:193
- #, python-format
- msgid "Config Error: %s"
- msgstr "Konfigurationsfel: %s"
-
--#: ../cli.py:195 ../cli.py:1251 ../utils.py:110
-+#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
- #, python-format
- msgid "Options Error: %s"
- msgstr "Fel bland flaggor: %s"
-
--#: ../cli.py:223
-+#: ../cli.py:227
- #, python-format
- msgid " Installed: %s-%s at %s"
- msgstr " Installerade: %s-%s %s"
-
--#: ../cli.py:225
-+#: ../cli.py:229
- #, python-format
- msgid " Built : %s at %s"
- msgstr " Byggde : %s %s"
-
--#: ../cli.py:227
-+#: ../cli.py:231
- #, python-format
- msgid " Committed: %s at %s"
- msgstr " Verkställde : %s %s"
-
--#: ../cli.py:266
-+#: ../cli.py:270
- msgid "You need to give some command"
- msgstr "Du måste ange något kommando"
-
--#: ../cli.py:309
-+#: ../cli.py:284
-+#, python-format
-+msgid "No such command: %s. Please use %s --help"
-+msgstr "Inget sådant kommando: %s. Använd %s --help"
-+
-+#: ../cli.py:314
- msgid "Disk Requirements:\n"
- msgstr "Diskbehov:\n"
-
--#: ../cli.py:311
-+#: ../cli.py:316
- #, python-format
--msgid " At least %dMB needed on the %s filesystem.\n"
--msgstr " Åtminstone %d MB behövs på filsystemet %s.\n"
-+msgid " At least %dMB more space needed on the %s filesystem.\n"
-+msgstr " Åtminstone %d MB mer utrymme behövs på filsystemet %s.\n"
-
- #. TODO: simplify the dependency errors?
- #. Fixup the summary
--#: ../cli.py:316
-+#: ../cli.py:321
- msgid ""
- "Error Summary\n"
- "-------------\n"
-@@ -134,64 +140,60 @@ msgstr ""
- "Felsammandrag\n"
- "-------------\n"
-
--#: ../cli.py:359
-+#: ../cli.py:364
- msgid "Trying to run the transaction but nothing to do. Exiting."
- msgstr "Försöker köra transaktionen men det finns inget att göra. Avslutar."
-
--#: ../cli.py:395
-+#: ../cli.py:403
- msgid "Exiting on user Command"
- msgstr "Avslutar på användarens order"
-
--#: ../cli.py:399
-+#: ../cli.py:407
- msgid "Downloading Packages:"
- msgstr "Hämtar paket:"
-
--#: ../cli.py:404
-+#: ../cli.py:412
- msgid "Error Downloading Packages:\n"
- msgstr "Fel när paket hämtades:\n"
-
--#: ../cli.py:418 ../yum/__init__.py:4014
-+#: ../cli.py:426 ../yum/__init__.py:4195
- msgid "Running rpm_check_debug"
- msgstr "Kör rpm_check_debug"
-
--#: ../cli.py:427 ../yum/__init__.py:4023
-+#: ../cli.py:435 ../yum/__init__.py:4204
- msgid "ERROR You need to update rpm to handle:"
- msgstr "FEL Du behöver uppdatera rpm för att hantera:"
-
--#: ../cli.py:429 ../yum/__init__.py:4026
-+#: ../cli.py:437 ../yum/__init__.py:4207
- msgid "ERROR with rpm_check_debug vs depsolve:"
- msgstr "FEL med rpm_check_debug mot depsolve:"
-
--#: ../cli.py:435
-+#: ../cli.py:443
- msgid "RPM needs to be updated"
- msgstr "RPM behöver uppdateras"
-
--#: ../cli.py:436
-+#: ../cli.py:444
- #, python-format
- msgid "Please report this error in %s"
- msgstr "Vänligen rapportera detta fel i %s"
-
--#: ../cli.py:442
-+#: ../cli.py:450
- msgid "Running Transaction Test"
- msgstr "Kör transaktionstest"
-
--#: ../cli.py:458
--msgid "Finished Transaction Test"
--msgstr "Avslutade transaktionstest"
--
--#: ../cli.py:460
-+#: ../cli.py:466
- msgid "Transaction Check Error:\n"
- msgstr "Transaktionskontrollfel:\n"
-
--#: ../cli.py:467
-+#: ../cli.py:473
- msgid "Transaction Test Succeeded"
- msgstr "Transaktionskontrollen lyckades"
-
--#: ../cli.py:489
-+#: ../cli.py:495
- msgid "Running Transaction"
- msgstr "Kör transaktionen"
-
--#: ../cli.py:519
-+#: ../cli.py:525
- msgid ""
- "Refusing to automatically import keys when running unattended.\n"
- "Use \"-y\" to override."
-@@ -199,79 +201,84 @@ msgstr ""
- "Vägrar att automatiskt importera nycklar vid oövervakad körning.\n"
- "Använd \"-y\" för att åsidosätta."
-
--#: ../cli.py:538 ../cli.py:572
-+#: ../cli.py:544 ../cli.py:578
- msgid " * Maybe you meant: "
- msgstr " * Du kanske menade: "
-
--#: ../cli.py:555 ../cli.py:563
-+#: ../cli.py:561 ../cli.py:569
- #, python-format
- msgid "Package(s) %s%s%s available, but not installed."
- msgstr "Paket %s%s%s tillgängliga, men inte installerade."
-
--#: ../cli.py:569 ../cli.py:600 ../cli.py:678
-+#: ../cli.py:575 ../cli.py:607 ../cli.py:687
- #, python-format
- msgid "No package %s%s%s available."
- msgstr "Inget paket %s%s%s tillgängligt."
-
--#: ../cli.py:605 ../cli.py:738
-+#: ../cli.py:612 ../cli.py:748
- msgid "Package(s) to install"
- msgstr "Paket att installera"
-
--#: ../cli.py:606 ../cli.py:684 ../cli.py:717 ../cli.py:739
--#: ../yumcommands.py:159
-+#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
-+#: ../yumcommands.py:160
- msgid "Nothing to do"
- msgstr "Inget att göra"
-
--#: ../cli.py:639
-+#: ../cli.py:647
- #, python-format
- msgid "%d packages marked for Update"
- msgstr "%d paket noterade att uppdateras"
-
--#: ../cli.py:642
-+#: ../cli.py:650
- msgid "No Packages marked for Update"
- msgstr "Inga paket noterade att uppdateras"
-
--#: ../cli.py:656
-+#: ../cli.py:664
- #, python-format
- msgid "%d packages marked for removal"
- msgstr "%d paket noterade att tas bort"
-
--#: ../cli.py:659
-+#: ../cli.py:667
- msgid "No Packages marked for removal"
- msgstr "Inga paket noterade att tas bort"
-
--#: ../cli.py:683
-+#: ../cli.py:692
- msgid "Package(s) to downgrade"
- msgstr "Paket att nedgradera"
-
--#: ../cli.py:707
-+#: ../cli.py:717
- #, python-format
- msgid " (from %s)"
- msgstr " (från %s)"
-
--#: ../cli.py:709
-+#: ../cli.py:719
- #, python-format
- msgid "Installed package %s%s%s%s not available."
- msgstr "Installerat paket %s%s%s%s inte tillgängligt."
-
--#: ../cli.py:716
-+#: ../cli.py:726
- msgid "Package(s) to reinstall"
- msgstr "Paket att ominstallera"
-
--#: ../cli.py:729
-+#: ../cli.py:739
- msgid "No Packages Provided"
- msgstr "Inga paket angivna"
-
--#: ../cli.py:813
-+#: ../cli.py:818
-+#, python-format
-+msgid "Matched: %s"
-+msgstr "Matchade: %s"
-+
-+#: ../cli.py:825
- #, python-format
- msgid "Warning: No matches found for: %s"
- msgstr "Varning: Ingen matchning hittades för: %s"
-
--#: ../cli.py:816
-+#: ../cli.py:828
- msgid "No Matches found"
- msgstr "Inga matchningar hittades"
-
--#: ../cli.py:855
-+#: ../cli.py:868
- #, python-format
- msgid ""
- "Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
-@@ -281,108 +288,112 @@ msgstr ""
- " Du kan använda \"%s*/%s%s\" och/eller \"%s*bin/%s%s\" för att få detta "
- "beteende"
-
--#: ../cli.py:871
-+#: ../cli.py:884
- #, python-format
- msgid "No Package Found for %s"
- msgstr "Inga paket hittades för %s"
-
--#: ../cli.py:883
-+#: ../cli.py:896
- msgid "Cleaning up Everything"
- msgstr "Rensar upp allt"
-
--#: ../cli.py:897
-+#: ../cli.py:912
- msgid "Cleaning up Headers"
- msgstr "Rensar upp huvuden"
-
--#: ../cli.py:900
-+#: ../cli.py:915
- msgid "Cleaning up Packages"
- msgstr "Rensar upp paket"
-
--#: ../cli.py:903
-+#: ../cli.py:918
- msgid "Cleaning up xml metadata"
- msgstr "Rensar upp xml-metadata"
-
--#: ../cli.py:906
-+#: ../cli.py:921
- msgid "Cleaning up database cache"
- msgstr "Rensar upp databas-cache"
-
--#: ../cli.py:909
-+#: ../cli.py:924
- msgid "Cleaning up expire-cache metadata"
- msgstr "Rensar upp expire-cache-metadata"
-
--#: ../cli.py:912
-+#: ../cli.py:927
-+msgid "Cleaning up cached rpmdb data"
-+msgstr "Rensar upp cachad rpmdb-data"
-+
-+#: ../cli.py:930
- msgid "Cleaning up plugins"
- msgstr "Rensar upp insticksmoduler"
-
--#: ../cli.py:937
-+#: ../cli.py:955
- msgid "Installed Groups:"
- msgstr "Installerade grupper:"
-
--#: ../cli.py:949
-+#: ../cli.py:967
- msgid "Available Groups:"
- msgstr "Tillgängliga grupper:"
-
--#: ../cli.py:959
-+#: ../cli.py:977
- msgid "Done"
- msgstr "Klart"
-
--#: ../cli.py:970 ../cli.py:988 ../cli.py:994 ../yum/__init__.py:2629
-+#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
- #, python-format
- msgid "Warning: Group %s does not exist."
- msgstr "Varning: Grupp %s finns inte."
-
--#: ../cli.py:998
-+#: ../cli.py:1016
- msgid "No packages in any requested group available to install or update"
- msgstr ""
- "Inget paket i någon begärd grupp är tillgängligt för installation eller "
- "uppdatering"
-
--#: ../cli.py:1000
-+#: ../cli.py:1018
- #, python-format
- msgid "%d Package(s) to Install"
- msgstr "%d paket att installera"
-
--#: ../cli.py:1010 ../yum/__init__.py:2641
-+#: ../cli.py:1028 ../yum/__init__.py:2800
- #, python-format
- msgid "No group named %s exists"
- msgstr "Ingen grupp med namnet %s finns"
-
--#: ../cli.py:1016
-+#: ../cli.py:1034
- msgid "No packages to remove from groups"
- msgstr "Inget paket att ta bort från grupper"
-
--#: ../cli.py:1018
-+#: ../cli.py:1036
- #, python-format
- msgid "%d Package(s) to remove"
- msgstr "%d paket att ta bort"
-
--#: ../cli.py:1060
-+#: ../cli.py:1078
- #, python-format
- msgid "Package %s is already installed, skipping"
- msgstr "Paket %s är redan installerat, hoppar över"
-
--#: ../cli.py:1071
-+#: ../cli.py:1089
- #, python-format
- msgid "Discarding non-comparable pkg %s.%s"
- msgstr "Kastar ojämförbart paket %s.%s"
-
- #. we've not got any installed that match n or n+a
--#: ../cli.py:1097
-+#: ../cli.py:1115
- #, python-format
- msgid "No other %s installed, adding to list for potential install"
- msgstr ""
- "Ingen annat %s installerat, lägger till listan för potentiell installation"
-
--#: ../cli.py:1117
-+#: ../cli.py:1135
- msgid "Plugin Options"
- msgstr "Insticksmodulsalternativ"
-
--#: ../cli.py:1125
-+#: ../cli.py:1143
- #, python-format
- msgid "Command line error: %s"
- msgstr "Kommandoradsfel: %s"
-
--#: ../cli.py:1138
-+#: ../cli.py:1156
- #, python-format
- msgid ""
- "\n"
-@@ -393,106 +404,114 @@ msgstr ""
- "\n"
- "%s: flaggan %s behöver ett argument"
-
--#: ../cli.py:1191
-+#: ../cli.py:1209
- msgid "--color takes one of: auto, always, never"
- msgstr "--color tar en av: auto, always, never"
-
--#: ../cli.py:1298
-+#: ../cli.py:1319
- msgid "show this help message and exit"
- msgstr "visa detta hjälpmeddelande och avsluta"
-
--#: ../cli.py:1302
-+#: ../cli.py:1323
- msgid "be tolerant of errors"
- msgstr "var tolerant vid fel"
-
--#: ../cli.py:1304
--msgid "run entirely from cache, don't update cache"
--msgstr "kör helt från cache, uppdatera inte cachen"
-+#: ../cli.py:1326
-+msgid "run entirely from system cache, don't update cache"
-+msgstr "kör helt från systemets cache, uppdatera inte cachen"
-
--#: ../cli.py:1306
-+#: ../cli.py:1329
- msgid "config file location"
- msgstr "konfigurationsfilens plats"
-
--#: ../cli.py:1308
-+#: ../cli.py:1332
- msgid "maximum command wait time"
- msgstr "maximal tid att vänta på kommandon"
-
--#: ../cli.py:1310
-+#: ../cli.py:1334
- msgid "debugging output level"
- msgstr "nivå på felsökningsutskrifter"
-
--#: ../cli.py:1314
-+#: ../cli.py:1338
- msgid "show duplicates, in repos, in list/search commands"
- msgstr "visa dubletter, i förråd, i list-/search-kommandon"
-
--#: ../cli.py:1316
-+#: ../cli.py:1340
- msgid "error output level"
- msgstr "nivå på felutskrifter"
-
--#: ../cli.py:1319
-+#: ../cli.py:1343
-+msgid "debugging output level for rpm"
-+msgstr "nivå på felsökningsutskrifter för rpm"
-+
-+#: ../cli.py:1346
- msgid "quiet operation"
- msgstr "tyst operation"
-
--#: ../cli.py:1321
-+#: ../cli.py:1348
- msgid "verbose operation"
- msgstr "utförlig operation"
-
--#: ../cli.py:1323
-+#: ../cli.py:1350
- msgid "answer yes for all questions"
- msgstr "svara ja på alla frågor"
-
--#: ../cli.py:1325
-+#: ../cli.py:1352
- msgid "show Yum version and exit"
- msgstr "visa Yum-version och avsluta"
-
--#: ../cli.py:1326
-+#: ../cli.py:1353
- msgid "set install root"
- msgstr "ange installationsrot"
-
--#: ../cli.py:1330
-+#: ../cli.py:1357
- msgid "enable one or more repositories (wildcards allowed)"
- msgstr "aktivera ett eller flera förråd (jokrertecken tillåts)"
-
--#: ../cli.py:1334
-+#: ../cli.py:1361
- msgid "disable one or more repositories (wildcards allowed)"
- msgstr "inaktivera ett eller flera förråd (jokertecken tillåts)"
-
--#: ../cli.py:1337
-+#: ../cli.py:1364
- msgid "exclude package(s) by name or glob"
- msgstr "uteslut paket via namn eller mönster"
-
--#: ../cli.py:1339
-+#: ../cli.py:1366
- msgid "disable exclude from main, for a repo or for everything"
- msgstr "inaktivera uteslutningar från main, för ett förråd, eller för allt"
-
--#: ../cli.py:1342
-+#: ../cli.py:1369
- msgid "enable obsoletes processing during updates"
- msgstr "aktivera bearbetning av utfasningar under uppdateringar"
-
--#: ../cli.py:1344
-+#: ../cli.py:1371
- msgid "disable Yum plugins"
- msgstr "inaktivera Yum-insticksmoduler"
-
--#: ../cli.py:1346
-+#: ../cli.py:1373
- msgid "disable gpg signature checking"
- msgstr "inaktivera kontroll av gpg-signatur"
-
--#: ../cli.py:1348
-+#: ../cli.py:1375
- msgid "disable plugins by name"
- msgstr "inaktivera insticksmoduler efter namn"
-
--#: ../cli.py:1351
-+#: ../cli.py:1378
- msgid "enable plugins by name"
- msgstr "aktivera insticksmoduler efter namn"
-
--#: ../cli.py:1354
-+#: ../cli.py:1381
- msgid "skip packages with depsolving problems"
- msgstr "hoppa över paket med problem vid beroendeupplösning"
-
--#: ../cli.py:1356
-+#: ../cli.py:1383
- msgid "control whether color is used"
- msgstr "styr om färg skall användas"
-
-+#: ../cli.py:1385
-+msgid "set value of $releasever in yum config and repo files"
-+msgstr "sätt värdet på $releasever i yum-konfigurations- och repo-filer"
-+
- #: ../output.py:305
- msgid "Jan"
- msgstr "jan"
-@@ -545,105 +564,104 @@ msgstr "dec"
- msgid "Trying other mirror."
- msgstr "Försöker med en annan spegel."
-
--#: ../output.py:538
-+#: ../output.py:534
- #, python-format
- msgid "Name : %s%s%s"
- msgstr "Namn : %s%s%s"
-
--#: ../output.py:539
-+#: ../output.py:535
- #, python-format
- msgid "Arch : %s"
- msgstr "Arkitektur : %s"
-
--#: ../output.py:541
-+#: ../output.py:537
- #, python-format
- msgid "Epoch : %s"
- msgstr "Epok : %s"
-
--#: ../output.py:542
-+#: ../output.py:538
- #, python-format
- msgid "Version : %s"
- msgstr "Version : %s"
-
--#: ../output.py:543
-+#: ../output.py:539
- #, python-format
- msgid "Release : %s"
- msgstr "Utgåva : %s"
-
--#: ../output.py:544
-+#: ../output.py:540
- #, python-format
- msgid "Size : %s"
- msgstr "Storlek : %s"
-
--#: ../output.py:545
-+#: ../output.py:541
- #, python-format
- msgid "Repo : %s"
- msgstr "Förråd : %s"
-
--#: ../output.py:547
-+#: ../output.py:543
- #, python-format
- msgid "From repo : %s"
- msgstr "Från förråd: %s"
-
--#: ../output.py:549
-+#: ../output.py:545
- #, python-format
- msgid "Committer : %s"
- msgstr "Verkställare: %s"
-
--#: ../output.py:550
-+#: ../output.py:546
- #, python-format
- msgid "Committime : %s"
- msgstr "Verkställt : %s"
-
--#: ../output.py:551
-+#: ../output.py:547
- #, python-format
- msgid "Buildtime : %s"
- msgstr "Byggt : %s"
-
--#: ../output.py:553
-+#: ../output.py:549
- #, python-format
- msgid "Installtime: %s"
- msgstr "Installerat: %s"
-
--#: ../output.py:554
-+#: ../output.py:550
- msgid "Summary : "
- msgstr "Sammandrag : "
-
--#: ../output.py:556
-+#: ../output.py:552
- #, python-format
- msgid "URL : %s"
- msgstr "URL : %s"
-
--#: ../output.py:557
--#, python-format
--msgid "License : %s"
--msgstr "Licens : %s"
-+#: ../output.py:553
-+msgid "License : "
-+msgstr "Licens : "
-
--#: ../output.py:558
-+#: ../output.py:554
- msgid "Description: "
- msgstr "Beskrivning: "
-
--#: ../output.py:626
-+#: ../output.py:622
- msgid "y"
- msgstr "j"
-
--#: ../output.py:626
-+#: ../output.py:622
- msgid "yes"
- msgstr "ja"
-
--#: ../output.py:627
-+#: ../output.py:623
- msgid "n"
- msgstr "n"
-
--#: ../output.py:627
-+#: ../output.py:623
- msgid "no"
- msgstr "nej"
-
--#: ../output.py:631
-+#: ../output.py:627
- msgid "Is this ok [y/N]: "
- msgstr "Är detta ok [j/N]: "
-
--#: ../output.py:722
-+#: ../output.py:715
- #, python-format
- msgid ""
- "\n"
-@@ -652,150 +670,151 @@ msgstr ""
- "\n"
- "Grupp: %s"
-
--#: ../output.py:726
-+#: ../output.py:719
- #, python-format
- msgid " Group-Id: %s"
- msgstr " Grupp-id: %s"
-
--#: ../output.py:731
-+#: ../output.py:724
- #, python-format
- msgid " Description: %s"
- msgstr " Beskrivning: %s"
-
--#: ../output.py:733
-+#: ../output.py:726
- msgid " Mandatory Packages:"
- msgstr " Obligatoriska paket:"
-
--#: ../output.py:734
-+#: ../output.py:727
- msgid " Default Packages:"
- msgstr " Standardpaket:"
-
--#: ../output.py:735
-+#: ../output.py:728
- msgid " Optional Packages:"
- msgstr " Valfria paket:"
-
--#: ../output.py:736
-+#: ../output.py:729
- msgid " Conditional Packages:"
- msgstr " Villkorliga paket:"
-
--#: ../output.py:756
-+#: ../output.py:749
- #, python-format
- msgid "package: %s"
- msgstr "paket: %s"
-
--#: ../output.py:758
-+#: ../output.py:751
- msgid " No dependencies for this package"
- msgstr " Inga beroenden för detta paket"
-
--#: ../output.py:763
-+#: ../output.py:756
- #, python-format
- msgid " dependency: %s"
- msgstr " beroende: %s"
-
--#: ../output.py:765
-+#: ../output.py:758
- msgid " Unsatisfied dependency"
- msgstr " Ej uppfyllt beroende"
-
--#: ../output.py:837
-+#: ../output.py:830
- #, python-format
- msgid "Repo : %s"
- msgstr "Förråd : %s"
-
--#: ../output.py:838
-+#: ../output.py:831
- msgid "Matched from:"
- msgstr "Matchat från:"
-
--#: ../output.py:847
-+#: ../output.py:840
- msgid "Description : "
- msgstr "Beskrivning : "
-
--#: ../output.py:850
-+#: ../output.py:843
- #, python-format
- msgid "URL : %s"
- msgstr "URL : %s"
-
--#: ../output.py:853
-+#: ../output.py:846
- #, python-format
- msgid "License : %s"
- msgstr "Licens : %s"
-
--#: ../output.py:856
-+#: ../output.py:849
- #, python-format
- msgid "Filename : %s"
- msgstr "Filnamn : %s"
-
--#: ../output.py:860
-+#: ../output.py:853
- msgid "Other : "
- msgstr "Övrigt : "
-
--#: ../output.py:893
-+#: ../output.py:896
- msgid "There was an error calculating total download size"
- msgstr "Ett fel uppstod vid beräkningen av total storlek att hämta"
-
--#: ../output.py:898
-+#: ../output.py:901
- #, python-format
- msgid "Total size: %s"
- msgstr "Total storlek: %s"
-
--#: ../output.py:901
-+#: ../output.py:904
- #, python-format
- msgid "Total download size: %s"
- msgstr "Total storlek att hämta: %s"
-
--#: ../output.py:942
-+#: ../output.py:908
-+#, python-format
-+msgid "Installed size: %s"
-+msgstr "Installerad storlek: %s"
-+
-+#: ../output.py:949
- msgid "Reinstalling"
- msgstr "Ominstallerar"
-
--#: ../output.py:943
-+#: ../output.py:950
- msgid "Downgrading"
- msgstr "Nedgraderar"
-
--#: ../output.py:944
-+#: ../output.py:951
- msgid "Installing for dependencies"
- msgstr "Installerar på grund av beroenden"
-
--#: ../output.py:945
-+#: ../output.py:952
- msgid "Updating for dependencies"
- msgstr "Uppdaterar på grund av beroenden"
-
--#: ../output.py:946
-+#: ../output.py:953
- msgid "Removing for dependencies"
- msgstr "Tar bort på grund av beroenden"
-
--#: ../output.py:953 ../output.py:1065
-+#: ../output.py:960 ../output.py:1072
- msgid "Skipped (dependency problems)"
- msgstr "Hoppas över (beroendeproblem)"
-
--#: ../output.py:976
-+#: ../output.py:983
- msgid "Package"
- msgstr "Paket"
-
--#: ../output.py:976
-+#: ../output.py:983
- msgid "Arch"
- msgstr "Ark"
-
--#: ../output.py:977
-+#: ../output.py:984
- msgid "Version"
- msgstr "Version"
-
--#: ../output.py:977
-+#: ../output.py:984
- msgid "Repository"
- msgstr "Förråd"
-
--#: ../output.py:978
-+#: ../output.py:985
- msgid "Size"
- msgstr "Storl."
-
--#: ../output.py:990
-+#: ../output.py:997
- #, python-format
--msgid ""
--" replacing %s%s%s.%s %s\n"
--"\n"
--msgstr ""
--" ersätter %s%s%s.%s %s\n"
--"\n"
-+msgid " replacing %s%s%s.%s %s\n"
-+msgstr " ersätter %s%s%s.%s %s\n"
-
--#: ../output.py:999
-+#: ../output.py:1006
- #, python-format
- msgid ""
- "\n"
-@@ -806,7 +825,7 @@ msgstr ""
- "Transaktionssammanfattning\n"
- "%s\n"
-
--#: ../output.py:1006
-+#: ../output.py:1013
- #, python-format
- msgid ""
- "Install %5.5s Package(s)\n"
-@@ -815,7 +834,7 @@ msgstr ""
- "Installerar %5.5s Paket\n"
- "Uppdaterar %5.5s Paket\n"
-
--#: ../output.py:1015
-+#: ../output.py:1022
- #, python-format
- msgid ""
- "Remove %5.5s Package(s)\n"
-@@ -826,32 +845,32 @@ msgstr ""
- "Ominstallerar %5.5s Paket\n"
- "Nedgraderar %5.5s Paket\n"
-
--#: ../output.py:1059
-+#: ../output.py:1066
- msgid "Removed"
- msgstr "Borttagna"
-
--#: ../output.py:1060
-+#: ../output.py:1067
- msgid "Dependency Removed"
- msgstr "Borttagna beroenden"
-
--#: ../output.py:1062
-+#: ../output.py:1069
- msgid "Dependency Installed"
- msgstr "Installerade beroenden"
-
--#: ../output.py:1064
-+#: ../output.py:1071
- msgid "Dependency Updated"
- msgstr "Uppdaterade beroenden"
-
--#: ../output.py:1066
-+#: ../output.py:1073
- msgid "Replaced"
- msgstr "Ersatte"
-
--#: ../output.py:1067
-+#: ../output.py:1074
- msgid "Failed"
- msgstr "Misslyckade"
-
- #. Delta between C-c's so we treat as exit
--#: ../output.py:1133
-+#: ../output.py:1140
- msgid "two"
- msgstr "två"
-
-@@ -859,7 +878,7 @@ msgstr "två"
- #. Current download cancelled, interrupt (ctrl-c) again within two seconds
- #. to exit.
- #. Where "interupt (ctrl-c) again" and "two" are highlighted.
--#: ../output.py:1144
-+#: ../output.py:1151
- #, python-format
- msgid ""
- "\n"
-@@ -871,217 +890,360 @@ msgstr ""
- " Aktuell nedladdning avbröts, %savbryt (ctrl-c) igen%s inom %s%s%s sekunder\n"
- "för att avsluta.\n"
-
--#: ../output.py:1155
-+#: ../output.py:1162
- msgid "user interrupt"
- msgstr "avbrott från användaren"
-
--#: ../output.py:1173
-+#: ../output.py:1180
- msgid "Total"
- msgstr "Totalt"
-
-+#: ../output.py:1202
-+msgid "I"
-+msgstr "I"
-+
- #: ../output.py:1203
--msgid "<unset>"
--msgstr ""
-+msgid "O"
-+msgstr "UF"
-
- #: ../output.py:1204
-+msgid "E"
-+msgstr "R"
-+
-+#: ../output.py:1205
-+msgid "R"
-+msgstr "O"
-+
-+#: ../output.py:1206
-+msgid "D"
-+msgstr "N"
-+
-+#: ../output.py:1207
-+msgid "U"
-+msgstr "U"
-+
-+#: ../output.py:1217
-+msgid "<unset>"
-+msgstr "<ej satt>"
-+
-+#: ../output.py:1218
- msgid "System"
--msgstr ""
-+msgstr "System"
-
--#: ../output.py:1240
-+#: ../output.py:1254
- msgid "Bad transaction IDs, or package(s), given"
--msgstr ""
-+msgstr "Felaktiga transaktions ID:n, eller paket, angivna"
-
--#: ../output.py:1284 ../yumcommands.py:1149 ../yum/__init__.py:1067
--msgid "Warning: RPMDB has been altered since the last yum transaction."
--msgstr ""
-+#: ../output.py:1266
-+msgid "ID"
-+msgstr "ID"
-+
-+#: ../output.py:1267 ../output.py:1520
-+msgid "Login user"
-+msgstr "Inloggad användare"
-+
-+#: ../output.py:1268
-+msgid "Date and time"
-+msgstr "Datum och tid"
-
--#: ../output.py:1289
-+#: ../output.py:1269 ../output.py:1522
-+msgid "Action(s)"
-+msgstr "Åtgärd(er)"
-+
-+#: ../output.py:1270 ../output.py:1523
-+msgid "Altered"
-+msgstr "Ändrade"
-+
-+#: ../output.py:1310
- msgid "No transaction ID given"
--msgstr ""
-+msgstr "Inget transaktions-ID angivet"
-
--#: ../output.py:1297
-+#: ../output.py:1336
- msgid "Bad transaction ID given"
--msgstr ""
-+msgstr "Felaktigt transaktions-ID angivet"
-
--#: ../output.py:1302
--#, fuzzy
-+#: ../output.py:1341
- msgid "Not found given transaction ID"
--msgstr "Kör transaktionen"
-+msgstr "Hittade inte angivet transaktions-ID"
-
--#: ../output.py:1310
-+#: ../output.py:1349
- msgid "Found more than one transaction ID!"
--msgstr ""
-+msgstr "Hittade mer än ett transaktions-ID!"
-
--#: ../output.py:1331
-+#: ../output.py:1370
- msgid "No transaction ID, or package, given"
--msgstr ""
-+msgstr "Inget transaktions-ID, eller paket, angivet"
-
--#: ../output.py:1357
--#, fuzzy
-+#: ../output.py:1396
- msgid "Transaction ID :"
--msgstr "Transaktionskontrollfel:\n"
-+msgstr "Transaktions-ID:"
-
--#: ../output.py:1359
-+#: ../output.py:1398
- msgid "Begin time :"
--msgstr ""
-+msgstr "Starttid :"
-
--#: ../output.py:1362 ../output.py:1364
-+#: ../output.py:1401 ../output.py:1403
- msgid "Begin rpmdb :"
--msgstr ""
-+msgstr "Start-rpmdb :"
-
--#: ../output.py:1378
--#, fuzzy, python-format
-+#: ../output.py:1417
-+#, python-format
- msgid "(%s seconds)"
--msgstr "%s sekunder (senast: %s)"
-+msgstr "(%s sekunder)"
-
--#: ../output.py:1379
--#, fuzzy
-+#: ../output.py:1418
- msgid "End time :"
--msgstr "Övrigt : "
-+msgstr "Sluttid : "
-
--#: ../output.py:1382 ../output.py:1384
-+#: ../output.py:1421 ../output.py:1423
- msgid "End rpmdb :"
--msgstr ""
-+msgstr "Slut-rpmdb :"
-
--#: ../output.py:1385
--#, fuzzy
-+#: ../output.py:1424
- msgid "User :"
--msgstr "URL : %s"
-+msgstr "Användare :"
-
--#: ../output.py:1387 ../output.py:1389 ../output.py:1391
-+#: ../output.py:1426 ../output.py:1428 ../output.py:1430
- msgid "Return-Code :"
--msgstr ""
-+msgstr "Returkod :"
-
--#: ../output.py:1387
--#, fuzzy
-+#: ../output.py:1426
- msgid "Aborted"
--msgstr "Låter utgå"
-+msgstr "Avbruten"
-
--#: ../output.py:1389
--#, fuzzy
-+#: ../output.py:1428
- msgid "Failure:"
--msgstr "Misslyckade"
-+msgstr "Misslyckades:"
-
--#: ../output.py:1391
-+#: ../output.py:1430
- msgid "Success"
--msgstr ""
-+msgstr "Lyckades"
-
--#: ../output.py:1392
--#, fuzzy
-+#: ../output.py:1431
- msgid "Transaction performed with:"
--msgstr "Transaktionskontrollfel:\n"
-+msgstr "Transaktionen utförd med:"
-
--#: ../output.py:1405
--#, fuzzy
-+#: ../output.py:1444 ../output.py:1489
- msgid "Downgraded"
--msgstr "Nedgraderar"
-+msgstr "Nedgraderade"
-
- #. multiple versions installed, both older and newer
--#: ../output.py:1407
-+#: ../output.py:1446
- msgid "Weird"
--msgstr ""
-+msgstr "Mystisk"
-
--#: ../output.py:1409
--#, fuzzy
-+#: ../output.py:1448
- msgid "Packages Altered:"
--msgstr "Inga paket angivna"
-+msgstr "Ändrade paket:"
-
--#: ../output.py:1412
-+#: ../output.py:1451
- msgid "Scriptlet output:"
--msgstr ""
-+msgstr "Skriptutdata:"
-
--#: ../output.py:1418
--#, fuzzy
-+#: ../output.py:1457
- msgid "Errors:"
--msgstr "Fel: %s"
-+msgstr "Fel:"
-
--#: ../output.py:1489
--msgid "Last day"
--msgstr ""
-+#: ../output.py:1481 ../output.py:1482
-+msgid "Install"
-+msgstr "Installation"
-+
-+#: ../output.py:1483
-+msgid "Dep-Install"
-+msgstr "Ber-inst"
-+
-+#: ../output.py:1485
-+msgid "Obsoleting"
-+msgstr "Fasar ut"
-+
-+#: ../output.py:1486
-+msgid "Erase"
-+msgstr "Radering"
-+
-+#: ../output.py:1487
-+msgid "Reinstall"
-+msgstr "Ominstallation"
-+
-+#: ../output.py:1488
-+msgid "Downgrade"
-+msgstr "Nedgradering"
-
- #: ../output.py:1490
-+msgid "Update"
-+msgstr "Uppdatering"
-+
-+#: ../output.py:1521
-+msgid "Time"
-+msgstr "Tid"
-+
-+#: ../output.py:1547
-+msgid "Last day"
-+msgstr "Senaste dagen"
-+
-+#: ../output.py:1548
- msgid "Last week"
--msgstr ""
-+msgstr "Senaste veckan"
-
--#: ../output.py:1491
-+#: ../output.py:1549
- msgid "Last 2 weeks"
--msgstr ""
-+msgstr "Senaste 2 veckorna"
-
- #. US default :p
--#: ../output.py:1492
-+#: ../output.py:1550
- msgid "Last 3 months"
--msgstr ""
-+msgstr "Senaste 3 månaderna"
-
--#: ../output.py:1493
-+#: ../output.py:1551
- msgid "Last 6 months"
--msgstr ""
-+msgstr "Senaste 6 månaderna"
-
--#: ../output.py:1494
-+#: ../output.py:1552
- msgid "Last year"
--msgstr ""
-+msgstr "Senaste året"
-
--#: ../output.py:1495
-+#: ../output.py:1553
- msgid "Over a year ago"
--msgstr ""
-+msgstr "Mer än ett år tillbaka"
-
--#: ../output.py:1524
-+#: ../output.py:1585
- msgid "installed"
- msgstr "installeras"
-
--#: ../output.py:1525
-+#: ../output.py:1586
- msgid "updated"
- msgstr "uppdateras"
-
--#: ../output.py:1526
-+#: ../output.py:1587
- msgid "obsoleted"
--msgstr "fasas ut"
-+msgstr "utfasas"
-
--#: ../output.py:1527
-+#: ../output.py:1588
- msgid "erased"
- msgstr "raderas"
-
--#: ../output.py:1531
-+#: ../output.py:1592
- #, python-format
- msgid "---> Package %s.%s %s:%s-%s set to be %s"
- msgstr "---> Paket %s.%s %s:%s-%s satt till att %s"
-
--#: ../output.py:1538
-+#: ../output.py:1599
- msgid "--> Running transaction check"
- msgstr "--> Kör transaktionskontroll"
-
--#: ../output.py:1543
-+#: ../output.py:1604
- msgid "--> Restarting Dependency Resolution with new changes."
- msgstr "--> Startar om beroendeupplösning med nya ändringar."
-
--#: ../output.py:1548
-+#: ../output.py:1609
- msgid "--> Finished Dependency Resolution"
- msgstr "--> Avslutade beroendeupplösning"
-
--#: ../output.py:1553 ../output.py:1558
-+#: ../output.py:1614 ../output.py:1619
- #, python-format
- msgid "--> Processing Dependency: %s for package: %s"
- msgstr "--> Bearbetar beroende: %s för paket: %s"
-
--#: ../output.py:1562
-+#: ../output.py:1623
- #, python-format
- msgid "--> Unresolved Dependency: %s"
- msgstr "--> Ej upplöst beroende: %s"
-
--#: ../output.py:1568 ../output.py:1573
-+#: ../output.py:1634
-+#, python-format
-+msgid "Package: %s"
-+msgstr "Paket: %s"
-+
-+#: ../output.py:1636
-+#, python-format
-+msgid ""
-+"\n"
-+" Requires: %s"
-+msgstr "\n Behöver: %s"
-+
-+#: ../output.py:1649 ../output.py:1660
-+#, python-format
-+msgid ""
-+"\n"
-+" %s: %s (%s)"
-+msgstr "\n %s: %s (%s)"
-+
-+#: ../output.py:1657
-+msgid "Available"
-+msgstr "Tillgängliga"
-+
-+#: ../output.py:1665 ../output.py:1670
- #, python-format
- msgid "--> Processing Conflict: %s conflicts %s"
- msgstr "--> Bearbetar konflikt: %s står i konflikt med %s"
-
--#: ../output.py:1577
-+#: ../output.py:1674
- msgid "--> Populating transaction set with selected packages. Please wait."
- msgstr "--> Fyller transaktionsmängden med valda paket. Var god dröj."
-
--#: ../output.py:1581
-+#: ../output.py:1678
- #, python-format
- msgid "---> Downloading header for %s to pack into transaction set."
- msgstr "---> Hämtar huvud för %s för att paketera i transaktionsmängden."
-
--#: ../utils.py:137 ../yummain.py:42
-+#: ../utils.py:93
-+msgid "Running"
-+msgstr "Kör"
-+
-+#: ../utils.py:94
-+msgid "Sleeping"
-+msgstr "Sover"
-+
-+#: ../utils.py:95
-+msgid "Uninterruptible"
-+msgstr "Oavbrytbar"
-+
-+#: ../utils.py:96
-+msgid "Zombie"
-+msgstr "Zombie"
-+
-+#: ../utils.py:97
-+msgid "Traced/Stopped"
-+msgstr "Spårad/Stoppad"
-+
-+#: ../utils.py:98 ../yumcommands.py:917
-+msgid "Unknown"
-+msgstr "Okänd"
-+
-+#: ../utils.py:109
-+msgid " The other application is: PackageKit"
-+msgstr " Det andra programmet är: PackageKit"
-+
-+#: ../utils.py:111
-+#, python-format
-+msgid " The other application is: %s"
-+msgstr " Det andra programmet är: %s"
-+
-+#: ../utils.py:114
-+#, python-format
-+msgid " Memory : %5s RSS (%5sB VSZ)"
-+msgstr " Minne : %5s RSS (%5s B VSZ)"
-+
-+#: ../utils.py:119
-+#, python-format
-+msgid " Started: %s - %s ago"
-+msgstr " Startade: %s - för %s sedan"
-+
-+#: ../utils.py:121
-+#, python-format
-+msgid " State : %s, pid: %d"
-+msgstr " Status : %s, pid: %d"
-+
-+#: ../utils.py:199
-+#, python-format
-+msgid "PluginExit Error: %s"
-+msgstr "Insticksmodulsavslutsfel: %s"
-+
-+#: ../utils.py:202
-+#, python-format
-+msgid "Yum Error: %s"
-+msgstr "Yum-fel: %s"
-+
-+#: ../utils.py:235 ../yummain.py:42
- msgid ""
- "\n"
- "\n"
-@@ -1091,7 +1253,7 @@ msgstr ""
- "\n"
- "Slutar efter att användaren avbröt"
-
--#: ../utils.py:143 ../yummain.py:48
-+#: ../utils.py:241 ../yummain.py:48
- msgid ""
- "\n"
- "\n"
-@@ -1101,7 +1263,7 @@ msgstr ""
- "\n"
- "Slutar med brutet rör (pipe)"
-
--#: ../utils.py:145 ../yummain.py:50
-+#: ../utils.py:243 ../yummain.py:50
- #, python-format
- msgid ""
- "\n"
-@@ -1112,15 +1274,15 @@ msgstr ""
- "\n"
- "%s"
-
--#: ../utils.py:184 ../yummain.py:273
-+#: ../utils.py:282 ../yummain.py:211
- msgid "Complete!"
- msgstr "Klart!"
-
--#: ../yumcommands.py:42
-+#: ../yumcommands.py:43
- msgid "You need to be root to perform this command."
- msgstr "Du måste vara root för att utföra detta kommando."
-
--#: ../yumcommands.py:49
-+#: ../yumcommands.py:50
- msgid ""
- "\n"
- "You have enabled checking of packages via GPG keys. This is a good thing. \n"
-@@ -1151,335 +1313,335 @@ msgstr ""
- "\n"
- "För mer information, kontakta leverantören av din distribution eller paket.\n"
-
--#: ../yumcommands.py:69
-+#: ../yumcommands.py:70
- #, python-format
- msgid "Error: Need to pass a list of pkgs to %s"
- msgstr "Fel: Behöver skicka en lista paket till %s"
-
--#: ../yumcommands.py:75
-+#: ../yumcommands.py:76
- msgid "Error: Need an item to match"
- msgstr "Fel: Behöver något att matcha emot"
-
--#: ../yumcommands.py:81
-+#: ../yumcommands.py:82
- msgid "Error: Need a group or list of groups"
- msgstr "Fel: Behöver en grupp eller lista av grupper"
-
--#: ../yumcommands.py:90
-+#: ../yumcommands.py:91
- #, python-format
- msgid "Error: clean requires an option: %s"
- msgstr "Fel: clean behöver ett argument: %s"
-
--#: ../yumcommands.py:95
-+#: ../yumcommands.py:96
- #, python-format
- msgid "Error: invalid clean argument: %r"
- msgstr "Fel: felaktigt argument till clean: %r"
-
--#: ../yumcommands.py:108
-+#: ../yumcommands.py:109
- msgid "No argument to shell"
- msgstr "Inget argument till skalet"
-
--#: ../yumcommands.py:110
-+#: ../yumcommands.py:111
- #, python-format
- msgid "Filename passed to shell: %s"
- msgstr "Filnamn skickat till skalet: %s"
-
--#: ../yumcommands.py:114
-+#: ../yumcommands.py:115
- #, python-format
- msgid "File %s given as argument to shell does not exist."
- msgstr "Filen %s som gavs som ett argument till skalet finns inte."
-
--#: ../yumcommands.py:120
-+#: ../yumcommands.py:121
- msgid "Error: more than one file given as argument to shell."
- msgstr "Fel: mer än en fil angiven som argument till skalet."
-
--#: ../yumcommands.py:169
-+#: ../yumcommands.py:170
- msgid "PACKAGE..."
- msgstr "PAKET..."
-
--#: ../yumcommands.py:172
-+#: ../yumcommands.py:173
- msgid "Install a package or packages on your system"
- msgstr "Installera ett eller flera paket på ditt system"
-
--#: ../yumcommands.py:180
-+#: ../yumcommands.py:181
- msgid "Setting up Install Process"
- msgstr "Förbereder installationsprocessen"
-
--#: ../yumcommands.py:191
-+#: ../yumcommands.py:192
- msgid "[PACKAGE...]"
- msgstr "[PAKET...]"
-
--#: ../yumcommands.py:194
-+#: ../yumcommands.py:195
- msgid "Update a package or packages on your system"
- msgstr "Uppdatera ett eller flera paket på ditt system"
-
--#: ../yumcommands.py:201
-+#: ../yumcommands.py:202
- msgid "Setting up Update Process"
- msgstr "Förbereder uppdateringsprocessen"
-
--#: ../yumcommands.py:246
-+#: ../yumcommands.py:244
- msgid "Display details about a package or group of packages"
- msgstr "Visa detaljer om ett paket eller en grupp paket"
-
--#: ../yumcommands.py:295
-+#: ../yumcommands.py:293
- msgid "Installed Packages"
- msgstr "Installerade paket"
-
--#: ../yumcommands.py:303
-+#: ../yumcommands.py:301
- msgid "Available Packages"
- msgstr "Tillgängliga paket"
-
--#: ../yumcommands.py:307
-+#: ../yumcommands.py:305
- msgid "Extra Packages"
- msgstr "Extra paket"
-
--#: ../yumcommands.py:311
-+#: ../yumcommands.py:309
- msgid "Updated Packages"
- msgstr "Uppdaterade paket"
-
- #. This only happens in verbose mode
--#: ../yumcommands.py:319 ../yumcommands.py:326 ../yumcommands.py:603
-+#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
- msgid "Obsoleting Packages"
- msgstr "Fasar ut paket"
-
--#: ../yumcommands.py:328
-+#: ../yumcommands.py:326
- msgid "Recently Added Packages"
- msgstr "Nyligen tillagda paket"
-
--#: ../yumcommands.py:335
-+#: ../yumcommands.py:333
- msgid "No matching Packages to list"
- msgstr "Inga matchande paket att lista"
-
--#: ../yumcommands.py:349
-+#: ../yumcommands.py:347
- msgid "List a package or groups of packages"
- msgstr "Lista ett paket eller en grupp paket"
-
--#: ../yumcommands.py:361
-+#: ../yumcommands.py:359
- msgid "Remove a package or packages from your system"
- msgstr "Ta bort ett eller flera paket från ditt system"
-
--#: ../yumcommands.py:368
-+#: ../yumcommands.py:366
- msgid "Setting up Remove Process"
- msgstr "Förbereder processen att ta bort"
-
--#: ../yumcommands.py:382
-+#: ../yumcommands.py:380
- msgid "Setting up Group Process"
- msgstr "Förbereder grupprocessen"
-
--#: ../yumcommands.py:388
-+#: ../yumcommands.py:386
- msgid "No Groups on which to run command"
- msgstr "Inga grupper att köra kommandot på"
-
--#: ../yumcommands.py:401
-+#: ../yumcommands.py:399
- msgid "List available package groups"
- msgstr "Lista tillgängliga paketgrupper"
-
--#: ../yumcommands.py:418
-+#: ../yumcommands.py:416
- msgid "Install the packages in a group on your system"
- msgstr "Installera paketen i en grupp på ditt system"
-
--#: ../yumcommands.py:440
-+#: ../yumcommands.py:438
- msgid "Remove the packages in a group from your system"
- msgstr "Ta bort paketen in en grupp från ditt system"
-
--#: ../yumcommands.py:467
-+#: ../yumcommands.py:465
- msgid "Display details about a package group"
- msgstr "Visa detaljer om en paketgrupp"
-
--#: ../yumcommands.py:491
-+#: ../yumcommands.py:489
- msgid "Generate the metadata cache"
- msgstr "Generera metadata-cache:n"
-
--#: ../yumcommands.py:497
-+#: ../yumcommands.py:495
- msgid "Making cache files for all metadata files."
- msgstr "Skapar cache-filer för alla metadatafiler."
-
--#: ../yumcommands.py:498
-+#: ../yumcommands.py:496
- msgid "This may take a while depending on the speed of this computer"
- msgstr "Detta kan ta ett tag beroende på datorns fart"
-
--#: ../yumcommands.py:519
-+#: ../yumcommands.py:517
- msgid "Metadata Cache Created"
- msgstr "Metadata-cache skapad"
-
--#: ../yumcommands.py:533
-+#: ../yumcommands.py:531
- msgid "Remove cached data"
- msgstr "Ta bort cache:ade data"
-
--#: ../yumcommands.py:553
-+#: ../yumcommands.py:551
- msgid "Find what package provides the given value"
- msgstr "Ta reda på vilka paket som tillhandahåller det angivna värdet"
-
--#: ../yumcommands.py:573
-+#: ../yumcommands.py:571
- msgid "Check for available package updates"
- msgstr "Leta efter tillgängliga paketuppdateringar"
-
--#: ../yumcommands.py:623
-+#: ../yumcommands.py:621
- msgid "Search package details for the given string"
- msgstr "Sök i paketdetaljer efter den angivna strängen"
-
--#: ../yumcommands.py:629
-+#: ../yumcommands.py:627
- msgid "Searching Packages: "
- msgstr "Söker paket: "
-
--#: ../yumcommands.py:646
-+#: ../yumcommands.py:644
- msgid "Update packages taking obsoletes into account"
- msgstr "Uppdatera paket med hänsyn tagen till utfasningar"
-
--#: ../yumcommands.py:654
-+#: ../yumcommands.py:652
- msgid "Setting up Upgrade Process"
- msgstr "Förbereder uppgraderingsprocessen"
-
--#: ../yumcommands.py:668
-+#: ../yumcommands.py:666
- msgid "Install a local RPM"
- msgstr "Installera en lokal RPM"
-
--#: ../yumcommands.py:676
-+#: ../yumcommands.py:674
- msgid "Setting up Local Package Process"
- msgstr "Förbereder den lokala paketprocessen"
-
--#: ../yumcommands.py:695
-+#: ../yumcommands.py:693
- msgid "Determine which package provides the given dependency"
- msgstr "Avgör vilket paket som tillhandahåller ett angivet beroende"
-
--#: ../yumcommands.py:698
-+#: ../yumcommands.py:696
- msgid "Searching Packages for Dependency:"
- msgstr "Söker i paketen efter beroende:"
-
--#: ../yumcommands.py:712
-+#: ../yumcommands.py:710
- msgid "Run an interactive yum shell"
- msgstr "Kör ett interactivt yum-skal"
-
--#: ../yumcommands.py:718
-+#: ../yumcommands.py:716
- msgid "Setting up Yum Shell"
- msgstr "Förbereder ett yum-skal"
-
--#: ../yumcommands.py:736
-+#: ../yumcommands.py:734
- msgid "List a package's dependencies"
- msgstr "Lista ett pakets beroenden"
-
--#: ../yumcommands.py:742
-+#: ../yumcommands.py:740
- msgid "Finding dependencies: "
- msgstr "Letar efter beroenden: "
-
--#: ../yumcommands.py:758
-+#: ../yumcommands.py:756
- msgid "Display the configured software repositories"
- msgstr "Visa konfigurerade programvaruförråd"
-
--#: ../yumcommands.py:810 ../yumcommands.py:811
-+#: ../yumcommands.py:822 ../yumcommands.py:823
- msgid "enabled"
- msgstr "aktivt"
-
--#: ../yumcommands.py:819 ../yumcommands.py:820
-+#: ../yumcommands.py:849 ../yumcommands.py:850
- msgid "disabled"
- msgstr "inaktivt"
-
--#: ../yumcommands.py:834
-+#: ../yumcommands.py:866
- msgid "Repo-id : "
- msgstr "Förråds-id : "
-
--#: ../yumcommands.py:835
-+#: ../yumcommands.py:867
- msgid "Repo-name : "
- msgstr "Förrådsnamn : "
-
--#: ../yumcommands.py:836
-+#: ../yumcommands.py:870
- msgid "Repo-status : "
- msgstr "Förrådsstatus : "
-
--#: ../yumcommands.py:838
-+#: ../yumcommands.py:873
- msgid "Repo-revision: "
- msgstr "Förrådsversion : "
-
--#: ../yumcommands.py:842
-+#: ../yumcommands.py:877
- msgid "Repo-tags : "
- msgstr "Förrådstaggar : "
-
--#: ../yumcommands.py:848
-+#: ../yumcommands.py:883
- msgid "Repo-distro-tags: "
- msgstr "Förråds-distro-taggar: "
-
--#: ../yumcommands.py:853
-+#: ../yumcommands.py:888
- msgid "Repo-updated : "
- msgstr "Förråd uppdaterat: "
-
--#: ../yumcommands.py:855
-+#: ../yumcommands.py:890
- msgid "Repo-pkgs : "
- msgstr "Förrådspaket : "
-
--#: ../yumcommands.py:856
-+#: ../yumcommands.py:891
- msgid "Repo-size : "
- msgstr "Förrådstorlek : "
-
--#: ../yumcommands.py:863
-+#: ../yumcommands.py:898
- msgid "Repo-baseurl : "
- msgstr "Förrådsbasurl : "
-
--#: ../yumcommands.py:871
-+#: ../yumcommands.py:906
- msgid "Repo-metalink: "
- msgstr "Förrådsmetalänk : "
-
--#: ../yumcommands.py:875
-+#: ../yumcommands.py:910
- msgid " Updated : "
- msgstr " Uppdaterat :"
-
--#: ../yumcommands.py:878
-+#: ../yumcommands.py:913
- msgid "Repo-mirrors : "
- msgstr "Förrådspeglar : "
-
--#: ../yumcommands.py:882 ../yummain.py:133
--msgid "Unknown"
--msgstr "Okänd"
--
--#: ../yumcommands.py:888
-+#: ../yumcommands.py:923
- #, python-format
- msgid "Never (last: %s)"
- msgstr "Aldrig (senast: %s)"
-
--#: ../yumcommands.py:890
-+#: ../yumcommands.py:925
- #, python-format
- msgid "Instant (last: %s)"
- msgstr "Omedelbart (senast: %s)"
-
--#: ../yumcommands.py:893
-+#: ../yumcommands.py:928
- #, python-format
- msgid "%s second(s) (last: %s)"
- msgstr "%s sekunder (senast: %s)"
-
--#: ../yumcommands.py:895
-+#: ../yumcommands.py:930
- msgid "Repo-expire : "
- msgstr "Förråd går ut : "
-
--#: ../yumcommands.py:898
-+#: ../yumcommands.py:933
- msgid "Repo-exclude : "
- msgstr "Förråd utesluter : "
-
--#: ../yumcommands.py:902
-+#: ../yumcommands.py:937
- msgid "Repo-include : "
- msgstr "Förråd inkluderar: "
-
-+#: ../yumcommands.py:941
-+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:912 ../yumcommands.py:938
-+#: ../yumcommands.py:951 ../yumcommands.py:980
- msgid "repo id"
- msgstr "förråds-id"
-
--#: ../yumcommands.py:926 ../yumcommands.py:927 ../yumcommands.py:941
-+#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
- msgid "status"
- msgstr "status"
-
--#: ../yumcommands.py:939
-+#: ../yumcommands.py:981
- msgid "repo name"
- msgstr "förrådsnamn"
-
--#: ../yumcommands.py:965
-+#: ../yumcommands.py:1018
- msgid "Display a helpful usage message"
- msgstr "Visa ett hjälpsamt meddelande om användning"
-
--#: ../yumcommands.py:999
-+#: ../yumcommands.py:1052
- #, python-format
- msgid "No help available for %s"
- msgstr "Ingen hjälp tillgänglig för %s"
-
--#: ../yumcommands.py:1004
-+#: ../yumcommands.py:1057
- msgid ""
- "\n"
- "\n"
-@@ -1489,7 +1651,7 @@ msgstr ""
- "\n"
- "alias: "
-
--#: ../yumcommands.py:1006
-+#: ../yumcommands.py:1059
- msgid ""
- "\n"
- "\n"
-@@ -1499,148 +1661,98 @@ msgstr ""
- "\n"
- "alias: "
-
--#: ../yumcommands.py:1034
-+#: ../yumcommands.py:1087
- msgid "Setting up Reinstall Process"
- msgstr "Förbereder ominstallationsprocessen"
-
--#: ../yumcommands.py:1042
-+#: ../yumcommands.py:1095
- msgid "reinstall a package"
- msgstr "ominstallera ett paket"
-
--#: ../yumcommands.py:1060
-+#: ../yumcommands.py:1113
- msgid "Setting up Downgrade Process"
- msgstr "Förbereder nedgraderingsprocessen"
-
--#: ../yumcommands.py:1067
-+#: ../yumcommands.py:1120
- msgid "downgrade a package"
- msgstr "nedgradera ett paket"
-
--#: ../yumcommands.py:1081
-+#: ../yumcommands.py:1134
- 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:1111
-+#: ../yumcommands.py:1173
- msgid " Yum version groups:"
--msgstr ""
-+msgstr " Yum versionsgrupper:"
-
--#: ../yumcommands.py:1121
--#, fuzzy
-+#: ../yumcommands.py:1183
- msgid " Group :"
--msgstr " Grupp-id: %s"
-+msgstr " Grupp:"
-
--#: ../yumcommands.py:1122
--#, fuzzy
-+#: ../yumcommands.py:1184
- msgid " Packages:"
--msgstr "Paket"
-+msgstr " Paket:"
-
--#: ../yumcommands.py:1152
-+#: ../yumcommands.py:1213
- msgid "Installed:"
- msgstr "Installerade:"
-
--#: ../yumcommands.py:1157
--#, fuzzy
-+#: ../yumcommands.py:1218
- msgid "Group-Installed:"
--msgstr "Installerade:"
-+msgstr "Gruppinstallerade:"
-
--#: ../yumcommands.py:1166
-+#: ../yumcommands.py:1227
- msgid "Available:"
- msgstr "Tillgängliga:"
-
--#: ../yumcommands.py:1172
--#, fuzzy
-+#: ../yumcommands.py:1233
- msgid "Group-Available:"
--msgstr "Tillgängliga:"
-+msgstr "Grupptillgängliga:"
-
--#: ../yumcommands.py:1211
-+#: ../yumcommands.py:1272
- msgid "Display, or use, the transaction history"
--msgstr ""
-+msgstr "Visa, eller använd, transaktionshistorien"
-
--#: ../yumcommands.py:1239
-+#: ../yumcommands.py:1300
- #, python-format
- msgid "Invalid history sub-command, use: %s."
--msgstr ""
--
--#: ../yummain.py:128
--msgid "Running"
--msgstr "Kör"
-+msgstr "Ogiltigt underkommando till history, använd: %s."
-
--#: ../yummain.py:129
--msgid "Sleeping"
--msgstr "Sover"
--
--#: ../yummain.py:130
--msgid "Uninteruptable"
--msgstr "Oavbrytbar"
-+#: ../yumcommands.py:1345
-+msgid "Check for problems in the rpmdb"
-+msgstr "Kontrollera om det finns problem i rpmdb:n"
-
--#: ../yummain.py:131
--msgid "Zombie"
--msgstr "Zombie"
--
--#: ../yummain.py:132
--msgid "Traced/Stopped"
--msgstr "Spårad/Stoppad"
--
--#: ../yummain.py:137
--msgid " The other application is: PackageKit"
--msgstr " Det andra programmet är: PackageKit"
--
--#: ../yummain.py:139
--#, python-format
--msgid " The other application is: %s"
--msgstr " Det andra programmet är: %s"
--
--#: ../yummain.py:142
--#, python-format
--msgid " Memory : %5s RSS (%5sB VSZ)"
--msgstr " Minne : %5s RSS (%5s B VSZ)"
--
--#: ../yummain.py:146
--#, python-format
--msgid " Started: %s - %s ago"
--msgstr " Startade: %s - för %s sedan"
--
--#: ../yummain.py:148
--#, python-format
--msgid " State : %s, pid: %d"
--msgstr " Status : %s, pid: %d"
--
--#: ../yummain.py:173
-+#: ../yummain.py:102
- 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:201 ../yummain.py:240
-+#: ../yummain.py:130 ../yummain.py:169
- #, python-format
- msgid "Error: %s"
- msgstr "Fel: %s"
-
--#: ../yummain.py:211 ../yummain.py:253
-+#: ../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:218
-+#: ../yummain.py:147
- msgid "Resolving Dependencies"
- msgstr "Löser upp beroenden"
-
--#: ../yummain.py:242
-+#: ../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:243
--msgid ""
--" You could try running: package-cleanup --problems\n"
--" package-cleanup --dupes\n"
--" rpm -Va --nofiles --nodigest"
--msgstr ""
--" Du kan försöka köra: package-cleanup --problems\n"
--" package-cleanup --dupes\n"
--" rpm -Va --nofiles --nodigest"
-+#: ../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:259
-+#: ../yummain.py:188
- msgid ""
- "\n"
- "Dependencies Resolved"
-@@ -1648,7 +1760,7 @@ msgstr ""
- "\n"
- "Beroenden upplösta"
-
--#: ../yummain.py:326
-+#: ../yummain.py:265
- msgid ""
- "\n"
- "\n"
-@@ -1686,170 +1798,165 @@ msgstr "Potentiell match av %s från %s"
- msgid "Matched %s to require for %s"
- msgstr "Matchade %s mot behov från %s"
-
--#: ../yum/depsolve.py:224
-+#: ../yum/depsolve.py:225
- #, python-format
- msgid "Member: %s"
- msgstr "Medlem: %s"
-
--#: ../yum/depsolve.py:238 ../yum/depsolve.py:749
-+#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
- #, python-format
- msgid "%s converted to install"
- msgstr "%s konverterad till att installera"
-
--#: ../yum/depsolve.py:245
-+#: ../yum/depsolve.py:246
- #, python-format
- msgid "Adding Package %s in mode %s"
- msgstr "Lägger till paket %s i läge %s"
-
--#: ../yum/depsolve.py:255
-+#: ../yum/depsolve.py:256
- #, python-format
- msgid "Removing Package %s"
- msgstr "Tar bort paket %s"
-
--#: ../yum/depsolve.py:277
-+#: ../yum/depsolve.py:278
- #, python-format
- msgid "%s requires: %s"
- msgstr "%s behöver: %s"
-
--#: ../yum/depsolve.py:335
-+#: ../yum/depsolve.py:319
-+#, python-format
-+msgid "%s requires %s"
-+msgstr "%s behöver %s"
-+
-+#: ../yum/depsolve.py:346
- msgid "Needed Require has already been looked up, cheating"
- msgstr "Nödvändigt behov har redan slagits upp, fuskar"
-
--#: ../yum/depsolve.py:345
-+#: ../yum/depsolve.py:356
- #, 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:352
-+#: ../yum/depsolve.py:363
- #, python-format
- msgid "Potential Provider: %s"
- msgstr "Potentiell tillhandahållare: %s"
-
--#: ../yum/depsolve.py:375
-+#: ../yum/depsolve.py:386
- #, 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:379
-+#: ../yum/depsolve.py:390
- #, python-format
- msgid "Mode for pkg providing %s: %s"
- msgstr "Läge för paket som tillhandahåller %s: %s"
-
--#: ../yum/depsolve.py:383
-+#: ../yum/depsolve.py:394
- #, python-format
- msgid "TSINFO: %s package requiring %s marked as erase"
- msgstr "TSINFO: paket %s behöver %s noteras att raderas"
-
--#: ../yum/depsolve.py:396
-+#: ../yum/depsolve.py:407
- #, 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:399
-+#: ../yum/depsolve.py:410
- #, python-format
- msgid "TSINFO: Updating %s to resolve dep."
- msgstr "TSINFO: Uppdaterar %s för att lösa upp beroenden"
-
--#: ../yum/depsolve.py:407
-+#: ../yum/depsolve.py:418
- #, 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:417
--#, python-format
--msgid "Unresolvable requirement %s for %s"
--msgstr "Ej upplösbart behov %s för %s"
--
--#: ../yum/depsolve.py:440
-+#: ../yum/depsolve.py:449
- #, 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:482
-+#: ../yum/depsolve.py:491
- #, 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:498
-+#: ../yum/depsolve.py:507
- #, 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:509
-+#: ../yum/depsolve.py:518
- #, python-format
- msgid "Potential resolving package %s has newer instance installed."
- msgstr "Potentiellt upplösande paket %s har nyare instans installerad."
-
--#: ../yum/depsolve.py:517 ../yum/depsolve.py:563
--#, python-format
--msgid "Missing Dependency: %s is needed by package %s"
--msgstr "Saknat beroende: %s behövs av paketet %s"
--
--#: ../yum/depsolve.py:530
-+#: ../yum/depsolve.py:536
- #, python-format
- msgid "%s already in ts, skipping this one"
- msgstr "%s är redan i ts, hoppar över denna"
-
--#: ../yum/depsolve.py:573
-+#: ../yum/depsolve.py:578
- #, python-format
- msgid "TSINFO: Marking %s as update for %s"
- msgstr "TSINFO: Noterar %s som en uppdatering av %s"
-
--#: ../yum/depsolve.py:581
-+#: ../yum/depsolve.py:586
- #, python-format
- msgid "TSINFO: Marking %s as install for %s"
- msgstr "TSINFO: Noterar %s som en installation av %s"
-
--#: ../yum/depsolve.py:685 ../yum/depsolve.py:767
-+#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
- msgid "Success - empty transaction"
- msgstr "Klart - tom transaktion"
-
--#: ../yum/depsolve.py:724 ../yum/depsolve.py:739
-+#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
- msgid "Restarting Loop"
- msgstr "Startar om slingan"
-
--#: ../yum/depsolve.py:755
-+#: ../yum/depsolve.py:760
- msgid "Dependency Process ending"
- msgstr "Beroendeprocessen avslutas"
-
--#: ../yum/depsolve.py:761
-+#: ../yum/depsolve.py:774
- #, python-format
- msgid "%s from %s has depsolving problems"
- msgstr "%s från %s har problem att lösa beroenden"
-
--#: ../yum/depsolve.py:768
-+#: ../yum/depsolve.py:782
- msgid "Success - deps resolved"
- msgstr "Klart - beroenden upplösta"
-
--#: ../yum/depsolve.py:782
-+#: ../yum/depsolve.py:796
- #, python-format
- msgid "Checking deps for %s"
- msgstr "Kontrollerar beroenden för %s"
-
--#: ../yum/depsolve.py:865
-+#: ../yum/depsolve.py:874
- #, python-format
- msgid "looking for %s as a requirement of %s"
- msgstr "letar efter %s som ett behov för %s"
-
--#: ../yum/depsolve.py:1007
-+#: ../yum/depsolve.py:1090
- #, python-format
- msgid "Running compare_providers() for %s"
- msgstr "Kör compare_providers() för %s"
-
--#: ../yum/depsolve.py:1041 ../yum/depsolve.py:1047
-+#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
- #, python-format
- msgid "better arch in po %s"
- msgstr "bättre arkitektur i po %s"
-
--#: ../yum/depsolve.py:1142
-+#: ../yum/depsolve.py:1218
- #, python-format
- msgid "%s obsoletes %s"
- msgstr "%s fasar ut %s"
-
--#: ../yum/depsolve.py:1154
-+#: ../yum/depsolve.py:1230
- #, python-format
- msgid ""
- "archdist compared %s to %s on %s\n"
-@@ -1858,103 +1965,122 @@ msgstr ""
- "arkitekturavstånd jämför %s med %s på %s\n"
- " Vinnare: %s"
-
--#: ../yum/depsolve.py:1161
-+#: ../yum/depsolve.py:1237
- #, python-format
- msgid "common sourcerpm %s and %s"
- msgstr "samma käll-rpm %s och %s"
-
--#: ../yum/depsolve.py:1167
-+#: ../yum/depsolve.py:1241
-+#, python-format
-+msgid "base package %s is installed for %s"
-+msgstr "baspaket %s är installerat för %s"
-+
-+#: ../yum/depsolve.py:1247
- #, python-format
- msgid "common prefix of %s between %s and %s"
- msgstr "gemensamt prefix för %s mellan %s och %s"
-
--#: ../yum/depsolve.py:1175
-+#: ../yum/depsolve.py:1256
- #, python-format
- msgid "Best Order: %s"
- msgstr "Bästa ordning: %s"
-
--#: ../yum/__init__.py:187
-+#: ../yum/__init__.py:192
- 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:412
-+#: ../yum/__init__.py:424
- #, 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:450
-+#: ../yum/__init__.py:462
- msgid "plugins already initialised"
- msgstr "insticksmoduler redan initierade"
-
--#: ../yum/__init__.py:457
-+#: ../yum/__init__.py:469
- 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:468
-+#: ../yum/__init__.py:480
- msgid "Reading Local RPMDB"
- msgstr "Läser lokal RPMDB"
-
--#: ../yum/__init__.py:489
-+#: ../yum/__init__.py:504
- 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:509
-+#: ../yum/__init__.py:524
- 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:539
-+#: ../yum/__init__.py:554
- msgid "Setting up Package Sacks"
- msgstr "Förbereder paketsäckar"
-
--#: ../yum/__init__.py:584
-+#: ../yum/__init__.py:599
- #, 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:585
-+#: ../yum/__init__.py:600
- msgid "therefore this repo cannot be reset.\n"
- msgstr "därför kan inte detta förråd återställas.\n"
-
--#: ../yum/__init__.py:590
-+#: ../yum/__init__.py:605
- 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:602
-+#: ../yum/__init__.py:617
- msgid "Building updates object"
- msgstr "Bygger uppdateringsobjekt"
-
--#: ../yum/__init__.py:637
-+#: ../yum/__init__.py:652
- 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:662
-+#: ../yum/__init__.py:677
- msgid "Getting group metadata"
- msgstr "Hämtar gruppmetadata"
-
--#: ../yum/__init__.py:688
-+#: ../yum/__init__.py:703
- #, python-format
- msgid "Adding group file from repository: %s"
- msgstr "Lägger till gruppfil från förrådet: %s"
-
--#: ../yum/__init__.py:697
-+#: ../yum/__init__.py:712
- #, 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:703
-+#: ../yum/__init__.py:718
- msgid "No Groups Available in any repository"
- msgstr "Inga grupper tillgängliga i något förråd"
-
--#: ../yum/__init__.py:763
-+#: ../yum/__init__.py:730
-+msgid "Getting pkgtags metadata"
-+msgstr "Hämtar pakettaggsmetadata"
-+
-+#: ../yum/__init__.py:740
-+#, python-format
-+msgid "Adding tags from repository: %s"
-+msgstr "Lägger till taggar från förrådet: %s"
-+
-+#: ../yum/__init__.py:749
-+#, 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
- msgid "Importing additional filelist information"
- msgstr "Importerar ytterligare fillisteinformation"
-
--#: ../yum/__init__.py:777
-+#: ../yum/__init__.py:841
- #, 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:785
-+#: ../yum/__init__.py:849
- msgid ""
- "There are unfinished transactions remaining. You might consider running yum-"
- "complete-transaction first to finish them."
-@@ -1962,17 +2088,18 @@ 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:853
-+#. Kind of hacky
-+#: ../yum/__init__.py:922
- #, python-format
- msgid "Skip-broken round %i"
- msgstr "Hoppa-över-trasiga runda %i"
-
--#: ../yum/__init__.py:906
-+#: ../yum/__init__.py:975
- #, python-format
- msgid "Skip-broken took %i rounds "
- msgstr "Hoppa-över-trasiga tog %i rundor "
-
--#: ../yum/__init__.py:907
-+#: ../yum/__init__.py:976
- msgid ""
- "\n"
- "Packages skipped because of dependency problems:"
-@@ -1980,78 +2107,91 @@ msgstr ""
- "\n"
- "Paket hoppades över på grund av beroendeproblem:"
-
--#: ../yum/__init__.py:911
-+#: ../yum/__init__.py:980
- #, python-format
- msgid " %s from %s"
- msgstr " %s från %s"
-
--#: ../yum/__init__.py:1083
-+#: ../yum/__init__.py:1121
-+msgid "Warning: RPMDB altered outside of yum."
-+msgstr "Varning: RPMDB ändrad utanför yum."
-+
-+#: ../yum/__init__.py:1126
-+msgid "missing requires"
-+msgstr "saknade behov"
-+
-+#: ../yum/__init__.py:1127
-+msgid "installed conflict"
-+msgstr "installerade konflikter"
-+
-+#: ../yum/__init__.py:1180
- 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:1101
-+#: ../yum/__init__.py:1198
- #, 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:1130
-+#: ../yum/__init__.py:1227
- #, 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:1169
-+#: ../yum/__init__.py:1266
- #, python-format
- msgid "%s was supposed to be removed but is not!"
- msgstr "%s skulle tagits bort men det gjordes inte!"
-
- #. Whoa. What the heck happened?
--#: ../yum/__init__.py:1289
-+#: ../yum/__init__.py:1386
- #, 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:1293
-+#: ../yum/__init__.py:1390
- #, 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:1328
-+#: ../yum/__init__.py:1425
- #, python-format
- msgid "Could not create lock at %s: %s "
--msgstr ""
-+msgstr "Kunde inte skapa lås av %s: %s "
-
--#: ../yum/__init__.py:1373
--msgid "Package does not match intended download"
--msgstr "Paketet matchar inte avsedd det avsett att laddas ner"
-+#: ../yum/__init__.py:1470
-+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"
-
--#: ../yum/__init__.py:1388
-+#: ../yum/__init__.py:1486
- msgid "Could not perform checksum"
- msgstr "Kunde inte utföra kontrollsummering"
-
--#: ../yum/__init__.py:1391
-+#: ../yum/__init__.py:1489
- msgid "Package does not match checksum"
- msgstr "Paketet stämmer inte med kontrollsumman"
-
--#: ../yum/__init__.py:1433
-+#: ../yum/__init__.py:1531
- #, 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:1436 ../yum/__init__.py:1465
-+#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
- #, python-format
- msgid "using local copy of %s"
- msgstr "använder lokal kopia av %s"
-
--#: ../yum/__init__.py:1477
-+#: ../yum/__init__.py:1575
- #, python-format
- msgid ""
- "Insufficient space in download directory %s\n"
-@@ -2062,11 +2202,11 @@ msgstr ""
- " * fritt %s\n"
- " * behovet %s"
-
--#: ../yum/__init__.py:1526
-+#: ../yum/__init__.py:1624
- msgid "Header is not complete."
- msgstr "Huvudet är inte komplett."
-
--#: ../yum/__init__.py:1563
-+#: ../yum/__init__.py:1661
- #, python-format
- msgid ""
- "Header not in local cache and caching-only mode enabled. Cannot download %s"
-@@ -2074,64 +2214,64 @@ msgstr ""
- "Huvudet finns inte i den lokala cachen och endast-cache-läget är aktiverat. "
- "Kan inte hämta %s"
-
--#: ../yum/__init__.py:1618
-+#: ../yum/__init__.py:1716
- #, python-format
- msgid "Public key for %s is not installed"
- msgstr "Den publika nyckeln för %s är inte installerad"
-
--#: ../yum/__init__.py:1622
-+#: ../yum/__init__.py:1720
- #, python-format
- msgid "Problem opening package %s"
- msgstr "Problem att öppna paketet %s"
-
--#: ../yum/__init__.py:1630
-+#: ../yum/__init__.py:1728
- #, python-format
- msgid "Public key for %s is not trusted"
- msgstr "Den publika nyckeln för %s är inte betrodd"
-
--#: ../yum/__init__.py:1634
-+#: ../yum/__init__.py:1732
- #, python-format
- msgid "Package %s is not signed"
- msgstr "Paket %s är inte signerat"
-
--#: ../yum/__init__.py:1672
-+#: ../yum/__init__.py:1770
- #, python-format
- msgid "Cannot remove %s"
- msgstr "Det går inte att ta bort %s"
-
--#: ../yum/__init__.py:1676
-+#: ../yum/__init__.py:1774
- #, 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:1712
-+#: ../yum/__init__.py:1820
- #, python-format
- msgid "Cannot remove %s file %s"
- msgstr "Det går inte att ta bort %s-filen %s"
-
--#: ../yum/__init__.py:1716
-+#: ../yum/__init__.py:1824
- #, python-format
- msgid "%s file %s removed"
- msgstr "%s-filen %s borttagen"
-
--#: ../yum/__init__.py:1718
-+#: ../yum/__init__.py:1826
- #, python-format
- msgid "%d %s files removed"
- msgstr "%d %s-filer borttagna"
-
--#: ../yum/__init__.py:1787
-+#: ../yum/__init__.py:1895
- #, 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:1793
-+#: ../yum/__init__.py:1901
- #, 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:2026
-+#: ../yum/__init__.py:2180
- msgid ""
- "searchPackages() will go away in a future version of "
- "Yum. Use searchGenerator() instead. \n"
-@@ -2139,181 +2279,181 @@ msgstr ""
- "searchPackages() kommer att försvinna i en framtida version av "
- "Yum. Använd searchGenerator() istället. \n"
-
--#: ../yum/__init__.py:2065
-+#: ../yum/__init__.py:2219
- #, python-format
- msgid "Searching %d packages"
- msgstr "Söker i %d paket"
-
--#: ../yum/__init__.py:2069
-+#: ../yum/__init__.py:2223
- #, python-format
- msgid "searching package %s"
- msgstr "söker i paketet %s"
-
--#: ../yum/__init__.py:2081
-+#: ../yum/__init__.py:2235
- msgid "searching in file entries"
- msgstr "söker i filposter"
-
--#: ../yum/__init__.py:2088
-+#: ../yum/__init__.py:2242
- msgid "searching in provides entries"
- msgstr "söker i tillhandahållandeposter"
-
--#: ../yum/__init__.py:2121
-+#: ../yum/__init__.py:2275
- #, python-format
- msgid "Provides-match: %s"
- msgstr "Tillhandahållandematchning: %s"
-
--#: ../yum/__init__.py:2170
-+#: ../yum/__init__.py:2324
- msgid "No group data available for configured repositories"
- msgstr "Inga gruppdata är tillgängliga för de konfigurerade förråden"
-
--#: ../yum/__init__.py:2201 ../yum/__init__.py:2220 ../yum/__init__.py:2251
--#: ../yum/__init__.py:2257 ../yum/__init__.py:2336 ../yum/__init__.py:2340
--#: ../yum/__init__.py:2655
-+#: ../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
- #, python-format
- msgid "No Group named %s exists"
- msgstr "Det finns ingen grupp med namnet %s"
-
--#: ../yum/__init__.py:2232 ../yum/__init__.py:2353
-+#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
- #, python-format
- msgid "package %s was not marked in group %s"
- msgstr "paket %s noterades inte i gruppen %s"
-
--#: ../yum/__init__.py:2279
-+#: ../yum/__init__.py:2433
- #, python-format
- msgid "Adding package %s from group %s"
- msgstr "Lägger till paket %s från grupp %s"
-
--#: ../yum/__init__.py:2283
-+#: ../yum/__init__.py:2437
- #, 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:2380
-+#: ../yum/__init__.py:2539
- #, python-format
- msgid "Package tuple %s could not be found in packagesack"
- msgstr "Pakettupel %s fanns inte i paketsäcken"
-
--#: ../yum/__init__.py:2399
--#, fuzzy, python-format
-+#: ../yum/__init__.py:2558
-+#, python-format
- msgid "Package tuple %s could not be found in rpmdb"
--msgstr "Pakettupel %s fanns inte i paketsäcken"
-+msgstr "Pakettupel %s fanns inte i rpmdb"
-
--#: ../yum/__init__.py:2455 ../yum/__init__.py:2505
-+#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
- msgid "Invalid version flag"
- msgstr "Ogiltig versionsflagga"
-
--#: ../yum/__init__.py:2475 ../yum/__init__.py:2480
-+#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
- #, python-format
- msgid "No Package found for %s"
- msgstr "Inga paket hittades för %s"
-
--#: ../yum/__init__.py:2696
-+#: ../yum/__init__.py:2855
- msgid "Package Object was not a package object instance"
- msgstr "Paketobjektet var inte en paketobjektinstans"
-
--#: ../yum/__init__.py:2700
-+#: ../yum/__init__.py:2859
- msgid "Nothing specified to install"
- msgstr "Inget angivet att installeras"
-
--#: ../yum/__init__.py:2716 ../yum/__init__.py:3489
-+#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
- #, 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:2722 ../yum/__init__.py:3037 ../yum/__init__.py:3205
--#: ../yum/__init__.py:3495
-+#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:3658
- #, python-format
- msgid "No Match for argument: %s"
- msgstr "Ingen matchning för argument: %s"
-
--#: ../yum/__init__.py:2798
-+#: ../yum/__init__.py:2957
- #, python-format
- msgid "Package %s installed and not available"
- msgstr "Paket %s installerat och inte tillgänligt"
-
--#: ../yum/__init__.py:2801
-+#: ../yum/__init__.py:2960
- msgid "No package(s) available to install"
- msgstr "Inga paket tillgängliga att installera"
-
--#: ../yum/__init__.py:2813
-+#: ../yum/__init__.py:2972
- #, python-format
- msgid "Package: %s - already in transaction set"
- msgstr "Paket: %s - redan i transaktionsmängden"
-
--#: ../yum/__init__.py:2839
-+#: ../yum/__init__.py:2998
- #, 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:2842
-+#: ../yum/__init__.py:3001
- #, 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:2850
-+#: ../yum/__init__.py:3009
- #, python-format
- msgid "Package %s already installed and latest version"
--msgstr "Paket %s är redan installerast och senaste version"
-+msgstr "Paket %s är redan installerat och senaste version"
-
--#: ../yum/__init__.py:2864
-+#: ../yum/__init__.py:3023
- #, 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:2966
-+#: ../yum/__init__.py:3126
- msgid "Updating Everything"
- msgstr "Uppdaterar allt"
-
--#: ../yum/__init__.py:2987 ../yum/__init__.py:3102 ../yum/__init__.py:3129
--#: ../yum/__init__.py:3155
-+#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3315
- #, 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:3022 ../yum/__init__.py:3202
-+#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
- #, python-format
- msgid "%s"
- msgstr "%s"
-
--#: ../yum/__init__.py:3093
-+#: ../yum/__init__.py:3253
- #, 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:3124
-+#: ../yum/__init__.py:3284
- #, python-format
- msgid "Not Updating Package that is obsoleted: %s"
--msgstr "Uppdaterar inte paket som är utfasade: %s"
-+msgstr "Uppdaterar inte paket som fasas ut: %s"
-
--#: ../yum/__init__.py:3133 ../yum/__init__.py:3159
-+#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
- #, 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:3218
-+#: ../yum/__init__.py:3378
- msgid "No package matched to remove"
--msgstr "Inget paket matchar att tas bort"
-+msgstr "Inget paket att tas bort matchar"
-
--#: ../yum/__init__.py:3251 ../yum/__init__.py:3349 ../yum/__init__.py:3432
-+#: ../yum/__init__.py:3412
- #, python-format
--msgid "Cannot open file: %s. Skipping."
--msgstr "Det går inte att öppna filen: %s. Hoppar över."
-+msgid "Cannot open: %s. Skipping."
-+msgstr "Det går inte att öppna: %s. Hoppar över."
-
--#: ../yum/__init__.py:3254 ../yum/__init__.py:3352 ../yum/__init__.py:3435
-+#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
- #, python-format
- msgid "Examining %s: %s"
- msgstr "Undersöker %s: %s"
-
--#: ../yum/__init__.py:3262 ../yum/__init__.py:3355 ../yum/__init__.py:3438
-+#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
- #, 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:3270
-+#: ../yum/__init__.py:3431
- #, python-format
- msgid ""
- "Package %s not installed, cannot update it. Run yum install to install it "
-@@ -2322,98 +2462,108 @@ msgstr ""
- "Paket %s är inte installerat, kan inte uppdatera det. Kör yum install för "
- "att installera det istället."
-
--#: ../yum/__init__.py:3299 ../yum/__init__.py:3360 ../yum/__init__.py:3443
-+#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
- #, python-format
- msgid "Excluding %s"
- msgstr "Utesluter %s"
-
--#: ../yum/__init__.py:3304
-+#: ../yum/__init__.py:3465
- #, python-format
- msgid "Marking %s to be installed"
- msgstr "Noterar %s för installation"
-
--#: ../yum/__init__.py:3310
-+#: ../yum/__init__.py:3471
- #, python-format
- msgid "Marking %s as an update to %s"
- msgstr "Noterar %s som en uppdatering av %s"
-
--#: ../yum/__init__.py:3317
-+#: ../yum/__init__.py:3478
- #, python-format
- msgid "%s: does not update installed package."
- msgstr "%s: uppdaterar inte ett installerat paket."
-
--#: ../yum/__init__.py:3379
-+#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
-+#, python-format
-+msgid "Cannot open file: %s. Skipping."
-+msgstr "Det går inte att öppna filen: %s. Hoppar över."
-+
-+#: ../yum/__init__.py:3541
- msgid "Problem in reinstall: no package matched to remove"
- msgstr "Problem att ominstallera: inget paket matchades att tas bort"
-
--#: ../yum/__init__.py:3392 ../yum/__init__.py:3523
-+#: ../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:3413
-+#: ../yum/__init__.py:3575
- #, 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:3515
-+#: ../yum/__init__.py:3678
- msgid "No package(s) available to downgrade"
- msgstr "Inga paket tillgängliga att nedgradera"
-
--#: ../yum/__init__.py:3559
-+#: ../yum/__init__.py:3731
- #, python-format
- msgid "No Match for available package: %s"
- msgstr "Ingen matchning för tillgängliga paket: %s"
-
--#: ../yum/__init__.py:3565
--#, fuzzy, python-format
-+#: ../yum/__init__.py:3738
-+#, python-format
- msgid "Only Upgrade available on package: %s"
--msgstr "Endast uppdatering tillgängliga för paket: %s"
-+msgstr "Endast uppgradering tillgängliga för paket: %s"
-
--#: ../yum/__init__.py:3635 ../yum/__init__.py:3672
--#, fuzzy, python-format
-+#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
-+#, python-format
- msgid "Failed to downgrade: %s"
--msgstr "Paket att nedgradera"
-+msgstr "Misslyckades nedgradera: %s"
-
--#: ../yum/__init__.py:3704
-+#: ../yum/__init__.py:3877
- #, python-format
- msgid "Retrieving GPG key from %s"
- msgstr "Hämtar GPG-nyckel från %s"
-
--#: ../yum/__init__.py:3724
-+#: ../yum/__init__.py:3897
- msgid "GPG key retrieval failed: "
- msgstr "Hämtandet av GPG-nyckeln misslyckades: "
-
--#: ../yum/__init__.py:3735
-+#: ../yum/__init__.py:3903
-+#, python-format
-+msgid "Invalid GPG Key from %s: %s"
-+msgstr "Ogiltig GPG-nyckel från %s: %s"
-+
-+#: ../yum/__init__.py:3912
- #, 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:3767
-+#: ../yum/__init__.py:3944
- #, python-format
- msgid "GPG key at %s (0x%s) is already installed"
- msgstr "GPG-nyckel vid %s (0x%s) är redan installerad"
-
- #. Try installing/updating GPG key
--#: ../yum/__init__.py:3772 ../yum/__init__.py:3834
-+#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
- #, python-format
- msgid "Importing GPG key 0x%s \"%s\" from %s"
- msgstr "Importerar GPG-nyckel 0x%s \"%s\" från %s"
-
--#: ../yum/__init__.py:3789
-+#: ../yum/__init__.py:3966
- msgid "Not installing key"
- msgstr "Installerar inte nyckeln"
-
--#: ../yum/__init__.py:3795
-+#: ../yum/__init__.py:3972
- #, python-format
- msgid "Key import failed (code %d)"
- msgstr "Nyckelimport misslyckades (kod %d)"
-
--#: ../yum/__init__.py:3796 ../yum/__init__.py:3855
-+#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
- msgid "Key imported successfully"
- msgstr "Nyckelimport lyckades"
-
--#: ../yum/__init__.py:3801 ../yum/__init__.py:3860
-+#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
- #, python-format
- msgid ""
- "The GPG keys listed for the \"%s\" repository are already installed but they "
-@@ -2424,41 +2574,46 @@ 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:3810
-+#: ../yum/__init__.py:3987
- msgid "Import of key(s) didn't help, wrong key(s)?"
- msgstr "Import av nycklar hjälpte inte, fel nycklar?"
-
--#: ../yum/__init__.py:3829
-+#: ../yum/__init__.py:4006
- #, 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:3849
-+#: ../yum/__init__.py:4026
- #, python-format
- msgid "Not installing key for repo %s"
- msgstr "Installerar inte nyckel för förråd %s"
-
--#: ../yum/__init__.py:3854
-+#: ../yum/__init__.py:4031
- msgid "Key import failed"
- msgstr "Nyckelimport misslyckades"
-
--#: ../yum/__init__.py:3976
-+#: ../yum/__init__.py:4157
- msgid "Unable to find a suitable mirror."
- msgstr "Kan inte hitta en lämplig spegel."
-
--#: ../yum/__init__.py:3978
-+#: ../yum/__init__.py:4159
- msgid "Errors were encountered while downloading packages."
- msgstr "Fel uppstod när paket hämtades."
-
--#: ../yum/__init__.py:4028
-+#: ../yum/__init__.py:4209
- #, python-format
- msgid "Please report this error at %s"
- msgstr "Rapportera gärna detta fel till %s"
-
--#: ../yum/__init__.py:4052
-+#: ../yum/__init__.py:4233
- msgid "Test Transaction Errors: "
- msgstr "Transaktionstestfel: "
-
-+#: ../yum/__init__.py:4334
-+#, 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
- msgid "Loaded plugins: "
-@@ -2519,7 +2674,20 @@ msgstr "Kan inte hitta konfigurationsfil för insticksmodulen %s"
- msgid "registration of commands not supported"
- msgstr "registrering av kommandon stöds inte"
-
--#: ../yum/rpmtrans.py:78
-+#: ../yum/rpmsack.py:102
-+msgid "has missing requires of"
-+msgstr "har ett saknat beroende på"
-+
-+#: ../yum/rpmsack.py:105
-+msgid "has installed conflicts"
-+msgstr "har installerad konflikt"
-+
-+#: ../yum/rpmsack.py:114
-+#, python-format
-+msgid "%s is a duplicate with %s"
-+msgstr "%s är en dubblett med %s"
-+
-+#: ../yum/rpmtrans.py:79
- msgid "Repackaging"
- msgstr "Paketerar om"
-
-@@ -2552,10 +2720,3 @@ msgstr "Trasigt huvud %s"
- #, python-format
- msgid "Error opening rpm %s - error %s"
- msgstr "Fel när rpm %s öppnades - fel %s"
--
--#~ msgid ""
--#~ "getInstalledPackageObject() will go away, use self.rpmdb.searchPkgTuple"
--#~ "().\n"
--#~ msgstr ""
--#~ "getInstalledPackageObject() kommer att försvinna, använd self.rpmdb."
--#~ "searchPkgTuple().\n"
-diff --git a/po/uk.po b/po/uk.po
-new file mode 100644
-index 0000000..cbc03c8
---- /dev/null
-+++ b/po/uk.po
-@@ -0,0 +1,2742 @@
-+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-+# This file is distributed under the same license as the YUM package.
-+#
-+# Yuri Chornoivan <yurchor at ukr.net>, 2010.
-+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"
-+"Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
-+"Language-Team: Ukrainian <trans-uk at lists.fedoraproject.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"X-Generator: Lokalize 1.1\n"
-+"Plural-Forms: nplurals=1; plural=0;\n"
-+
-+#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
-+msgid "Updating"
-+msgstr "Оновлення"
-+
-+#: ../callback.py:49 ../yum/rpmtrans.py:73
-+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
-+#: ../yum/rpmtrans.py:77
-+msgid "Installing"
-+msgstr "Встановлення"
-+
-+#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
-+msgid "Obsoleted"
-+msgstr "Став застарілим"
-+
-+#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
-+msgid "Updated"
-+msgstr "Оновлено"
-+
-+#: ../callback.py:55 ../output.py:1438
-+msgid "Erased"
-+msgstr "Вилучено"
-+
-+#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
-+#: ../output.py:1434 ../output.py:1646
-+msgid "Installed"
-+msgstr "Встановлено"
-+
-+#: ../callback.py:130
-+msgid "No header - huh?"
-+msgstr "Немає заголовка — як це?"
-+
-+#: ../callback.py:168
-+msgid "Repackage"
-+msgstr "Перепакувати"
-+
-+#: ../callback.py:189
-+#, python-format
-+msgid "Error: invalid output state: %s for %s"
-+msgstr "Помилка: некоректний стан виводу: %s для %s"
-+
-+#: ../callback.py:212
-+#, python-format
-+msgid "Erased: %s"
-+msgstr "Вилучено: %s"
-+
-+#: ../callback.py:217 ../output.py:948 ../output.py:1648
-+msgid "Removing"
-+msgstr "Вилучення"
-+
-+#: ../callback.py:219 ../yum/rpmtrans.py:78
-+msgid "Cleanup"
-+msgstr "Очищення диска"
-+
-+#: ../cli.py:107
-+#, python-format
-+msgid "Command \"%s\" already defined"
-+msgstr "Команду «%s» вже визначено"
-+
-+#: ../cli.py:119
-+msgid "Setting up repositories"
-+msgstr "Налаштування сховищ"
-+
-+#: ../cli.py:130
-+msgid "Reading repository metadata in from local files"
-+msgstr "Читання метаданих сховища з локальних файлів"
-+
-+#: ../cli.py:194 ../utils.py:193
-+#, python-format
-+msgid "Config Error: %s"
-+msgstr "Помилка налаштування: %s"
-+
-+#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
-+#, python-format
-+msgid "Options Error: %s"
-+msgstr "Помилка у параметрах: %s"
-+
-+#: ../cli.py:227
-+#, python-format
-+msgid " Installed: %s-%s at %s"
-+msgstr " Встановлено: %s-%s у %s"
-+
-+#: ../cli.py:229
-+#, python-format
-+msgid " Built : %s at %s"
-+msgstr " Зібрано : %s о %s"
-+
-+#: ../cli.py:231
-+#, python-format
-+msgid " Committed: %s at %s"
-+msgstr " Надіслано : %s о %s"
-+
-+#: ../cli.py:270
-+msgid "You need to give some command"
-+msgstr "Вам слід вказати якусь команду"
-+
-+#: ../cli.py:284
-+#, python-format
-+msgid "No such command: %s. Please use %s --help"
-+msgstr "Команди %s не виявлено. Будь ласка, скористайтеся командою %s --help"
-+
-+#: ../cli.py:314
-+msgid "Disk Requirements:\n"
-+msgstr "Вимоги до диска:\n"
-+
-+#: ../cli.py:316
-+#, python-format
-+msgid " At least %dMB more space needed on the %s filesystem.\n"
-+msgstr ""
-+" Потрібно принаймні ще %d МБ простору на диску для файлової системи %s.\n"
-+
-+#. TODO: simplify the dependency errors?
-+#. Fixup the summary
-+#: ../cli.py:321
-+msgid ""
-+"Error Summary\n"
-+"-------------\n"
-+msgstr ""
-+"Резюме помилок\n"
-+"-------------\n"
-+
-+#: ../cli.py:364
-+msgid "Trying to run the transaction but nothing to do. Exiting."
-+msgstr ""
-+"Спроба виконання операції за умови порожнього списку операцій. Завершуємо "
-+"роботу."
-+
-+#: ../cli.py:403
-+msgid "Exiting on user Command"
-+msgstr "Завершення роботи за бажанням користувача"
-+
-+#: ../cli.py:407
-+msgid "Downloading Packages:"
-+msgstr "Звантаження пакунків:"
-+
-+#: ../cli.py:412
-+msgid "Error Downloading Packages:\n"
-+msgstr "Помилка завантаження пакетів:\n"
-+
-+#: ../cli.py:426 ../yum/__init__.py:4195
-+msgid "Running rpm_check_debug"
-+msgstr "Виконання rpm_check_debug"
-+
-+#: ../cli.py:435 ../yum/__init__.py:4204
-+msgid "ERROR You need to update rpm to handle:"
-+msgstr "ПОМИЛКА. Вам слід оновити rpm для обробки:"
-+
-+#: ../cli.py:437 ../yum/__init__.py:4207
-+msgid "ERROR with rpm_check_debug vs depsolve:"
-+msgstr "ПОМИЛКА у rpm_check_debug через depsolve:"
-+
-+#: ../cli.py:443
-+msgid "RPM needs to be updated"
-+msgstr "RPM слід оновити"
-+
-+#: ../cli.py:444
-+#, python-format
-+msgid "Please report this error in %s"
-+msgstr "Будь ласка, повідомте про цю помилку за адресою %s"
-+
-+#: ../cli.py:450
-+msgid "Running Transaction Test"
-+msgstr "Запускається операція з перевірки"
-+
-+#: ../cli.py:466
-+msgid "Transaction Check Error:\n"
-+msgstr "Помилка під час перевірки операції:\n"
-+
-+#: ../cli.py:473
-+msgid "Transaction Test Succeeded"
-+msgstr "Операцію з перевірки успішно завершено"
-+
-+#: ../cli.py:495
-+msgid "Running Transaction"
-+msgstr "Виконання операції"
-+
-+#: ../cli.py:525
-+msgid ""
-+"Refusing to automatically import keys when running unattended.\n"
-+"Use \"-y\" to override."
-+msgstr ""
-+"Автоматичне імпортування ключів під час некерованого запуску заборонено.\n"
-+"Скасувати заборону можна параметром «-y»."
-+
-+#: ../cli.py:544 ../cli.py:578
-+msgid " * Maybe you meant: "
-+msgstr " * Можливо, ви хотіли використати: "
-+
-+#: ../cli.py:561 ../cli.py:569
-+#, 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
-+#, python-format
-+msgid "No package %s%s%s available."
-+msgstr "Пакунок %s%s%s недоступний."
-+
-+#: ../cli.py:612 ../cli.py:748
-+msgid "Package(s) to install"
-+msgstr "Пакунки, які слід встановити"
-+
-+#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
-+#: ../yumcommands.py:160
-+msgid "Nothing to do"
-+msgstr "Нічого виконувати"
-+
-+#: ../cli.py:647
-+#, python-format
-+msgid "%d packages marked for Update"
-+msgstr "%d пакунків позначено для оновлення"
-+
-+#: ../cli.py:650
-+msgid "No Packages marked for Update"
-+msgstr "Для оновлення не позначено жодного пакунка"
-+
-+#: ../cli.py:664
-+#, python-format
-+msgid "%d packages marked for removal"
-+msgstr "%d пакунків позначено для вилучення"
-+
-+#: ../cli.py:667
-+msgid "No Packages marked for removal"
-+msgstr "Для вилучення не позначено жодного пакунка"
-+
-+#: ../cli.py:692
-+msgid "Package(s) to downgrade"
-+msgstr "Пакунки, версію яких слід знизити"
-+
-+#: ../cli.py:717
-+#, python-format
-+msgid " (from %s)"
-+msgstr " (з %s)"
-+
-+#: ../cli.py:719
-+#, python-format
-+msgid "Installed package %s%s%s%s not available."
-+msgstr "Встановлений пакунок %s%s%s%s недоступний."
-+
-+#: ../cli.py:726
-+msgid "Package(s) to reinstall"
-+msgstr "Пакунки для перевстановлення"
-+
-+#: ../cli.py:739
-+msgid "No Packages Provided"
-+msgstr "Не надано жодного пакунка"
-+
-+#: ../cli.py:818
-+#, python-format
-+msgid "Matched: %s"
-+msgstr "Відповідників: %s"
-+
-+#: ../cli.py:825
-+#, python-format
-+msgid "Warning: No matches found for: %s"
-+msgstr "Попередження: відповідників %s не знайдено"
-+
-+#: ../cli.py:828
-+msgid "No Matches found"
-+msgstr "Не знайдено відповідників"
-+
-+#: ../cli.py:868
-+#, python-format
-+msgid ""
-+"Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
-+" You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
-+msgstr ""
-+"Попередження: у версіях 3.0.x yum відповідність назв файлів встановлюється з "
-+"помилками.\n"
-+" Щоб знайти відповідники, вам слід скористатися «%s*/%s%s» і/або "
-+"«%s*bin/%s%s»."
-+
-+#: ../cli.py:884
-+#, python-format
-+msgid "No Package Found for %s"
-+msgstr "Пакунків з %s не знайдено"
-+
-+#: ../cli.py:896
-+msgid "Cleaning up Everything"
-+msgstr "Вилучення всього"
-+
-+#: ../cli.py:912
-+msgid "Cleaning up Headers"
-+msgstr "Вилучення заголовків"
-+
-+#: ../cli.py:915
-+msgid "Cleaning up Packages"
-+msgstr "Вилучення зайвих пакунків"
-+
-+#: ../cli.py:918
-+msgid "Cleaning up xml metadata"
-+msgstr "Вилучення метаданих xml"
-+
-+#: ../cli.py:921
-+msgid "Cleaning up database cache"
-+msgstr "Вилучення кешу бази даних"
-+
-+#: ../cli.py:924
-+msgid "Cleaning up expire-cache metadata"
-+msgstr "Вилучення метаданих застарілого кешу"
-+
-+#: ../cli.py:927
-+msgid "Cleaning up cached rpmdb data"
-+msgstr "Вилучення кешованих даних rpmdb"
-+
-+#: ../cli.py:930
-+msgid "Cleaning up plugins"
-+msgstr "Вилучення додатків"
-+
-+#: ../cli.py:955
-+msgid "Installed Groups:"
-+msgstr "Встановлені групи:"
-+
-+#: ../cli.py:967
-+msgid "Available Groups:"
-+msgstr "Наявні групи:"
-+
-+#: ../cli.py:977
-+msgid "Done"
-+msgstr "Виконано"
-+
-+#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
-+#, python-format
-+msgid "Warning: Group %s does not exist."
-+msgstr "Попередження: групи з назвою %s не існує."
-+
-+#: ../cli.py:1016
-+msgid "No packages in any requested group available to install or update"
-+msgstr "У жодній з вказаних груп немає пакунків для встановлення або оновлення"
-+
-+#: ../cli.py:1018
-+#, python-format
-+msgid "%d Package(s) to Install"
-+msgstr "%d пакунків для встановлення"
-+
-+#: ../cli.py:1028 ../yum/__init__.py:2800
-+#, python-format
-+msgid "No group named %s exists"
-+msgstr "Групи з назвою %s не існує"
-+
-+#: ../cli.py:1034
-+msgid "No packages to remove from groups"
-+msgstr "Пакунків для вилучення з груп не знайдено"
-+
-+#: ../cli.py:1036
-+#, python-format
-+msgid "%d Package(s) to remove"
-+msgstr "%d пакунків для вилучення"
-+
-+#: ../cli.py:1078
-+#, python-format
-+msgid "Package %s is already installed, skipping"
-+msgstr "Пакунок %s вже встановлено, пропускаємо"
-+
-+#: ../cli.py:1089
-+#, 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
-+#, python-format
-+msgid "No other %s installed, adding to list for potential install"
-+msgstr "Не встановлено інших %s, додаємо до списку потенційного встановлення"
-+
-+#: ../cli.py:1135
-+msgid "Plugin Options"
-+msgstr "Параметри додатка"
-+
-+#: ../cli.py:1143
-+#, python-format
-+msgid "Command line error: %s"
-+msgstr "Помилка виконання команди: %s"
-+
-+#: ../cli.py:1156
-+#, python-format
-+msgid ""
-+"\n"
-+"\n"
-+"%s: %s option requires an argument"
-+msgstr ""
-+"\n"
-+"\n"
-+"%s: для параметра %s потрібен аргумент"
-+
-+#: ../cli.py:1209
-+msgid "--color takes one of: auto, always, never"
-+msgstr "--color повинен мати один з аргументів: auto, always, never"
-+
-+#: ../cli.py:1319
-+msgid "show this help message and exit"
-+msgstr "показати це довідкове повідомлення і завершити роботу"
-+
-+#: ../cli.py:1323
-+msgid "be tolerant of errors"
-+msgstr "ігнорувати помилки"
-+
-+#: ../cli.py:1326
-+msgid "run entirely from system cache, don't update cache"
-+msgstr "запустити на основі системного кешу, не оновлювати кеш"
-+
-+#: ../cli.py:1329
-+msgid "config file location"
-+msgstr "розташування файла налаштувань"
-+
-+#: ../cli.py:1332
-+msgid "maximum command wait time"
-+msgstr "максимальний час очікування на завершення команди"
-+
-+#: ../cli.py:1334
-+msgid "debugging output level"
-+msgstr "рівень докладності діагностичних повідомлень"
-+
-+#: ../cli.py:1338
-+msgid "show duplicates, in repos, in list/search commands"
-+msgstr "показати дублікати у сховищах та командах побудови списку та пошуку"
-+
-+#: ../cli.py:1340
-+msgid "error output level"
-+msgstr "рівень докладності повідомлень про помилки"
-+
-+#: ../cli.py:1343
-+msgid "debugging output level for rpm"
-+msgstr "рівень докладності діагностичних повідомлень rpm"
-+
-+#: ../cli.py:1346
-+msgid "quiet operation"
-+msgstr "обробка без виведення повідомлень"
-+
-+#: ../cli.py:1348
-+msgid "verbose operation"
-+msgstr "докладна обробка команд"
-+
-+#: ../cli.py:1350
-+msgid "answer yes for all questions"
-+msgstr "відповісти «так» на всі питання"
-+
-+#: ../cli.py:1352
-+msgid "show Yum version and exit"
-+msgstr "показати версію Yum і завершити роботу"
-+
-+#: ../cli.py:1353
-+msgid "set install root"
-+msgstr "встановити кореневий каталог встановлення"
-+
-+#: ../cli.py:1357
-+msgid "enable one or more repositories (wildcards allowed)"
-+msgstr ""
-+"увімкнути одне або декілька сховищ (можна використовувати шаблони заміни)"
-+
-+#: ../cli.py:1361
-+msgid "disable one or more repositories (wildcards allowed)"
-+msgstr ""
-+"вимкнути одне або декілька сховищ (можна використовувати шаблони заміни)"
-+
-+#: ../cli.py:1364
-+msgid "exclude package(s) by name or glob"
-+msgstr "виключити пакунки за назвою або формальним виразом"
-+
-+#: ../cli.py:1366
-+msgid "disable exclude from main, for a repo or for everything"
-+msgstr "вимкнути виключення з main для сховища або на загальному рівні"
-+
-+#: ../cli.py:1369
-+msgid "enable obsoletes processing during updates"
-+msgstr "увімкнути обробку застарілих пакунків під час оновлень"
-+
-+#: ../cli.py:1371
-+msgid "disable Yum plugins"
-+msgstr "вимкнути додатки Yum"
-+
-+#: ../cli.py:1373
-+msgid "disable gpg signature checking"
-+msgstr "вимкнути перевірку підписів gpg"
-+
-+#: ../cli.py:1375
-+msgid "disable plugins by name"
-+msgstr "вимкнути додатки за назвою"
-+
-+#: ../cli.py:1378
-+msgid "enable plugins by name"
-+msgstr "увімкнути додатки за назвою"
-+
-+#: ../cli.py:1381
-+msgid "skip packages with depsolving problems"
-+msgstr "пропустити пакунки з помилками у розв’язанні залежностей"
-+
-+#: ../cli.py:1383
-+msgid "control whether color is used"
-+msgstr "визначає, чи слід використовувати розфарбовування"
-+
-+#: ../cli.py:1385
-+msgid "set value of $releasever in yum config and repo files"
-+msgstr ""
-+"встановити значення $releasever у налаштуванні yum config and repo files"
-+
-+#: ../output.py:305
-+msgid "Jan"
-+msgstr "січ"
-+
-+#: ../output.py:305
-+msgid "Feb"
-+msgstr "лют"
-+
-+#: ../output.py:305
-+msgid "Mar"
-+msgstr "бер"
-+
-+#: ../output.py:305
-+msgid "Apr"
-+msgstr "кві"
-+
-+#: ../output.py:305
-+msgid "May"
-+msgstr "тра"
-+
-+#: ../output.py:305
-+msgid "Jun"
-+msgstr "чер"
-+
-+#: ../output.py:306
-+msgid "Jul"
-+msgstr "лип"
-+
-+#: ../output.py:306
-+msgid "Aug"
-+msgstr "сер"
-+
-+#: ../output.py:306
-+msgid "Sep"
-+msgstr "вер"
-+
-+#: ../output.py:306
-+msgid "Oct"
-+msgstr "жов"
-+
-+#: ../output.py:306
-+msgid "Nov"
-+msgstr "лис"
-+
-+#: ../output.py:306
-+msgid "Dec"
-+msgstr "гру"
-+
-+#: ../output.py:316
-+msgid "Trying other mirror."
-+msgstr "Спроба використання іншого дзеркала."
-+
-+#: ../output.py:534
-+#, python-format
-+msgid "Name : %s%s%s"
-+msgstr "Назва : %s%s%s"
-+
-+#: ../output.py:535
-+#, python-format
-+msgid "Arch : %s"
-+msgstr "Архітектура: %s"
-+
-+#: ../output.py:537
-+#, python-format
-+msgid "Epoch : %s"
-+msgstr "Епоха : %s"
-+
-+#: ../output.py:538
-+#, python-format
-+msgid "Version : %s"
-+msgstr "Версія : %s"
-+
-+#: ../output.py:539
-+#, python-format
-+msgid "Release : %s"
-+msgstr "Випуск : %s"
-+
-+#: ../output.py:540
-+#, python-format
-+msgid "Size : %s"
-+msgstr "Розмір : %s"
-+
-+#: ../output.py:541
-+#, python-format
-+msgid "Repo : %s"
-+msgstr "Сховище : %s"
-+
-+#: ../output.py:543
-+#, python-format
-+msgid "From repo : %s"
-+msgstr "Зі сховища : %s"
-+
-+#: ../output.py:545
-+#, python-format
-+msgid "Committer : %s"
-+msgstr "Автор : %s"
-+
-+#: ../output.py:546
-+#, python-format
-+msgid "Committime : %s"
-+msgstr "Час внеску : %s"
-+
-+#: ../output.py:547
-+#, python-format
-+msgid "Buildtime : %s"
-+msgstr "Час збирання : %s"
-+
-+#: ../output.py:549
-+#, python-format
-+msgid "Installtime: %s"
-+msgstr "Встановлення: %s"
-+
-+#: ../output.py:550
-+msgid "Summary : "
-+msgstr "Резюме : "
-+
-+#: ../output.py:552
-+#, python-format
-+msgid "URL : %s"
-+msgstr "Адреса : %s"
-+
-+#: ../output.py:553
-+msgid "License : "
-+msgstr "Ліцензія : "
-+
-+#: ../output.py:554
-+msgid "Description: "
-+msgstr "Опис : "
-+
-+#: ../output.py:622
-+msgid "y"
-+msgstr "y"
-+
-+#: ../output.py:622
-+msgid "yes"
-+msgstr "так"
-+
-+#: ../output.py:623
-+msgid "n"
-+msgstr "n"
-+
-+#: ../output.py:623
-+msgid "no"
-+msgstr "ні"
-+
-+#: ../output.py:627
-+msgid "Is this ok [y/N]: "
-+msgstr "Виконати дію? [y/N]: "
-+
-+#: ../output.py:715
-+#, python-format
-+msgid ""
-+"\n"
-+"Group: %s"
-+msgstr ""
-+"\n"
-+"Група: %s"
-+
-+#: ../output.py:719
-+#, python-format
-+msgid " Group-Id: %s"
-+msgstr " Ід. групи: %s"
-+
-+#: ../output.py:724
-+#, python-format
-+msgid " Description: %s"
-+msgstr " Опис: %s"
-+
-+#: ../output.py:726
-+msgid " Mandatory Packages:"
-+msgstr " Обов’язкові пакунки:"
-+
-+#: ../output.py:727
-+msgid " Default Packages:"
-+msgstr " Типові пакунки:"
-+
-+#: ../output.py:728
-+msgid " Optional Packages:"
-+msgstr " Додаткові пакунки:"
-+
-+#: ../output.py:729
-+msgid " Conditional Packages:"
-+msgstr " Залежні пакунки:"
-+
-+#: ../output.py:749
-+#, python-format
-+msgid "package: %s"
-+msgstr "пакунок: %s"
-+
-+#: ../output.py:751
-+msgid " No dependencies for this package"
-+msgstr " Пакунок не залежить від інших пакунків"
-+
-+#: ../output.py:756
-+#, python-format
-+msgid " dependency: %s"
-+msgstr " залежність: %s"
-+
-+#: ../output.py:758
-+msgid " Unsatisfied dependency"
-+msgstr " Незадоволена залежність"
-+
-+#: ../output.py:830
-+#, python-format
-+msgid "Repo : %s"
-+msgstr "Сховище : %s"
-+
-+#: ../output.py:831
-+msgid "Matched from:"
-+msgstr "Відповідність:"
-+
-+#: ../output.py:840
-+msgid "Description : "
-+msgstr "Опис : "
-+
-+#: ../output.py:843
-+#, python-format
-+msgid "URL : %s"
-+msgstr "Адреса : %s"
-+
-+#: ../output.py:846
-+#, python-format
-+msgid "License : %s"
-+msgstr "Ліцензія : %s"
-+
-+#: ../output.py:849
-+#, python-format
-+msgid "Filename : %s"
-+msgstr "Назва файла : %s"
-+
-+#: ../output.py:853
-+msgid "Other : "
-+msgstr "Інше : "
-+
-+#: ../output.py:896
-+msgid "There was an error calculating total download size"
-+msgstr "Під час обчислення загального обсягу звантаження сталася помилка"
-+
-+#: ../output.py:901
-+#, python-format
-+msgid "Total size: %s"
-+msgstr "Загальний обсяг: %s"
-+
-+#: ../output.py:904
-+#, python-format
-+msgid "Total download size: %s"
-+msgstr "Загальний обсяг звантаження: %s"
-+
-+#: ../output.py:908
-+#, python-format
-+msgid "Installed size: %s"
-+msgstr "Розмір після встановлення: %s"
-+
-+#: ../output.py:949
-+msgid "Reinstalling"
-+msgstr "Перевстановлення"
-+
-+#: ../output.py:950
-+msgid "Downgrading"
-+msgstr "Зниження версії"
-+
-+#: ../output.py:951
-+msgid "Installing for dependencies"
-+msgstr "Встановлення для залежностей"
-+
-+#: ../output.py:952
-+msgid "Updating for dependencies"
-+msgstr "Оновлення для залежностей"
-+
-+#: ../output.py:953
-+msgid "Removing for dependencies"
-+msgstr "Вилучення для залежностей"
-+
-+#: ../output.py:960 ../output.py:1072
-+msgid "Skipped (dependency problems)"
-+msgstr "Пропущено (проблеми з залежностями)"
-+
-+#: ../output.py:983
-+msgid "Package"
-+msgstr "Пакунок"
-+
-+#: ../output.py:983
-+msgid "Arch"
-+msgstr "Архітектура"
-+
-+#: ../output.py:984
-+msgid "Version"
-+msgstr "Версія"
-+
-+#: ../output.py:984
-+msgid "Repository"
-+msgstr "Сховище"
-+
-+#: ../output.py:985
-+msgid "Size"
-+msgstr "Розмір"
-+
-+#: ../output.py:997
-+#, python-format
-+msgid " replacing %s%s%s.%s %s\n"
-+msgstr " заміна %s%s%s.%s %s\n"
-+
-+#: ../output.py:1006
-+#, python-format
-+msgid ""
-+"\n"
-+"Transaction Summary\n"
-+"%s\n"
-+msgstr ""
-+"\n"
-+"Резюме операції\n"
-+"%s\n"
-+
-+#: ../output.py:1013
-+#, python-format
-+msgid ""
-+"Install %5.5s Package(s)\n"
-+"Upgrade %5.5s Package(s)\n"
-+msgstr ""
-+"Встановлення %5.5s пакунків\n"
-+"Оновлення %5.5s пакунків\n"
-+
-+#: ../output.py:1022
-+#, 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"
-+
-+#: ../output.py:1066
-+msgid "Removed"
-+msgstr "Вилучено"
-+
-+#: ../output.py:1067
-+msgid "Dependency Removed"
-+msgstr "Вилучено залежності"
-+
-+#: ../output.py:1069
-+msgid "Dependency Installed"
-+msgstr "Встановлено залежності"
-+
-+#: ../output.py:1071
-+msgid "Dependency Updated"
-+msgstr "Оновлено залежності"
-+
-+#: ../output.py:1073
-+msgid "Replaced"
-+msgstr "Замінено"
-+
-+#: ../output.py:1074
-+msgid "Failed"
-+msgstr "Помилка"
-+
-+#. Delta between C-c's so we treat as exit
-+#: ../output.py:1140
-+msgid "two"
-+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.
-+#: ../output.py:1151
-+#, python-format
-+msgid ""
-+"\n"
-+" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s "
-+"seconds\n"
-+"to exit.\n"
-+msgstr ""
-+"\n"
-+" Поточне звантаження скасовано, %sперервіть роботу (ctrl-c) ще раз%s "
-+"протягом %s%s%s секунд,\n"
-+"щоб завершити операцію.\n"
-+
-+#: ../output.py:1162
-+msgid "user interrupt"
-+msgstr "перервано користувачем"
-+
-+#: ../output.py:1180
-+msgid "Total"
-+msgstr "Загалом"
-+
-+#: ../output.py:1202
-+msgid "I"
-+msgstr "I"
-+
-+#: ../output.py:1203
-+msgid "O"
-+msgstr "O"
-+
-+#: ../output.py:1204
-+msgid "E"
-+msgstr "E"
-+
-+#: ../output.py:1205
-+msgid "R"
-+msgstr "R"
-+
-+#: ../output.py:1206
-+msgid "D"
-+msgstr "D"
-+
-+#: ../output.py:1207
-+msgid "U"
-+msgstr "U"
-+
-+#: ../output.py:1217
-+msgid "<unset>"
-+msgstr "<не встановлено>"
-+
-+#: ../output.py:1218
-+msgid "System"
-+msgstr "Система"
-+
-+#: ../output.py:1254
-+msgid "Bad transaction IDs, or package(s), given"
-+msgstr "Вказано помилкові ідентифікатори операцій або пакунки"
-+
-+#: ../output.py:1266
-+msgid "ID"
-+msgstr "Ід."
-+
-+#: ../output.py:1267 ../output.py:1520
-+msgid "Login user"
-+msgstr "Користувач"
-+
-+#: ../output.py:1268
-+msgid "Date and time"
-+msgstr "Дата і час"
-+
-+#: ../output.py:1269 ../output.py:1522
-+msgid "Action(s)"
-+msgstr "Дії"
-+
-+#: ../output.py:1270 ../output.py:1523
-+msgid "Altered"
-+msgstr "Змінено"
-+
-+#: ../output.py:1310
-+msgid "No transaction ID given"
-+msgstr "Не вказано ідентифікатора операції"
-+
-+#: ../output.py:1336
-+msgid "Bad transaction ID given"
-+msgstr "Вказано помилковий ідентифікатор операції"
-+
-+#: ../output.py:1341
-+msgid "Not found given transaction ID"
-+msgstr "Не виявлено вказаного ідентифікатора операції"
-+
-+#: ../output.py:1349
-+msgid "Found more than one transaction ID!"
-+msgstr "Виявлено більше одного ідентифікатора операції!"
-+
-+#: ../output.py:1370
-+msgid "No transaction ID, or package, given"
-+msgstr "Не вказано ідентифікатора операції або назви пакунка"
-+
-+#: ../output.py:1396
-+msgid "Transaction ID :"
-+msgstr "Ід. операції :"
-+
-+#: ../output.py:1398
-+msgid "Begin time :"
-+msgstr "Час початку :"
-+
-+#: ../output.py:1401 ../output.py:1403
-+msgid "Begin rpmdb :"
-+msgstr "Початок rpmdb :"
-+
-+#: ../output.py:1417
-+#, python-format
-+msgid "(%s seconds)"
-+msgstr "(%s секунд)"
-+
-+#: ../output.py:1418
-+msgid "End time :"
-+msgstr "Час завершення :"
-+
-+#: ../output.py:1421 ../output.py:1423
-+msgid "End rpmdb :"
-+msgstr "Завершення rpmdb:"
-+
-+#: ../output.py:1424
-+msgid "User :"
-+msgstr "Користувач :"
-+
-+#: ../output.py:1426 ../output.py:1428 ../output.py:1430
-+msgid "Return-Code :"
-+msgstr "Повернутий код :"
-+
-+#: ../output.py:1426
-+msgid "Aborted"
-+msgstr "Перервано"
-+
-+#: ../output.py:1428
-+msgid "Failure:"
-+msgstr "Невдача:"
-+
-+#: ../output.py:1430
-+msgid "Success"
-+msgstr "Успіх"
-+
-+#: ../output.py:1431
-+msgid "Transaction performed with:"
-+msgstr "Результат виконання операції:"
-+
-+#: ../output.py:1444 ../output.py:1489
-+msgid "Downgraded"
-+msgstr "Знижено версію"
-+
-+#. multiple versions installed, both older and newer
-+#: ../output.py:1446
-+msgid "Weird"
-+msgstr "Дивно"
-+
-+#: ../output.py:1448
-+msgid "Packages Altered:"
-+msgstr "Змінено пакунків:"
-+
-+#: ../output.py:1451
-+msgid "Scriptlet output:"
-+msgstr "Виведено скриптом:"
-+
-+#: ../output.py:1457
-+msgid "Errors:"
-+msgstr "Помилки:"
-+
-+#: ../output.py:1481 ../output.py:1482
-+msgid "Install"
-+msgstr "Встановити"
-+
-+#: ../output.py:1483
-+msgid "Dep-Install"
-+msgstr "Встановлення з залежностями"
-+
-+#: ../output.py:1485
-+msgid "Obsoleting"
-+msgstr "Робить застарілим"
-+
-+#: ../output.py:1486
-+msgid "Erase"
-+msgstr "Стерти"
-+
-+#: ../output.py:1487
-+msgid "Reinstall"
-+msgstr "Перевстановлення"
-+
-+#: ../output.py:1488
-+msgid "Downgrade"
-+msgstr "Понизити"
-+
-+#: ../output.py:1490
-+msgid "Update"
-+msgstr "Оновити"
-+
-+#: ../output.py:1521
-+msgid "Time"
-+msgstr "Час"
-+
-+#: ../output.py:1547
-+msgid "Last day"
-+msgstr "Протягом дня"
-+
-+#: ../output.py:1548
-+msgid "Last week"
-+msgstr "Попереднього тижня"
-+
-+#: ../output.py:1549
-+msgid "Last 2 weeks"
-+msgstr "Попередні 2 тижні"
-+
-+#. US default :p
-+#: ../output.py:1550
-+msgid "Last 3 months"
-+msgstr "Попередні 3 місяці"
-+
-+#: ../output.py:1551
-+msgid "Last 6 months"
-+msgstr "Попередні 6 місяців"
-+
-+#: ../output.py:1552
-+msgid "Last year"
-+msgstr "Попередній рік"
-+
-+#: ../output.py:1553
-+msgid "Over a year ago"
-+msgstr "Понад рік тому"
-+
-+#: ../output.py:1585
-+msgid "installed"
-+msgstr "встановлення"
-+
-+#: ../output.py:1586
-+msgid "updated"
-+msgstr "оновлення"
-+
-+#: ../output.py:1587
-+msgid "obsoleted"
-+msgstr "застарілі"
-+
-+#: ../output.py:1588
-+msgid "erased"
-+msgstr "вилучення"
-+
-+#: ../output.py:1592
-+#, python-format
-+msgid "---> Package %s.%s %s:%s-%s set to be %s"
-+msgstr "---> Пакунок %s.%s %s:%s-%s позначено для %s"
-+
-+#: ../output.py:1599
-+msgid "--> Running transaction check"
-+msgstr "--> Виконання перевірки операції"
-+
-+#: ../output.py:1604
-+msgid "--> Restarting Dependency Resolution with new changes."
-+msgstr "--> Перезапускається визначення залежностей з урахуванням змін."
-+
-+#: ../output.py:1609
-+msgid "--> Finished Dependency Resolution"
-+msgstr "--> Визначення залежностей завершено"
-+
-+#: ../output.py:1614 ../output.py:1619
-+#, python-format
-+msgid "--> Processing Dependency: %s for package: %s"
-+msgstr "--> Обробка залежності: %s для пакунка: %s"
-+
-+#: ../output.py:1623
-+#, python-format
-+msgid "--> Unresolved Dependency: %s"
-+msgstr "--> Нерозв'язана залежність: %s"
-+
-+#: ../output.py:1634
-+#, python-format
-+msgid "Package: %s"
-+msgstr "Пакунок: %s"
-+
-+#: ../output.py:1636
-+#, python-format
-+msgid ""
-+"\n"
-+" Requires: %s"
-+msgstr ""
-+"\n"
-+" Потребує: %s"
-+
-+#: ../output.py:1649 ../output.py:1660
-+#, python-format
-+msgid ""
-+"\n"
-+" %s: %s (%s)"
-+msgstr ""
-+"\n"
-+" %s: %s (%s)"
-+
-+#: ../output.py:1657
-+msgid "Available"
-+msgstr "Наявні"
-+
-+#: ../output.py:1665 ../output.py:1670
-+#, python-format
-+msgid "--> Processing Conflict: %s conflicts %s"
-+msgstr "--> Обробка конфлікту: %s конфліктів %s"
-+
-+#: ../output.py:1674
-+msgid "--> Populating transaction set with selected packages. Please wait."
-+msgstr "--> Додавання вибраних пакунків до операції. Зачекайте, будь ласка."
-+
-+#: ../output.py:1678
-+#, python-format
-+msgid "---> Downloading header for %s to pack into transaction set."
-+msgstr "---> У список операцій звантажується заголовок пакунка %s."
-+
-+#: ../utils.py:93
-+msgid "Running"
-+msgstr "Виконання"
-+
-+#: ../utils.py:94
-+msgid "Sleeping"
-+msgstr "Сплю"
-+
-+#: ../utils.py:95
-+msgid "Uninterruptible"
-+msgstr "Безперервний"
-+
-+#: ../utils.py:96
-+msgid "Zombie"
-+msgstr "Зомбі"
-+
-+#: ../utils.py:97
-+msgid "Traced/Stopped"
-+msgstr "З трасуванням/зупинкою"
-+
-+#: ../utils.py:98 ../yumcommands.py:917
-+msgid "Unknown"
-+msgstr "Невідомо"
-+
-+#: ../utils.py:109
-+msgid " The other application is: PackageKit"
-+msgstr " Сторонньою програмою є: PackageKit"
-+
-+#: ../utils.py:111
-+#, python-format
-+msgid " The other application is: %s"
-+msgstr " Сторонньою програмою є: %s"
-+
-+#: ../utils.py:114
-+#, python-format
-+msgid " Memory : %5s RSS (%5sB VSZ)"
-+msgstr " Пм’ять : %5s RSS (%5sБ VSZ)"
-+
-+#: ../utils.py:119
-+#, python-format
-+msgid " Started: %s - %s ago"
-+msgstr " Почато: %s - %s тому"
-+
-+#: ../utils.py:121
-+#, 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
-+msgid ""
-+"\n"
-+"\n"
-+"Exiting on user cancel"
-+msgstr ""
-+"\n"
-+"\n"
-+"Завершення роботи на запит користувача"
-+
-+#: ../utils.py:241 ../yummain.py:48
-+msgid ""
-+"\n"
-+"\n"
-+"Exiting on Broken Pipe"
-+msgstr ""
-+"\n"
-+"\n"
-+"Завершення роботи через розрив зв’язку"
-+
-+#: ../utils.py:243 ../yummain.py:50
-+#, python-format
-+msgid ""
-+"\n"
-+"\n"
-+"%s"
-+msgstr ""
-+"\n"
-+"\n"
-+"%s"
-+
-+#: ../utils.py:282 ../yummain.py:211
-+msgid "Complete!"
-+msgstr "Завершено!"
-+
-+#: ../yumcommands.py:43
-+msgid "You need to be root to perform this command."
-+msgstr ""
-+"Для виконання цієї команди вам слід набути прав доступу адміністративного "
-+"користувача."
-+
-+#: ../yumcommands.py:50
-+msgid ""
-+"\n"
-+"You have enabled checking of packages via GPG keys. This is a good thing. \n"
-+"However, you do not have any GPG public keys installed. You need to "
-+"download\n"
-+"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"
-+"\n"
-+"\n"
-+"Alternatively you can specify the url to the key you would like to use\n"
-+"for a repository in the 'gpgkey' option in a repository section and yum \n"
-+"will install it for you.\n"
-+"\n"
-+"For more information contact your distribution or package provider.\n"
-+msgstr ""
-+"\n"
-+"Вами було увімкнено перевірку пакунків за допомогою ключів GPG. Це "
-+"правильний крок. \n"
-+"Але у вашій системі не встановлено жодного відкритого ключа GPG. Вам слід "
-+"звантажити\n"
-+"ключі до пакунків, які ви бажаєте встановити і встановити ці ключі.\n"
-+"Виконати встановлення можна за допомогою команди:\n"
-+" rpm --import public.gpg.key\n"
-+"\n"
-+"\n"
-+"Крім того, ви можете вказати адресу URL ключа, яким бажаєте скористатися\n"
-+"для сховища за допомогою параметра «gpgkey» у розділі налаштувань сховища, "
-+"yum \n"
-+"встановить потрібні ключі автоматично.\n"
-+"\n"
-+"Докладніші відомості може бути отримано з довідки до вашого дистрибутива або "
-+"від\n"
-+"постачальника пакунків.\n"
-+
-+#: ../yumcommands.py:70
-+#, python-format
-+msgid "Error: Need to pass a list of pkgs to %s"
-+msgstr "Помилка: %s слід передати список пакунків"
-+
-+#: ../yumcommands.py:76
-+msgid "Error: Need an item to match"
-+msgstr "Помилка: слід вказати ключ для встановлення відповідності"
-+
-+#: ../yumcommands.py:82
-+msgid "Error: Need a group or list of groups"
-+msgstr "Помилка: слід вказати групу або список груп"
-+
-+#: ../yumcommands.py:91
-+#, python-format
-+msgid "Error: clean requires an option: %s"
-+msgstr "Помилка: для виконання clean слід вказати %s"
-+
-+#: ../yumcommands.py:96
-+#, python-format
-+msgid "Error: invalid clean argument: %r"
-+msgstr "Помилка: некоректний аргумент clean: %r"
-+
-+#: ../yumcommands.py:109
-+msgid "No argument to shell"
-+msgstr "Не вказано аргумент shell"
-+
-+#: ../yumcommands.py:111
-+#, python-format
-+msgid "Filename passed to shell: %s"
-+msgstr "shell передано назву файла: %s"
-+
-+#: ../yumcommands.py:115
-+#, python-format
-+msgid "File %s given as argument to shell does not exist."
-+msgstr "Файла %s, переданого як аргумент параметра shell, не знайдено."
-+
-+#: ../yumcommands.py:121
-+msgid "Error: more than one file given as argument to shell."
-+msgstr "Помилка: shell передано як аргументи декілька файлів."
-+
-+#: ../yumcommands.py:170
-+msgid "PACKAGE..."
-+msgstr "ПАКУНОК…"
-+
-+#: ../yumcommands.py:173
-+msgid "Install a package or packages on your system"
-+msgstr "Встановлення пакунка або пакунків у вашій системі"
-+
-+#: ../yumcommands.py:181
-+msgid "Setting up Install Process"
-+msgstr "Налаштування процесу встановлення"
-+
-+#: ../yumcommands.py:192
-+msgid "[PACKAGE...]"
-+msgstr "[ПАКУНОК…]"
-+
-+#: ../yumcommands.py:195
-+msgid "Update a package or packages on your system"
-+msgstr "Оновлення пакунків вашої системи"
-+
-+#: ../yumcommands.py:202
-+msgid "Setting up Update Process"
-+msgstr "Налаштування процесу оновлення"
-+
-+#: ../yumcommands.py:244
-+msgid "Display details about a package or group of packages"
-+msgstr "Показати подробиці щодо пакунка або групи пакунків"
-+
-+#: ../yumcommands.py:293
-+msgid "Installed Packages"
-+msgstr "Встановлені пакунки"
-+
-+#: ../yumcommands.py:301
-+msgid "Available Packages"
-+msgstr "Доступних пакунків"
-+
-+#: ../yumcommands.py:305
-+msgid "Extra Packages"
-+msgstr "Зайвих пакунків"
-+
-+#: ../yumcommands.py:309
-+msgid "Updated Packages"
-+msgstr "Оновлених пакунків"
-+
-+#. This only happens in verbose mode
-+#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
-+msgid "Obsoleting Packages"
-+msgstr "Застарілих пакунків"
-+
-+#: ../yumcommands.py:326
-+msgid "Recently Added Packages"
-+msgstr "Останні додані пакунки"
-+
-+#: ../yumcommands.py:333
-+msgid "No matching Packages to list"
-+msgstr "У списку не виявлено відповідних пакунків"
-+
-+#: ../yumcommands.py:347
-+msgid "List a package or groups of packages"
-+msgstr "Список пакунків або груп пакунків"
-+
-+#: ../yumcommands.py:359
-+msgid "Remove a package or packages from your system"
-+msgstr "Вилучення пакунка або пакунків з вашої системі"
-+
-+#: ../yumcommands.py:366
-+msgid "Setting up Remove Process"
-+msgstr "Налаштування процесу вилучення"
-+
-+#: ../yumcommands.py:380
-+msgid "Setting up Group Process"
-+msgstr "Налаштування обробки груп"
-+
-+#: ../yumcommands.py:386
-+msgid "No Groups on which to run command"
-+msgstr "Не виявлено груп, над якими має бути виконано команду"
-+
-+#: ../yumcommands.py:399
-+msgid "List available package groups"
-+msgstr "Список можливих груп пакунків"
-+
-+#: ../yumcommands.py:416
-+msgid "Install the packages in a group on your system"
-+msgstr "Встановлення пакунків групи"
-+
-+#: ../yumcommands.py:438
-+msgid "Remove the packages in a group from your system"
-+msgstr "Вилучення пакунків групи"
-+
-+#: ../yumcommands.py:465
-+msgid "Display details about a package group"
-+msgstr "Показ подробиць щодо групи пакунків"
-+
-+#: ../yumcommands.py:489
-+msgid "Generate the metadata cache"
-+msgstr "Створення кешу метаданих"
-+
-+#: ../yumcommands.py:495
-+msgid "Making cache files for all metadata files."
-+msgstr "Створення файлів кешу для всіх файлів метаданих."
-+
-+#: ../yumcommands.py:496
-+msgid "This may take a while depending on the speed of this computer"
-+msgstr ""
-+"Процедура може тривати досить довго, тривалість залежить від потужності "
-+"комп’ютера."
-+
-+#: ../yumcommands.py:517
-+msgid "Metadata Cache Created"
-+msgstr "Створено кеш метаданих"
-+
-+#: ../yumcommands.py:531
-+msgid "Remove cached data"
-+msgstr "Вилучення кешованих даних"
-+
-+#: ../yumcommands.py:551
-+msgid "Find what package provides the given value"
-+msgstr "Пошук пакунка за вказаним ключем"
-+
-+#: ../yumcommands.py:571
-+msgid "Check for available package updates"
-+msgstr "Перевірка доступності оновлень пакунків"
-+
-+#: ../yumcommands.py:621
-+msgid "Search package details for the given string"
-+msgstr "Пошук подробиць щодо пакунка за вказаним рядком"
-+
-+#: ../yumcommands.py:627
-+msgid "Searching Packages: "
-+msgstr "Пошук пакунків: "
-+
-+#: ../yumcommands.py:644
-+msgid "Update packages taking obsoletes into account"
-+msgstr "Оновлення пакунків з врахуванням застарівання пакунків"
-+
-+#: ../yumcommands.py:652
-+msgid "Setting up Upgrade Process"
-+msgstr "Налаштування процесу оновлення"
-+
-+#: ../yumcommands.py:666
-+msgid "Install a local RPM"
-+msgstr "Встановлення локального пакунка RPM"
-+
-+#: ../yumcommands.py:674
-+msgid "Setting up Local Package Process"
-+msgstr "Налаштування обробки локального пакунка"
-+
-+#: ../yumcommands.py:693
-+msgid "Determine which package provides the given dependency"
-+msgstr "Визначення пакунка, що містить вказану залежність"
-+
-+#: ../yumcommands.py:696
-+msgid "Searching Packages for Dependency:"
-+msgstr "Пошук пакунків для задоволення залежності:"
-+
-+#: ../yumcommands.py:710
-+msgid "Run an interactive yum shell"
-+msgstr "Запуск інтерактивної оболонки yum"
-+
-+#: ../yumcommands.py:716
-+msgid "Setting up Yum Shell"
-+msgstr "Налаштування оболонки Yum"
-+
-+#: ../yumcommands.py:734
-+msgid "List a package's dependencies"
-+msgstr "Показ списку залежностей пакунків"
-+
-+#: ../yumcommands.py:740
-+msgid "Finding dependencies: "
-+msgstr "Пошук залежностей: "
-+
-+#: ../yumcommands.py:756
-+msgid "Display the configured software repositories"
-+msgstr "Показ списку увімкнених сховищ програмного забезпечення"
-+
-+#: ../yumcommands.py:822 ../yumcommands.py:823
-+msgid "enabled"
-+msgstr "увімкнено"
-+
-+#: ../yumcommands.py:849 ../yumcommands.py:850
-+msgid "disabled"
-+msgstr "вимкнено"
-+
-+#: ../yumcommands.py:866
-+msgid "Repo-id : "
-+msgstr "Ід. сховища : "
-+
-+#: ../yumcommands.py:867
-+msgid "Repo-name : "
-+msgstr "Назва сховища : "
-+
-+#: ../yumcommands.py:870
-+msgid "Repo-status : "
-+msgstr "Стан сховища : "
-+
-+#: ../yumcommands.py:873
-+msgid "Repo-revision: "
-+msgstr "Версія сховища: "
-+
-+#: ../yumcommands.py:877
-+msgid "Repo-tags : "
-+msgstr "Мітки сховища : "
-+
-+#: ../yumcommands.py:883
-+msgid "Repo-distro-tags: "
-+msgstr "Мітки дистрибутива сховища: "
-+
-+#: ../yumcommands.py:888
-+msgid "Repo-updated : "
-+msgstr "Оновлення сховища: "
-+
-+#: ../yumcommands.py:890
-+msgid "Repo-pkgs : "
-+msgstr "Пакунки сховища: "
-+
-+#: ../yumcommands.py:891
-+msgid "Repo-size : "
-+msgstr "Розмір сховища: "
-+
-+#: ../yumcommands.py:898
-+msgid "Repo-baseurl : "
-+msgstr "Адреса сховища: "
-+
-+#: ../yumcommands.py:906
-+msgid "Repo-metalink: "
-+msgstr "Метапосилання сховища: "
-+
-+#: ../yumcommands.py:910
-+msgid " Updated : "
-+msgstr " Оновлено : "
-+
-+#: ../yumcommands.py:913
-+msgid "Repo-mirrors : "
-+msgstr "Дзеркала сховищ: "
-+
-+#: ../yumcommands.py:923
-+#, python-format
-+msgid "Never (last: %s)"
-+msgstr "Ніколи (востаннє: %s)"
-+
-+#: ../yumcommands.py:925
-+#, python-format
-+msgid "Instant (last: %s)"
-+msgstr "Негайно (лишилося: %s)"
-+
-+#: ../yumcommands.py:928
-+#, python-format
-+msgid "%s second(s) (last: %s)"
-+msgstr "%s секунд (лишилося: %s)"
-+
-+#: ../yumcommands.py:930
-+msgid "Repo-expire : "
-+msgstr "Строк дії сховища: "
-+
-+#: ../yumcommands.py:933
-+msgid "Repo-exclude : "
-+msgstr "Виключення сховища: "
-+
-+#: ../yumcommands.py:937
-+msgid "Repo-include : "
-+msgstr "Включення сховища: "
-+
-+#: ../yumcommands.py:941
-+msgid "Repo-excluded: "
-+msgstr "Виключені сховища: "
-+
-+#. Work out the first (id) and last (enabled/disalbed/count),
-+#. then chop the middle (name)...
-+#: ../yumcommands.py:951 ../yumcommands.py:980
-+msgid "repo id"
-+msgstr "ід. сховища"
-+
-+#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
-+msgid "status"
-+msgstr "стан"
-+
-+#: ../yumcommands.py:981
-+msgid "repo name"
-+msgstr "назва сховища"
-+
-+#: ../yumcommands.py:1018
-+msgid "Display a helpful usage message"
-+msgstr "Показати корисну підказку щодо використання"
-+
-+#: ../yumcommands.py:1052
-+#, python-format
-+msgid "No help available for %s"
-+msgstr "Довідки щодо %s не виявлено"
-+
-+#: ../yumcommands.py:1057
-+msgid ""
-+"\n"
-+"\n"
-+"aliases: "
-+msgstr ""
-+"\n"
-+"\n"
-+"інші назви: "
-+
-+#: ../yumcommands.py:1059
-+msgid ""
-+"\n"
-+"\n"
-+"alias: "
-+msgstr ""
-+"\n"
-+"\n"
-+"інша назва: "
-+
-+#: ../yumcommands.py:1087
-+msgid "Setting up Reinstall Process"
-+msgstr "Налаштування процесу перевстановлення"
-+
-+#: ../yumcommands.py:1095
-+msgid "reinstall a package"
-+msgstr "перевстановлення пакунка"
-+
-+#: ../yumcommands.py:1113
-+msgid "Setting up Downgrade Process"
-+msgstr "Налаштування процесу зниження версії"
-+
-+#: ../yumcommands.py:1120
-+msgid "downgrade a package"
-+msgstr "зниження версії пакунка"
-+
-+#: ../yumcommands.py:1134
-+msgid "Display a version for the machine and/or available repos."
-+msgstr "Показ версії для вашої архітектури і/або списку доступних сховищ."
-+
-+#: ../yumcommands.py:1173
-+msgid " Yum version groups:"
-+msgstr " Групи версій Yum:"
-+
-+#: ../yumcommands.py:1183
-+msgid " Group :"
-+msgstr " Група :"
-+
-+#: ../yumcommands.py:1184
-+msgid " Packages:"
-+msgstr " Пакунки:"
-+
-+#: ../yumcommands.py:1213
-+msgid "Installed:"
-+msgstr "Встановлено:"
-+
-+#: ../yumcommands.py:1218
-+msgid "Group-Installed:"
-+msgstr "Встановлені групи:"
-+
-+#: ../yumcommands.py:1227
-+msgid "Available:"
-+msgstr "Доступні:"
-+
-+#: ../yumcommands.py:1233
-+msgid "Group-Available:"
-+msgstr "Доступні групи:"
-+
-+#: ../yumcommands.py:1272
-+msgid "Display, or use, the transaction history"
-+msgstr "Показ або використання журналу операцій"
-+
-+#: ../yumcommands.py:1300
-+#, python-format
-+msgid "Invalid history sub-command, use: %s."
-+msgstr "Некоректна підкоманда журналу, скористайтеся: %s."
-+
-+#: ../yumcommands.py:1345
-+msgid "Check for problems in the rpmdb"
-+msgstr "Пошук проблем у rpmdb"
-+
-+#: ../yummain.py:102
-+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 "Помилка: %s"
-+
-+#: ../yummain.py:140 ../yummain.py:182
-+#, python-format
-+msgid "Unknown Error(s): Exit Code: %d:"
-+msgstr "Невідомі помилки: код виходу: %d:"
-+
-+#. Depsolve stage
-+#: ../yummain.py:147
-+msgid "Resolving Dependencies"
-+msgstr "Розв’язання залежностей"
-+
-+#: ../yummain.py:173
-+msgid " You could try using --skip-broken to work around the problem"
-+msgstr " Щоб обійти проблему, спробуйте скористатися параметром --skip-broken"
-+
-+#: ../yummain.py:175 ../yummain.py:208
-+msgid " You could try running: rpm -Va --nofiles --nodigest"
-+msgstr " Спробуйте віддати команду: rpm -Va --nofiles --nodigest"
-+
-+#: ../yummain.py:188
-+msgid ""
-+"\n"
-+"Dependencies Resolved"
-+msgstr ""
-+"\n"
-+"Залежності розв’язано"
-+
-+#: ../yummain.py:265
-+msgid ""
-+"\n"
-+"\n"
-+"Exiting on user cancel."
-+msgstr ""
-+"\n"
-+"\n"
-+"Завершення роботи на запит користувача."
-+
-+#: ../yum/depsolve.py:82
-+msgid "doTsSetup() will go away in a future version of Yum.\n"
-+msgstr "doTsSetup() буде усунуто у майбутніх версіях Yum.\n"
-+
-+#: ../yum/depsolve.py:97
-+msgid "Setting up TransactionSets before config class is up"
-+msgstr "Налаштування наборів операцій до включення класу налаштувань"
-+
-+#: ../yum/depsolve.py:148
-+#, python-format
-+msgid "Invalid tsflag in config file: %s"
-+msgstr "Некоректне значення tsflag у файлі налаштувань: %s"
-+
-+#: ../yum/depsolve.py:159
-+#, python-format
-+msgid "Searching pkgSack for dep: %s"
-+msgstr "Пошук pkgSack для залежності: %s"
-+
-+#: ../yum/depsolve.py:175
-+#, python-format
-+msgid "Potential match for %s from %s"
-+msgstr "Потенційний відповідник %s з %s"
-+
-+#: ../yum/depsolve.py:183
-+#, python-format
-+msgid "Matched %s to require for %s"
-+msgstr "%s відповідає потрібному для %s"
-+
-+#: ../yum/depsolve.py:225
-+#, python-format
-+msgid "Member: %s"
-+msgstr "Частина: %s"
-+
-+#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
-+#, python-format
-+msgid "%s converted to install"
-+msgstr "%s перетворено для встановлення"
-+
-+#: ../yum/depsolve.py:246
-+#, python-format
-+msgid "Adding Package %s in mode %s"
-+msgstr "Додавання пакунка %s у режимі %s"
-+
-+#: ../yum/depsolve.py:256
-+#, python-format
-+msgid "Removing Package %s"
-+msgstr "Вилучення пакунка %s"
-+
-+#: ../yum/depsolve.py:278
-+#, python-format
-+msgid "%s requires: %s"
-+msgstr "%s потребує: %s"
-+
-+#: ../yum/depsolve.py:319
-+#, python-format
-+msgid "%s requires %s"
-+msgstr "%s потребує %s"
-+
-+#: ../yum/depsolve.py:346
-+msgid "Needed Require has already been looked up, cheating"
-+msgstr "Потрібний пакунок вже знайдено, обхідний маневр"
-+
-+#: ../yum/depsolve.py:356
-+#, python-format
-+msgid "Needed Require is not a package name. Looking up: %s"
-+msgstr "Потрібна залежність задана не яка назва пакунка. Шукаємо: %s"
-+
-+#: ../yum/depsolve.py:363
-+#, python-format
-+msgid "Potential Provider: %s"
-+msgstr "Можливе джерело залежності: %s"
-+
-+#: ../yum/depsolve.py:386
-+#, python-format
-+msgid "Mode is %s for provider of %s: %s"
-+msgstr "Режим %s для надання %s: %s"
-+
-+#: ../yum/depsolve.py:390
-+#, python-format
-+msgid "Mode for pkg providing %s: %s"
-+msgstr "Режим надання пакунка %s: %s"
-+
-+#: ../yum/depsolve.py:394
-+#, python-format
-+msgid "TSINFO: %s package requiring %s marked as erase"
-+msgstr "TSINFO: пакунок %s, потрібний для %s, позначено для вилучення"
-+
-+#: ../yum/depsolve.py:407
-+#, python-format
-+msgid "TSINFO: Obsoleting %s with %s to resolve dep."
-+msgstr ""
-+"TSINFO: %s стає застарілим після встановлення %s для розв’язання залежностей."
-+
-+#: ../yum/depsolve.py:410
-+#, python-format
-+msgid "TSINFO: Updating %s to resolve dep."
-+msgstr "TSINFO: оновлення %s для розв’язання залежностей."
-+
-+#: ../yum/depsolve.py:418
-+#, python-format
-+msgid "Cannot find an update path for dep for: %s"
-+msgstr "Не вдалося знайти шлях оновлення для залежності %s"
-+
-+#: ../yum/depsolve.py:449
-+#, python-format
-+msgid "Quick matched %s to require for %s"
-+msgstr "Встановлено швидку відповідність %s пакунку потрібному для пакунка %s"
-+
-+#. is it already installed?
-+#: ../yum/depsolve.py:491
-+#, python-format
-+msgid "%s is in providing packages but it is already installed, removing."
-+msgstr ""
-+"%s належить до списку супутніх пакунків, його вже встановлено, пропускаємо."
-+
-+#: ../yum/depsolve.py:507
-+#, python-format
-+msgid "Potential resolving package %s has newer instance in ts."
-+msgstr "Потенційний пакунок розв’язання %s має новішу версію у ts."
-+
-+#: ../yum/depsolve.py:518
-+#, python-format
-+msgid "Potential resolving package %s has newer instance installed."
-+msgstr "Встановлено новішу версію потенційного пакунка розв’язання %s."
-+
-+#: ../yum/depsolve.py:536
-+#, python-format
-+msgid "%s already in ts, skipping this one"
-+msgstr "%s вже перебуває у списку, пропускаємо його"
-+
-+#: ../yum/depsolve.py:578
-+#, python-format
-+msgid "TSINFO: Marking %s as update for %s"
-+msgstr "TSINFO: позначення %s як оновлення для %s"
-+
-+#: ../yum/depsolve.py:586
-+#, python-format
-+msgid "TSINFO: Marking %s as install for %s"
-+msgstr "TSINFO: позначення %s як такий, який слід встановити для %s"
-+
-+#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
-+msgid "Success - empty transaction"
-+msgstr "Успіх — порожня операція"
-+
-+#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
-+msgid "Restarting Loop"
-+msgstr "Перезапуск циклу"
-+
-+#: ../yum/depsolve.py:760
-+msgid "Dependency Process ending"
-+msgstr "Завершення процесу розв’язання залежностей"
-+
-+#: ../yum/depsolve.py:774
-+#, python-format
-+msgid "%s from %s has depsolving problems"
-+msgstr "У %s з %s виникли проблеми з розв’язанням залежностей"
-+
-+#: ../yum/depsolve.py:782
-+msgid "Success - deps resolved"
-+msgstr "Успіх — залежності розв’язано"
-+
-+#: ../yum/depsolve.py:796
-+#, python-format
-+msgid "Checking deps for %s"
-+msgstr "Перевірка залежностей для %s"
-+
-+#: ../yum/depsolve.py:874
-+#, python-format
-+msgid "looking for %s as a requirement of %s"
-+msgstr "пошук %s, потрібного для %s"
-+
-+#: ../yum/depsolve.py:1090
-+#, python-format
-+msgid "Running compare_providers() for %s"
-+msgstr "Виконання compare_providers() для %s"
-+
-+#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
-+#, python-format
-+msgid "better arch in po %s"
-+msgstr "краща архітектура у po %s"
-+
-+#: ../yum/depsolve.py:1218
-+#, python-format
-+msgid "%s obsoletes %s"
-+msgstr "%s робить застарілим %s"
-+
-+#: ../yum/depsolve.py:1230
-+#, python-format
-+msgid ""
-+"archdist compared %s to %s on %s\n"
-+" Winner: %s"
-+msgstr ""
-+"archdist порівняно %s з %s у %s\n"
-+" Кращий варіант: %s"
-+
-+#: ../yum/depsolve.py:1237
-+#, python-format
-+msgid "common sourcerpm %s and %s"
-+msgstr "загальний sourcerpm %s і %s"
-+
-+#: ../yum/depsolve.py:1241
-+#, python-format
-+msgid "base package %s is installed for %s"
-+msgstr "базовий пакунок %s встановлено для %s"
-+
-+#: ../yum/depsolve.py:1247
-+#, python-format
-+msgid "common prefix of %s between %s and %s"
-+msgstr "загальний префікс %s для %s і %s"
-+
-+#: ../yum/depsolve.py:1256
-+#, python-format
-+msgid "Best Order: %s"
-+msgstr "Найкращий порядок: %s"
-+
-+#: ../yum/__init__.py:192
-+msgid "doConfigSetup() will go away in a future version of Yum.\n"
-+msgstr "doConfigSetup() буде усунуто у майбутніх версіях Yum.\n"
-+
-+#: ../yum/__init__.py:424
-+#, python-format
-+msgid "Repository %r is missing name in configuration, using id"
-+msgstr ""
-+"Для сховища %r у налаштуваннях не вказано назви, використовуємо ідентифікатор"
-+
-+#: ../yum/__init__.py:462
-+msgid "plugins already initialised"
-+msgstr "додатки вже ініціалізовано"
-+
-+#: ../yum/__init__.py:469
-+msgid "doRpmDBSetup() will go away in a future version of Yum.\n"
-+msgstr "doRpmDBSetup() буде усунуто у наступних версіях Yum.\n"
-+
-+#: ../yum/__init__.py:480
-+msgid "Reading Local RPMDB"
-+msgstr "Читання локальної RPMDB"
-+
-+#: ../yum/__init__.py:504
-+msgid "doRepoSetup() will go away in a future version of Yum.\n"
-+msgstr "doRepoSetup() буде усунуто у майбутніх версіях Yum.\n"
-+
-+#: ../yum/__init__.py:524
-+msgid "doSackSetup() will go away in a future version of Yum.\n"
-+msgstr "doSackSetup() буде усунуто у майбутніх версіях Yum.\n"
-+
-+#: ../yum/__init__.py:554
-+msgid "Setting up Package Sacks"
-+msgstr "Налаштування наборів пакунків"
-+
-+#: ../yum/__init__.py:599
-+#, python-format
-+msgid "repo object for repo %s lacks a _resetSack method\n"
-+msgstr "Об’єкт сховища %s не має _resetSack method,\n"
-+
-+#: ../yum/__init__.py:600
-+msgid "therefore this repo cannot be reset.\n"
-+msgstr "тому параметри цього сховища не може бути відновлено до початкових.\n"
-+
-+#: ../yum/__init__.py:605
-+msgid "doUpdateSetup() will go away in a future version of Yum.\n"
-+msgstr "doUpdateSetup() буде усунуто у майбутніх версіях Yum.\n"
-+
-+#: ../yum/__init__.py:617
-+msgid "Building updates object"
-+msgstr "Побудова об’єкта оновлення"
-+
-+#: ../yum/__init__.py:652
-+msgid "doGroupSetup() will go away in a future version of Yum.\n"
-+msgstr "doGroupSetup() буде усунуто у майбутніх версіях Yum.\n"
-+
-+#: ../yum/__init__.py:677
-+msgid "Getting group metadata"
-+msgstr "Отримання метаданих групи"
-+
-+#: ../yum/__init__.py:703
-+#, python-format
-+msgid "Adding group file from repository: %s"
-+msgstr "Додавання файла групи зі сховища: %s"
-+
-+#: ../yum/__init__.py:712
-+#, python-format
-+msgid "Failed to add groups file for repository: %s - %s"
-+msgstr "Не вдалося додати файл груп зі сховища: %s — %s"
-+
-+#: ../yum/__init__.py:718
-+msgid "No Groups Available in any repository"
-+msgstr "У жодному сховищі немає доступних груп"
-+
-+#: ../yum/__init__.py:730
-+msgid "Getting pkgtags metadata"
-+msgstr "Отримання метаданих міток пакунків"
-+
-+#: ../yum/__init__.py:740
-+#, python-format
-+msgid "Adding tags from repository: %s"
-+msgstr "Додавання міток зі сховища: %s"
-+
-+#: ../yum/__init__.py:749
-+#, python-format
-+msgid "Failed to add Pkg Tags for repository: %s - %s"
-+msgstr "Не вдалося додати мітки пакунків для сховища: %s — %s"
-+
-+#: ../yum/__init__.py:827
-+msgid "Importing additional filelist information"
-+msgstr "Імпортування додаткових відомостей списку файлів"
-+
-+#: ../yum/__init__.py:841
-+#, python-format
-+msgid "The program %s%s%s is found in the yum-utils package."
-+msgstr "У пакунку yum-utils виявлено програму %s%s%s."
-+
-+#: ../yum/__init__.py:849
-+msgid ""
-+"There are unfinished transactions remaining. You might consider running yum-"
-+"complete-transaction first to finish them."
-+msgstr ""
-+"Залишилися незавершені операції. Для їх завершення вам слід спочатку "
-+"запустити yum-complete-transaction."
-+
-+#. Kind of hacky
-+#: ../yum/__init__.py:922
-+#, python-format
-+msgid "Skip-broken round %i"
-+msgstr "Цикл пропуску пошкоджених %i"
-+
-+#: ../yum/__init__.py:975
-+#, python-format
-+msgid "Skip-broken took %i rounds "
-+msgstr "На усування пропущених і пошкоджених пакунків витрачено %i циклів "
-+
-+#: ../yum/__init__.py:976
-+msgid ""
-+"\n"
-+"Packages skipped because of dependency problems:"
-+msgstr ""
-+"\n"
-+"Пакунки, пропущені через проблеми з залежностями:"
-+
-+#: ../yum/__init__.py:980
-+#, python-format
-+msgid " %s from %s"
-+msgstr " %s з %s"
-+
-+#: ../yum/__init__.py:1121
-+msgid "Warning: RPMDB altered outside of yum."
-+msgstr "Попередження: RPMDB змінено поза межами yum."
-+
-+#: ../yum/__init__.py:1126
-+msgid "missing requires"
-+msgstr "не має потрібних"
-+
-+#: ../yum/__init__.py:1127
-+msgid "installed conflict"
-+msgstr "конфлікт встановлення"
-+
-+#: ../yum/__init__.py:1180
-+msgid ""
-+"Warning: scriptlet or other non-fatal errors occurred during transaction."
-+msgstr ""
-+"Попередження: під час виконання операції сталися помилки виконання скриптів "
-+"та інші некритичні помилки."
-+
-+#: ../yum/__init__.py:1198
-+#, python-format
-+msgid "Failed to remove transaction file %s"
-+msgstr "Не вдалося вилучити файл операції %s"
-+
-+#. maybe a file log here, too
-+#. but raising an exception is not going to do any good
-+#: ../yum/__init__.py:1227
-+#, python-format
-+msgid "%s was supposed to be installed but is not!"
-+msgstr "%s мало бути встановлено, але цю дію не було виконано!"
-+
-+#. maybe a file log here, too
-+#. but raising an exception is not going to do any good
-+#: ../yum/__init__.py:1266
-+#, python-format
-+msgid "%s was supposed to be removed but is not!"
-+msgstr "%s мало бути вилучено, але цього не сталося!"
-+
-+#. Whoa. What the heck happened?
-+#: ../yum/__init__.py:1386
-+#, python-format
-+msgid "Unable to check if PID %s is active"
-+msgstr "Не вдалося перевірити, чи є активним PID %s"
-+
-+#. Another copy seems to be running.
-+#: ../yum/__init__.py:1390
-+#, python-format
-+msgid "Existing lock %s: another copy is running as pid %s."
-+msgstr "Блокування %s: запущено іншу копію з PID %s."
-+
-+#. Whoa. What the heck happened?
-+#: ../yum/__init__.py:1425
-+#, python-format
-+msgid "Could not create lock at %s: %s "
-+msgstr "Не вдалося створити блокування %s: %s "
-+
-+#: ../yum/__init__.py:1470
-+msgid ""
-+"Package does not match intended download. Suggestion: run yum clean metadata"
-+msgstr ""
-+"Пакунок не відповідає тому, який програма має намір звантажити. Пропозиція: "
-+"віддайте команду yum clean metadata"
-+
-+#: ../yum/__init__.py:1486
-+msgid "Could not perform checksum"
-+msgstr "Не вдалося перевірити контрольну суму"
-+
-+#: ../yum/__init__.py:1489
-+msgid "Package does not match checksum"
-+msgstr "Контрольна сума пакунка не збігається з еталонною"
-+
-+#: ../yum/__init__.py:1531
-+#, python-format
-+msgid "package fails checksum but caching is enabled for %s"
-+msgstr "контрольна сума пакунка не збігається, кешування для %s увімкнено"
-+
-+#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
-+#, python-format
-+msgid "using local copy of %s"
-+msgstr "використано локальну копію %s"
-+
-+#: ../yum/__init__.py:1575
-+#, python-format
-+msgid ""
-+"Insufficient space in download directory %s\n"
-+" * free %s\n"
-+" * needed %s"
-+msgstr ""
-+"Недостатньо місця у каталозі для звантажень %s\n"
-+" * вільно %s\n"
-+" * потрібно %s"
-+
-+#: ../yum/__init__.py:1624
-+msgid "Header is not complete."
-+msgstr "Заголовок не завершено."
-+
-+#: ../yum/__init__.py:1661
-+#, python-format
-+msgid ""
-+"Header not in local cache and caching-only mode enabled. Cannot download %s"
-+msgstr ""
-+"Заголовка немає у локальному кеші, увімкнено режим «лише кешування». Не "
-+"вдалося звантажити %s"
-+
-+#: ../yum/__init__.py:1716
-+#, python-format
-+msgid "Public key for %s is not installed"
-+msgstr "Відкритий ключ для %s не встановлено"
-+
-+#: ../yum/__init__.py:1720
-+#, python-format
-+msgid "Problem opening package %s"
-+msgstr "Проблеми з відкриттям пакунка %s"
-+
-+#: ../yum/__init__.py:1728
-+#, python-format
-+msgid "Public key for %s is not trusted"
-+msgstr "Відкритий ключ %s не є надійним"
-+
-+#: ../yum/__init__.py:1732
-+#, python-format
-+msgid "Package %s is not signed"
-+msgstr "Пакунок %s не підписано"
-+
-+#: ../yum/__init__.py:1770
-+#, python-format
-+msgid "Cannot remove %s"
-+msgstr "Не вдалося вилучити %s"
-+
-+#: ../yum/__init__.py:1774
-+#, python-format
-+msgid "%s removed"
-+msgstr "%s вилучено"
-+
-+#: ../yum/__init__.py:1820
-+#, python-format
-+msgid "Cannot remove %s file %s"
-+msgstr "Не вдалося вилучити файл %s, %s"
-+
-+#: ../yum/__init__.py:1824
-+#, python-format
-+msgid "%s file %s removed"
-+msgstr "Файл %s, %s, вилучено"
-+
-+#: ../yum/__init__.py:1826
-+#, python-format
-+msgid "%d %s files removed"
-+msgstr "Вилучено %d файлів %s"
-+
-+#: ../yum/__init__.py:1895
-+#, python-format
-+msgid "More than one identical match in sack for %s"
-+msgstr "У наборі для %s знайдено декілька ідентичних відповідників"
-+
-+#: ../yum/__init__.py:1901
-+#, python-format
-+msgid "Nothing matches %s.%s %s:%s-%s from update"
-+msgstr "Немає відповідників %s.%s %s:%s-%s з оновлення"
-+
-+#: ../yum/__init__.py:2180
-+msgid ""
-+"searchPackages() will go away in a future version of "
-+"Yum. Use searchGenerator() instead. \n"
-+msgstr ""
-+"searchPackages() буде усунуто у майбутніх версіях Yum. "
-+"Використовуйте краще searchGenerator(). \n"
-+
-+#: ../yum/__init__.py:2219
-+#, python-format
-+msgid "Searching %d packages"
-+msgstr "Пошук %d пакунків"
-+
-+#: ../yum/__init__.py:2223
-+#, python-format
-+msgid "searching package %s"
-+msgstr "пошук пакунка %s"
-+
-+#: ../yum/__init__.py:2235
-+msgid "searching in file entries"
-+msgstr "пошук серед файлів"
-+
-+#: ../yum/__init__.py:2242
-+msgid "searching in provides entries"
-+msgstr "пошук у супутніх записах"
-+
-+#: ../yum/__init__.py:2275
-+#, python-format
-+msgid "Provides-match: %s"
-+msgstr "Відповідність встановленому: %s"
-+
-+#: ../yum/__init__.py:2324
-+msgid "No group data available for configured repositories"
-+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
-+#: ../yum/__init__.py:2814
-+#, python-format
-+msgid "No Group named %s exists"
-+msgstr "Групи з назвою %s не існує"
-+
-+#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
-+#, python-format
-+msgid "package %s was not marked in group %s"
-+msgstr "пакунок %s було позначено у групі %s"
-+
-+#: ../yum/__init__.py:2433
-+#, python-format
-+msgid "Adding package %s from group %s"
-+msgstr "Додавання пакунка %s з групи %s"
-+
-+#: ../yum/__init__.py:2437
-+#, python-format
-+msgid "No package named %s available to be installed"
-+msgstr "Не вдалося знайти пакунок з назвою %s для встановлення"
-+
-+#: ../yum/__init__.py:2539
-+#, python-format
-+msgid "Package tuple %s could not be found in packagesack"
-+msgstr "У наборі пакунків не вдалося знайти кортеж пакунків %s"
-+
-+#: ../yum/__init__.py:2558
-+#, python-format
-+msgid "Package tuple %s could not be found in rpmdb"
-+msgstr "У базі даних RPM не вдалося знайти кортеж пакунків %s"
-+
-+#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
-+msgid "Invalid version flag"
-+msgstr "Некоректний прапорець версії"
-+
-+#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
-+#, python-format
-+msgid "No Package found for %s"
-+msgstr "Пакунків з %s не знайдено"
-+
-+#: ../yum/__init__.py:2855
-+msgid "Package Object was not a package object instance"
-+msgstr "Об’єкт пакунка не був екземпляром об’єкта пакунка"
-+
-+#: ../yum/__init__.py:2859
-+msgid "Nothing specified to install"
-+msgstr "Список встановлення порожній"
-+
-+#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
-+#, python-format
-+msgid "Checking for virtual provide or file-provide for %s"
-+msgstr "Пошук віртуальних супутніх пакунків або файлів для %s"
-+
-+#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
-+#: ../yum/__init__.py:3658
-+#, python-format
-+msgid "No Match for argument: %s"
-+msgstr "Відповідника параметра не знайдено: %s"
-+
-+#: ../yum/__init__.py:2957
-+#, python-format
-+msgid "Package %s installed and not available"
-+msgstr "Пакунок %s вже встановлено, його не можна позначити"
-+
-+#: ../yum/__init__.py:2960
-+msgid "No package(s) available to install"
-+msgstr "Немає доступних для встановлення пакунків"
-+
-+#: ../yum/__init__.py:2972
-+#, python-format
-+msgid "Package: %s - already in transaction set"
-+msgstr "Пакунок: %s — вже у наборі операцій"
-+
-+#: ../yum/__init__.py:2998
-+#, python-format
-+msgid "Package %s is obsoleted by %s which is already installed"
-+msgstr "Пакунок %s став застарілим після встановлення %s"
-+
-+#: ../yum/__init__.py:3001
-+#, python-format
-+msgid "Package %s is obsoleted by %s, trying to install %s instead"
-+msgstr ""
-+"Пакунок %s став застарілим після встановлення %s, спробуємо встановити "
-+"замість нього %s"
-+
-+#: ../yum/__init__.py:3009
-+#, python-format
-+msgid "Package %s already installed and latest version"
-+msgstr "Пакунок %s вже встановлено, його версія є найсвіжішою"
-+
-+#: ../yum/__init__.py:3023
-+#, python-format
-+msgid "Package matching %s already installed. Checking for update."
-+msgstr "Відповідник пакунка %s вже встановлено. Перевірка існування оновлень."
-+
-+#. update everything (the easy case)
-+#: ../yum/__init__.py:3126
-+msgid "Updating Everything"
-+msgstr "Повне оновлення"
-+
-+#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
-+#: ../yum/__init__.py:3315
-+#, python-format
-+msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
-+msgstr "Неоновлюваний пакунок, який вже застарів: %s.%s %s:%s-%s"
-+
-+#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
-+#, python-format
-+msgid "%s"
-+msgstr "%s"
-+
-+#: ../yum/__init__.py:3253
-+#, python-format
-+msgid "Package is already obsoleted: %s.%s %s:%s-%s"
-+msgstr "Пакунок вже застарілий: %s.%s %s:%s-%s"
-+
-+#: ../yum/__init__.py:3284
-+#, python-format
-+msgid "Not Updating Package that is obsoleted: %s"
-+msgstr "Неоновлюваний пакунок, який застарів: %s"
-+
-+#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
-+#, python-format
-+msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
-+msgstr "Неоновлюваний пакунок, який було оновлено раніше: %s.%s %s:%s-%s"
-+
-+#: ../yum/__init__.py:3378
-+msgid "No package matched to remove"
-+msgstr "Відповідного пакунка для вилучення не знайдено"
-+
-+#: ../yum/__init__.py:3412
-+#, python-format
-+msgid "Cannot open: %s. Skipping."
-+msgstr "Не вдалося відкрити: %s. Пропускаємо."
-+
-+#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
-+#, python-format
-+msgid "Examining %s: %s"
-+msgstr "Перевірка %s: %s"
-+
-+#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
-+#, python-format
-+msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
-+msgstr "Не вдалося додати пакунок %s до операції. Несумісна архітектура: %s"
-+
-+#: ../yum/__init__.py:3431
-+#, python-format
-+msgid ""
-+"Package %s not installed, cannot update it. Run yum install to install it "
-+"instead."
-+msgstr ""
-+"Пакунок %s не встановлено, не вдалося оновити його. Віддайте команду yum "
-+"install, щоб встановити цей пакунок."
-+
-+#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
-+#, python-format
-+msgid "Excluding %s"
-+msgstr "Виключення %s"
-+
-+#: ../yum/__init__.py:3465
-+#, python-format
-+msgid "Marking %s to be installed"
-+msgstr "Позначення %s для встановлення"
-+
-+#: ../yum/__init__.py:3471
-+#, python-format
-+msgid "Marking %s as an update to %s"
-+msgstr "Позначення %s як оновлення %s"
-+
-+#: ../yum/__init__.py:3478
-+#, python-format
-+msgid "%s: does not update installed package."
-+msgstr "%s: не оновлює встановлений пакунок."
-+
-+#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
-+#, python-format
-+msgid "Cannot open file: %s. Skipping."
-+msgstr "Не вдалося відкрити файл %s. Пропускаємо."
-+
-+#: ../yum/__init__.py:3541
-+msgid "Problem in reinstall: no package matched to remove"
-+msgstr "Проблема з перевстановленням: не виявлено пакунків для вилучення"
-+
-+#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
-+#, python-format
-+msgid "Package %s is allowed multiple installs, skipping"
-+msgstr ""
-+"Пакунок %s можна встановлювати паралельно з іншими версіями, пропускаємо"
-+
-+#: ../yum/__init__.py:3575
-+#, python-format
-+msgid "Problem in reinstall: no package %s matched to install"
-+msgstr ""
-+"Проблема з перевстановленням: не виявлено відповідного пакунка %s для "
-+"встановлення"
-+
-+#: ../yum/__init__.py:3678
-+msgid "No package(s) available to downgrade"
-+msgstr "Немає доступних для зниження версії пакунків"
-+
-+#: ../yum/__init__.py:3731
-+#, python-format
-+msgid "No Match for available package: %s"
-+msgstr "Немає відповідників для доступного пакунка: %s"
-+
-+#: ../yum/__init__.py:3738
-+#, python-format
-+msgid "Only Upgrade available on package: %s"
-+msgstr "Для пакунка доступне лише оновлення: %s"
-+
-+#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
-+#, python-format
-+msgid "Failed to downgrade: %s"
-+msgstr "Не вдалося знизити версію: %s"
-+
-+#: ../yum/__init__.py:3877
-+#, python-format
-+msgid "Retrieving GPG key from %s"
-+msgstr "Отримання ключа GPG з %s"
-+
-+#: ../yum/__init__.py:3897
-+msgid "GPG key retrieval failed: "
-+msgstr "Невдала спроба отримання ключа GPG: "
-+
-+#: ../yum/__init__.py:3903
-+#, python-format
-+msgid "Invalid GPG Key from %s: %s"
-+msgstr "Некоректний ключ GPG з %s: %s"
-+
-+#: ../yum/__init__.py:3912
-+#, python-format
-+msgid "GPG key parsing failed: key does not have value %s"
-+msgstr "Помилка обробник ключа GPG: у ключі немає значення %s"
-+
-+#: ../yum/__init__.py:3944
-+#, python-format
-+msgid "GPG key at %s (0x%s) is already installed"
-+msgstr "Ключ GPG у %s (0x%s) вже встановлено"
-+
-+#. Try installing/updating GPG key
-+#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
-+#, python-format
-+msgid "Importing GPG key 0x%s \"%s\" from %s"
-+msgstr "Імпортування ключа GPG 0x%s «%s» з %s"
-+
-+#: ../yum/__init__.py:3966
-+msgid "Not installing key"
-+msgstr "Ключ не встановлюється"
-+
-+#: ../yum/__init__.py:3972
-+#, python-format
-+msgid "Key import failed (code %d)"
-+msgstr "Помилка імпортування ключа (код %d)"
-+
-+#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
-+msgid "Key imported successfully"
-+msgstr "Ключ успішно імпортовано"
-+
-+#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
-+#, python-format
-+msgid ""
-+"The GPG keys listed for the \"%s\" repository are already installed but they "
-+"are not correct for this package.\n"
-+"Check that the correct key URLs are configured for this repository."
-+msgstr ""
-+"Ключі GPG зі списку сховища «%s» вже встановлено, але вони є некоректними "
-+"для цього пакунка.\n"
-+"Перевірте, чи правильно вказано адреси URL для цього сховища."
-+
-+#: ../yum/__init__.py:3987
-+msgid "Import of key(s) didn't help, wrong key(s)?"
-+msgstr "Імпортування ключів не допомогло, помилкові ключі?"
-+
-+#: ../yum/__init__.py:4006
-+#, python-format
-+msgid "GPG key at %s (0x%s) is already imported"
-+msgstr "Ключ GPG у %s (0x%s) вже імпортовано"
-+
-+#: ../yum/__init__.py:4026
-+#, python-format
-+msgid "Not installing key for repo %s"
-+msgstr "Ключ сховища %s не встановлюється"
-+
-+#: ../yum/__init__.py:4031
-+msgid "Key import failed"
-+msgstr "Помилка імпортування ключа"
-+
-+#: ../yum/__init__.py:4157
-+msgid "Unable to find a suitable mirror."
-+msgstr "Не вдалося знайти відповідного дзеркала."
-+
-+#: ../yum/__init__.py:4159
-+msgid "Errors were encountered while downloading packages."
-+msgstr "Під час спроби звантаження пакунків сталися помилки."
-+
-+#: ../yum/__init__.py:4209
-+#, python-format
-+msgid "Please report this error at %s"
-+msgstr "Повідомте про цю помилку за адресою %s"
-+
-+#: ../yum/__init__.py:4233
-+msgid "Test Transaction Errors: "
-+msgstr "Помилки під час тестування: "
-+
-+#: ../yum/__init__.py:4334
-+#, python-format
-+msgid "Could not set cachedir: %s"
-+msgstr "Не вдалося визначити теку кешування: %s"
-+
-+#. Mostly copied from YumOutput._outKeyValFill()
-+#: ../yum/plugins.py:202
-+msgid "Loaded plugins: "
-+msgstr "Завантажені додатки: "
-+
-+#: ../yum/plugins.py:216 ../yum/plugins.py:222
-+#, python-format
-+msgid "No plugin match for: %s"
-+msgstr "Не виявлено відповідника додатка %s"
-+
-+#: ../yum/plugins.py:252
-+#, python-format
-+msgid "Not loading \"%s\" plugin, as it is disabled"
-+msgstr "Додаток «%s» не завантажується, оскільки його вимкнено"
-+
-+#. Give full backtrace:
-+#: ../yum/plugins.py:264
-+#, python-format
-+msgid "Plugin \"%s\" can't be imported"
-+msgstr "Додаток «%s» не можна імпортувати"
-+
-+#: ../yum/plugins.py:271
-+#, python-format
-+msgid "Plugin \"%s\" doesn't specify required API version"
-+msgstr "Додаток «%s» не визначає потрібної версії API"
-+
-+#: ../yum/plugins.py:276
-+#, python-format
-+msgid "Plugin \"%s\" requires API %s. Supported API is %s."
-+msgstr "Для додатка «%s» потрібна версія API %s. Поточна версія API — %s."
-+
-+#: ../yum/plugins.py:309
-+#, python-format
-+msgid "Loading \"%s\" plugin"
-+msgstr "Завантаження додатка «%s»"
-+
-+#: ../yum/plugins.py:316
-+#, python-format
-+msgid ""
-+"Two or more plugins with the name \"%s\" exist in the plugin search path"
-+msgstr "За адресою пошуку додатків виявлено декілька додатків з назвою «%s»"
-+
-+#: ../yum/plugins.py:336
-+#, python-format
-+msgid "Configuration file %s not found"
-+msgstr "Файл налаштувань %s не знайдено"
-+
-+#. for
-+#. Configuration files for the plugin not found
-+#: ../yum/plugins.py:339
-+#, python-format
-+msgid "Unable to find configuration file for plugin %s"
-+msgstr "Не вдалося знайти файл налаштувань для додатка %s"
-+
-+#: ../yum/plugins.py:501
-+msgid "registration of commands not supported"
-+msgstr "підтримки реєстрації команд не передбачено"
-+
-+#: ../yum/rpmsack.py:102
-+msgid "has missing requires of"
-+msgstr "не має потрібних залежностей"
-+
-+#: ../yum/rpmsack.py:105
-+msgid "has installed conflicts"
-+msgstr "конфліктує зі встановленими пакунками"
-+
-+#: ../yum/rpmsack.py:114
-+#, python-format
-+msgid "%s is a duplicate with %s"
-+msgstr "%s є дублікатом з %s"
-+
-+#: ../yum/rpmtrans.py:79
-+msgid "Repackaging"
-+msgstr "Перепакування"
-+
-+#: ../rpmUtils/oldUtils.py:33
-+#, python-format
-+msgid "Header cannot be opened or does not match %s, %s."
-+msgstr "Не вдалося відкрити заголовок або не він не відповідає %s, %s."
-+
-+#: ../rpmUtils/oldUtils.py:53
-+#, python-format
-+msgid "RPM %s fails md5 check"
-+msgstr "RPM %s не пройшов перевірки на md5"
-+
-+#: ../rpmUtils/oldUtils.py:151
-+msgid "Could not open RPM database for reading. Perhaps it is already in use?"
-+msgstr ""
-+"Не вдалося відкрити базу даних RPM для читання. Можливо, цю базу вже "
-+"використовує інша програма?"
-+
-+#: ../rpmUtils/oldUtils.py:183
-+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
-+#, python-format
-+msgid "Damaged Header %s"
-+msgstr "Пошкоджений заголовок %s"
-+
-+#: ../rpmUtils/oldUtils.py:281
-+#, python-format
-+msgid "Error opening rpm %s - error %s"
-+msgstr "Помилка під час відкриття rpm %s — помилка %s"
-+
-+
-diff --git a/rpmUtils/arch.py b/rpmUtils/arch.py
-index b334750..5512ea6 100644
---- a/rpmUtils/arch.py
-+++ b/rpmUtils/arch.py
-@@ -202,15 +202,19 @@ def getArchList(thisarch=None):
- archlist.append('noarch')
- return archlist
-
--
-+def _try_read_cpuinfo():
-+ """ Try to read /proc/cpuinfo ... if we can't ignore errors (ie. proc not
-+ mounted). """
-+ try:
-+ lines = open("/proc/cpuinfo", "r").readlines()
-+ return lines
-+ except:
-+ return []
-
- def getCanonX86Arch(arch):
- #
- if arch == "i586":
-- f = open("/proc/cpuinfo", "r")
-- lines = f.readlines()
-- f.close()
-- for line in lines:
-+ for line in _try_read_cpuinfo():
- if line.startswith("model name") and line.find("Geode(TM)") != -1:
- return "geode"
- return arch
-@@ -219,10 +223,7 @@ def getCanonX86Arch(arch):
- return arch
-
- # if we're i686 and AuthenticAMD, then we should be an athlon
-- f = open("/proc/cpuinfo", "r")
-- lines = f.readlines()
-- f.close()
-- for line in lines:
-+ for line in _try_read_cpuinfo():
- if line.startswith("vendor") and line.find("AuthenticAMD") != -1:
- return "athlon"
- # i686 doesn't guarantee cmov, but we depend on it
-@@ -237,10 +238,7 @@ def getCanonPPCArch(arch):
- return arch
-
- machine = None
-- f = open("/proc/cpuinfo", "r")
-- lines = f.readlines()
-- f.close()
-- for line in lines:
-+ for line in _try_read_cpuinfo():
- if line.find("machine") != -1:
- machine = line.split(':')[1]
- break
-@@ -256,10 +254,7 @@ def getCanonPPCArch(arch):
- def getCanonSPARCArch(arch):
- # Deal with sun4v, sun4u, sun4m cases
- SPARCtype = None
-- f = open("/proc/cpuinfo", "r")
-- lines = f.readlines()
-- f.close()
-- for line in lines:
-+ for line in _try_read_cpuinfo():
- if line.startswith("type"):
- SPARCtype = line.split(':')[1]
- break
-@@ -285,10 +280,7 @@ def getCanonX86_64Arch(arch):
- return arch
-
- vendor = None
-- f = open("/proc/cpuinfo", "r")
-- lines = f.readlines()
-- f.close()
-- for line in lines:
-+ for line in _try_read_cpuinfo():
- if line.startswith("vendor_id"):
- vendor = line.split(':')[1]
- break
-@@ -397,7 +389,7 @@ class ArchStorage(object):
- self.multilib = False
- self.setup_arch()
-
-- def setup_arch(self, arch=None):
-+ def setup_arch(self, arch=None, archlist_includes_compat_arch=True):
- if arch:
- self.canonarch = arch
- else:
-@@ -405,6 +397,14 @@ class ArchStorage(object):
-
- self.basearch = getBaseArch(myarch=self.canonarch)
- self.archlist = getArchList(thisarch=self.canonarch)
-+
-+ if not archlist_includes_compat_arch: # - do we bother including i686 and below on x86_64
-+ limit_archlist = []
-+ for a in self.archlist:
-+ if isMultiLibArch(a) or a == 'noarch':
-+ limit_archlist.append(a)
-+ self.archlist = limit_archlist
-+
- self.bestarch = getBestArch(myarch=self.canonarch)
- self.compatarches = getMultiArchInfo(arch=self.canonarch)
- self.multilib = isMultiLibArch(arch=self.canonarch)
-diff --git a/rpmUtils/miscutils.py b/rpmUtils/miscutils.py
-index a925027..cdb1cb6 100644
---- a/rpmUtils/miscutils.py
-+++ b/rpmUtils/miscutils.py
-@@ -37,10 +37,16 @@ def compareEVR((e1, v1, r1), (e2, v2, r2)):
- # return 1: a is newer than b
- # 0: a and b are the same version
- # -1: b is newer than a
-- e1 = str(e1)
-+ if e1 is None:
-+ e1 = '0'
-+ else:
-+ e1 = str(e1)
- v1 = str(v1)
- r1 = str(r1)
-- e2 = str(e2)
-+ if e2 is None:
-+ e2 = '0'
-+ else:
-+ e2 = str(e2)
- v2 = str(v2)
- r2 = str(r2)
- #print '%s, %s, %s vs %s, %s, %s' % (e1, v1, r1, e2, v2, r2)
-@@ -170,45 +176,45 @@ def rangeCompare(reqtuple, provtuple):
-
- # does not match unless
- if rc >= 1:
-- if reqf in ['GT', 'GE', 4, 12]:
-+ if reqf in ['GT', 'GE', 4, 12, '>', '>=']:
- return 1
-- if reqf in ['EQ', 8]:
-- if f in ['LE', 10, 'LT', 2]:
-- return 1
-- if reqf in ['LE', 'LT', 'EQ', 10, 2, 8]:
-- if f in ['LE', 'LT', 10, 2]:
-+ if reqf in ['EQ', 8, '=']:
-+ if f in ['LE', 10, 'LT', 2,'<=', '<']:
-+ return 1
-+ if reqf in ['LE', 'LT', 'EQ', 10, 2, 8, '<=', '<', '=']:
-+ if f in ['LE', 'LT', 10, 2, '<=', '<']:
- return 1
-
- if rc == 0:
-- if reqf in ['GT', 4]:
-- if f in ['GT', 'GE', 4, 12]:
-+ if reqf in ['GT', 4, '>']:
-+ if f in ['GT', 'GE', 4, 12, '>', '>=']:
- return 1
-- if reqf in ['GE', 12]:
-- if f in ['GT', 'GE', 'EQ', 'LE', 4, 12, 8, 10]:
-+ if reqf in ['GE', 12, '>=']:
-+ if f in ['GT', 'GE', 'EQ', 'LE', 4, 12, 8, 10, '>', '>=', '=', '<=']:
- return 1
-- if reqf in ['EQ', 8]:
-- if f in ['EQ', 'GE', 'LE', 8, 12, 10]:
-+ if reqf in ['EQ', 8, '=']:
-+ if f in ['EQ', 'GE', 'LE', 8, 12, 10, '=', '>=', '<=']:
- return 1
-- if reqf in ['LE', 10]:
-- if f in ['EQ', 'LE', 'LT', 'GE', 8, 10, 2, 12]:
-+ if reqf in ['LE', 10, '<=']:
-+ if f in ['EQ', 'LE', 'LT', 'GE', 8, 10, 2, 12, '=', '<=', '<' , '>=']:
- return 1
-- if reqf in ['LT', 2]:
-- if f in ['LE', 'LT', 10, 2]:
-+ if reqf in ['LT', 2, '<']:
-+ if f in ['LE', 'LT', 10, 2, '<=', '<']:
- return 1
- if rc <= -1:
-- if reqf in ['GT', 'GE', 'EQ', 4, 12, 8]:
-- if f in ['GT', 'GE', 4, 12]:
-+ if reqf in ['GT', 'GE', 'EQ', 4, 12, 8, '>', '>=', '=']:
-+ if f in ['GT', 'GE', 4, 12, '>', '>=']:
- return 1
-- if reqf in ['LE', 'LT', 10, 2]:
-+ if reqf in ['LE', 'LT', 10, 2, '<=', '<']:
- return 1
- # if rc >= 1:
--# if reqf in ['GT', 'GE', 4, 12]:
-+# if reqf in ['GT', 'GE', 4, 12, '>', '>=']:
- # return 1
- # if rc == 0:
--# if reqf in ['GE', 'LE', 'EQ', 8, 10, 12]:
-+# if reqf in ['GE', 'LE', 'EQ', 8, 10, 12, '>=', '<=', '=']:
- # return 1
- # if rc <= -1:
--# if reqf in ['LT', 'LE', 2, 10]:
-+# if reqf in ['LT', 'LE', 2, 10, '<', '<=']:
- # return 1
-
- return 0
-@@ -341,11 +347,17 @@ def rpm2cpio(fdno, out=sys.stdout, bufsize=2048):
- if tmp == "": break
- out.write(tmp)
- f.close()
--
-+
- def formatRequire (name, version, flags):
-+ '''
-+ Return a human readable requirement string (ex. foobar >= 2.0)
-+ @param name: requirement name (ex. foobar)
-+ @param version: requirent version (ex. 2.0)
-+ @param flags: binary flags ( 0010 = equal, 0100 = greater than, 1000 = less than )
-+ '''
- s = name
-
-- if flags:
-+ if flags and (type(flags) == type(0) or type(flags) == type(0L)): # Flag must be set and a int (or a long, now)
- if flags & (rpm.RPMSENSE_LESS | rpm.RPMSENSE_GREATER |
- rpm.RPMSENSE_EQUAL):
- s = s + " "
-@@ -358,6 +370,7 @@ def formatRequire (name, version, flags):
- if version:
- s = "%s %s" %(s, version)
- return s
-+
-
- def flagToString(flags):
- flags = flags & 0xf
-diff --git a/rpmUtils/oldUtils.py b/rpmUtils/oldUtils.py
-index 8957685..5f1d9ec 100644
---- a/rpmUtils/oldUtils.py
-+++ b/rpmUtils/oldUtils.py
-@@ -35,7 +35,7 @@ def checkheader(headerfile, name, arch):
-
-
- def checkRpmMD5(package, urlgraberror=0):
-- """take a package, check it out by trying to open it, return 1 if its good
-+ """take a package, check it out by trying to open it, return 1 if it's good
- return 0 if it's not"""
- ts.sigChecking('md5')
- fdno = os.open(package, os.O_RDONLY)
-diff --git a/rpmUtils/transaction.py b/rpmUtils/transaction.py
-index 329de69..e8f4459 100644
---- a/rpmUtils/transaction.py
-+++ b/rpmUtils/transaction.py
-@@ -83,6 +83,15 @@ class TransactionWrapper:
- curflags = self.ts.setFlags(0)
- self.ts.setFlags(curflags | flag)
-
-+ def getTsFlags(self):
-+ curflags = self.ts.setFlags(0)
-+ self.ts.setFlags(curflags)
-+ return curflags
-+
-+ def isTsFlagSet(self, flag):
-+ val = self.getTsFlags()
-+ return bool(flag & val)
-+
- # def addProblemFilter(self, filt):
- # curfilter = self.ts.setProbFilter(0)
- # self.ts.setProbFilter(cutfilter | filt)
-@@ -94,9 +103,8 @@ class TransactionWrapper:
- self.addTsFlag(rpm.RPMTRANS_FLAG_TEST)
- # FIXME GARBAGE - remove once this is reimplemented elsehwere
- # KEEPING FOR API COMPLIANCE ONLY
-- if conf.has_key('diskspacecheck'):
-- if conf['diskspacecheck'] == 0:
-- self.ts.setProbFilter(rpm.RPMPROB_FILTER_DISKSPACE)
-+ if conf.get('diskspacecheck') == 0:
-+ self.ts.setProbFilter(rpm.RPMPROB_FILTER_DISKSPACE)
- tserrors = self.ts.run(cb.callback, '')
-
- reserrors = []
-@@ -151,7 +159,7 @@ class TransactionWrapper:
- preq = 0
- tup = miscutils.pkgTupleFromHeader(h)
- for p in _return_all_provides(h):
-- if req.has_key(p):
-+ if p in req:
- # Don't count a package that provides its require
- s = req[p]
- if len(s) > 1 or tup not in s:
-diff --git a/rpmUtils/updates.py b/rpmUtils/updates.py
-index 68dee45..c61788b 100644
---- a/rpmUtils/updates.py
-+++ b/rpmUtils/updates.py
-@@ -75,14 +75,11 @@ class Updates:
-
- def _delFromNADict(self, dict_, pkgtup):
- (n, a, e, v, r) = pkgtup
-- if dict_.has_key((n, a)):
-- dict_[(n, a)] = filter((e,v,r).__ne__, dict_[(n, a)])
-- if not dict_[(n, a)]:
-- del dict_[(n, a)]
-- if dict_.has_key((n, None)):
-- dict_[(n, None)] = filter((e,v,r).__ne__, dict_[(n, None)])
-- if not dict_[(n, None)]:
-- del dict_[(n, None)]
-+ for aa in (a, None):
-+ if (n, aa) in dict_:
-+ dict_[(n, aa)] = filter((e,v,r).__ne__, dict_[(n, aa)])
-+ if not dict_[(n, aa)]:
-+ del dict_[(n, aa)]
-
- def delPackage(self, pkgtup):
- """remove available pkgtup that is no longer available"""
-@@ -94,7 +91,7 @@ class Updates:
- self._delFromDict(self.updating_dict, self.updatesdict.get(pkgtup, []), pkgtup)
- self._delFromDict(self.updatesdict, self.updating_dict.get(pkgtup, []), pkgtup)
-
-- if self.rawobsoletes.has_key(pkgtup):
-+ if pkgtup in self.rawobsoletes:
- if self._obsoletes_by_name:
- for name, flag, version in self.rawobsoletes[pkgtup]:
- self._delFromDict(self._obsoletes_by_name, [name], (flag, version, pkgtup))
-@@ -114,13 +111,17 @@ class Updates:
-
- returndict = {}
- for (n, a, e, v, r) in pkglist:
-- if not returndict.has_key((n, a)):
-+ if (n, a) not in returndict:
- returndict[(n, a)] = []
-+ if (e,v,r) in returndict[(n, a)]:
-+ continue
- returndict[(n, a)].append((e,v,r))
-
- if Nonelists:
-- if not returndict.has_key((n, None)):
-+ if (n, None) not in returndict:
- returndict[(n, None)] = []
-+ if (a,e,v,r) in returndict[(n, None)]:
-+ continue
- returndict[(n, None)].append((a, e, v, r))
-
- return returndict
-@@ -202,7 +203,7 @@ class Updates:
- returndict = {}
- for new in obslist:
- for old in obsdict[new]:
-- if not returndict.has_key(old):
-+ if old not in returndict:
- returndict[old] = []
- returndict[old].append(new)
-
-@@ -224,21 +225,21 @@ class Updates:
- #
- obs_arches = {}
- for (n, a, e, v, r) in self.rawobsoletes:
-- if not obs_arches.has_key(n):
-+ if n not in obs_arches:
- obs_arches[n] = []
- obs_arches[n].append(a)
-
- for pkgtup in self.rawobsoletes:
- (name, arch, epoch, ver, rel) = pkgtup
- for (obs_n, flag, (obs_e, obs_v, obs_r)) in self.rawobsoletes[(pkgtup)]:
-- if self.installdict.has_key((obs_n, None)):
-+ if (obs_n, None) in self.installdict:
- for (rpm_a, rpm_e, rpm_v, rpm_r) in self.installdict[(obs_n, None)]:
- if flag in [None, 0] or \
- rpmUtils.miscutils.rangeCheck((obs_n, flag, (obs_e, obs_v, obs_r)),
- (obs_n, rpm_a, rpm_e, rpm_v, rpm_r)):
- # make sure the obsoleting pkg is not already installed
- willInstall = 1
-- if self.installdict.has_key((name, None)):
-+ if (name, None) in self.installdict:
- for (ins_a, ins_e, ins_v, ins_r) in self.installdict[(name, None)]:
- pkgver = (epoch, ver, rel)
- installedver = (ins_e, ins_v, ins_r)
-@@ -248,7 +249,7 @@ class Updates:
- if rpm_a != arch and rpm_a in obs_arches[name]:
- willInstall = 0
- if willInstall:
-- if not obsdict.has_key(pkgtup):
-+ if pkgtup not in obsdict:
- obsdict[pkgtup] = []
- obsdict[pkgtup].append((obs_n, rpm_a, rpm_e, rpm_v, rpm_r))
- self.obsoletes = obsdict
-@@ -261,7 +262,7 @@ class Updates:
- self.obsoleted_dict = {}
- for new in self.obsoletes:
- for old in self.obsoletes[new]:
-- if not self.obsoleted_dict.has_key(old):
-+ if old not in self.obsoleted_dict:
- self.obsoleted_dict[old] = []
- self.obsoleted_dict[old].append(new)
- self.obsoleting_dict = {}
-@@ -312,7 +313,7 @@ class Updates:
-
- for (n, a) in newpkgs:
- # simple ones - look for exact matches or older stuff
-- if self.installdict.has_key((n, a)):
-+ if (n, a) in self.installdict:
- for (rpm_e, rpm_v, rpm_r) in self.installdict[(n, a)]:
- try:
- (e, v, r) = self.returnNewest(newpkgs[(n,a)])
-@@ -365,14 +366,14 @@ class Updates:
- for (n, a) in simpleupdate:
- # try to be as precise as possible
- if n in self.exactarchlist:
-- if self.installdict.has_key((n, a)):
-+ if (n, a) in self.installdict:
- (rpm_e, rpm_v, rpm_r) = self.returnNewest(self.installdict[(n, a)])
-- if newpkgs.has_key((n,a)):
-+ if (n, a) in newpkgs:
- (e, v, r) = self.returnNewest(newpkgs[(n, a)])
- rc = rpmUtils.miscutils.compareEVR((e, v, r), (rpm_e, rpm_v, rpm_r))
- if rc > 0:
- # this is definitely an update - put it in the dict
-- if not updatedict.has_key((n, a, rpm_e, rpm_v, rpm_r)):
-+ if (n, a, rpm_e, rpm_v, rpm_r) not in updatedict:
- updatedict[(n, a, rpm_e, rpm_v, rpm_r)] = []
- updatedict[(n, a, rpm_e, rpm_v, rpm_r)].append((n, a, e, v, r))
-
-@@ -382,12 +383,12 @@ class Updates:
- # we just need to find the arch of the installed pkg so we can
- # check it's (e, v, r)
- (rpm_a, rpm_e, rpm_v, rpm_r) = self.installdict[(n, None)][0]
-- if newpkgs.has_key((n, None)):
-+ if (n, None) in newpkgs:
- for (a, e, v, r) in newpkgs[(n, None)]:
- rc = rpmUtils.miscutils.compareEVR((e, v, r), (rpm_e, rpm_v, rpm_r))
- if rc > 0:
- # this is definitely an update - put it in the dict
-- if not updatedict.has_key((n, rpm_a, rpm_e, rpm_v, rpm_r)):
-+ if (n, rpm_a, rpm_e, rpm_v, rpm_r) not in updatedict:
- updatedict[(n, rpm_a, rpm_e, rpm_v, rpm_r)] = []
- updatedict[(n, rpm_a, rpm_e, rpm_v, rpm_r)].append((n, a, e, v, r))
-
-@@ -403,7 +404,7 @@ class Updates:
-
- archlists = []
- if self._is_multilib:
-- if rpmUtils.arch.multilibArches.has_key(self.myarch):
-+ if self.myarch in rpmUtils.arch.multilibArches:
- biarches = [self.myarch]
- else:
- biarches = [self.myarch, rpmUtils.arch.arches[self.myarch]]
-@@ -448,7 +449,7 @@ class Updates:
- rc = rpmUtils.miscutils.compareEVR((e, v, r), (rpm_e, rpm_v, rpm_r))
- if rc > 0:
- # this is definitely an update - put it in the dict
-- if not updatedict.has_key((n, a, rpm_e, rpm_v, rpm_r)):
-+ if (n, a, rpm_e, rpm_v, rpm_r) not in updatedict:
- updatedict[(n, a, rpm_e, rpm_v, rpm_r)] = []
- updatedict[(n, a, rpm_e, rpm_v, rpm_r)].append((n, a, e, v, r))
- else:
-@@ -482,7 +483,7 @@ class Updates:
- rc = rpmUtils.miscutils.compareEVR((e, v, r), (rpm_e, rpm_v, rpm_r))
- if rc > 0:
- # this is definitely an update - put it in the dict
-- if not updatedict.has_key((n, rpm_a, rpm_e, rpm_v, rpm_r)):
-+ if (n, rpm_a, rpm_e, rpm_v, rpm_r) not in updatedict:
- updatedict[(n, rpm_a, rpm_e, rpm_v, rpm_r)] = []
- updatedict[(n, rpm_a, rpm_e, rpm_v, rpm_r)].append((n, a, e, v, r))
-
-@@ -496,7 +497,7 @@ class Updates:
- self.updating_dict = {}
- for old in self.updatesdict:
- for new in self.updatesdict[old]:
-- if not self.updating_dict.has_key(new):
-+ if new not in self.updating_dict:
- self.updating_dict[new] = []
- self.updating_dict[new].append(old)
-
-@@ -691,7 +692,7 @@ class Updates:
- highdict = {}
- for pkgtup in tuplelist:
- (n, a, e, v, r) = pkgtup
-- if not highdict.has_key((n, a)):
-+ if (n, a) not in highdict:
- highdict[(n, a)] = pkgtup
- else:
- pkgtup2 = highdict[(n, a)]
-diff --git a/test/depsolvetests.py b/test/depsolvetests.py
-index 02bbf8f..7af3f16 100644
---- a/test/depsolvetests.py
-+++ b/test/depsolvetests.py
-@@ -1197,3 +1197,18 @@ class DepsolveTests(DepsolveTests):
- self.assertEquals('ok', *self.resolveCode())
- self.assertResult((po, po2))
-
-+ def testRL_dcbd1(self):
-+ xpo = FakePackage('dcbd-devel', version='1', arch='i386')
-+ xpo.addRequires('dcbd', None, (None, None, None))
-+ self.tsInfo.addInstall(xpo)
-+
-+ po1 = FakePackage('dcbd', version='1')
-+ po1.addProvides('dcbd', 'EQ', ('0', '1', '0'))
-+ po2 = FakePackage('lldpad', version='2')
-+ po2.addObsoletes('dcbd', 'LT', ('0', '2', '0'))
-+ po3 = FakePackage('lldpad-devel', version='2')
-+ self.xsack.addPackage(po3)
-+ self.xsack.addPackage(po2)
-+ self.xsack.addPackage(po1)
-+
-+ self.assertEquals('err', *self.resolveCode())
-diff --git a/test/packagetests.py b/test/packagetests.py
-index e658cfa..dac8abd 100644
---- a/test/packagetests.py
-+++ b/test/packagetests.py
-@@ -252,6 +252,7 @@ class RangeCompareTests(unittest.TestCase):
-
- for requires, provides, result in (
- (('foo', 'EQ', ('0', '1.4.4', '0')), ('foo', 'EQ', ('0', '1.4.4', '0')), 1),
-+ (('foo', 'EQ', ('0', '1.4.4', '0')), ('foo', 'EQ', (None, '1.4.4', '0')), 1),
- (('foo', 'EQ', ('0', '1.4.4', '0')), ('foo', 'EQ', ('0', '1.4.4', None)), 1),
- (('foo', 'EQ', ('0', '1.4.4', None)), ('foo', 'EQ', ('0', '1.4.4', '8')), 1),
- (('foo', 'LT', ('0', '1.5.4', None)), ('foo', 'EQ', ('0', '1.4.4', '7')), 1),
-diff --git a/test/simpleobsoletestests.py b/test/simpleobsoletestests.py
-index cf1821f..dfaa7e5 100644
---- a/test/simpleobsoletestests.py
-+++ b/test/simpleobsoletestests.py
-@@ -157,11 +157,32 @@ class SimpleObsoletesTests(OperationsTests):
- self.assert_(res=='ok', msg)
- self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes))
-
-- def testObsoletex86_64ToMultiarch(self):
-+ def testObsoletex86_64ToMultiarch1(self):
- p = self.pkgs
- res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64])
- self.assert_(res=='ok', msg)
- self.assertResult((p.obsoletes_x86_64,))
-+ def testObsoletex86_64ToMultiarch2(self):
-+ p = self.pkgs
-+ res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_x86_64, p.obsoletes_i386])
-+ self.assert_(res=='ok', msg)
-+ self.assertResult((p.obsoletes_x86_64,))
-+ def testInstallObsoletex86_64ToMultiarch1(self):
-+ # Found by BZ 593349, libgfortran43/44
-+ p = self.pkgs
-+ res, msg = self.runOperation(['install', 'zsh.x86_64'], [], [p.installed_x86_64, p.installed_i386, p.obsoletes_x86_64, p.obsoletes_i386])
-+ self.assert_(res=='ok', msg)
-+ self.assertResult((p.obsoletes_x86_64,))
-+ def testInstallObsoletex86_64ToMultiarch2(self):
-+ p = self.pkgs
-+ res, msg = self.runOperation(['install', 'zsh.i386'], [], [p.installed_x86_64, p.installed_i386, p.obsoletes_x86_64, p.obsoletes_i386])
-+ self.assert_(res=='ok', msg)
-+ self.assertResult((p.obsoletes_i386,))
-+ def testInstallObsoletex86_64ToMultiarch3(self):
-+ p = self.pkgs
-+ res, msg = self.runOperation(['install', 'zsh'], [], [p.installed_noarch, p.obsoletes_x86_64, p.obsoletes_i386])
-+ self.assert_(res=='ok', msg)
-+ self.assertResult((p.obsoletes_x86_64,))
- def testObsoletex86_64ToMultiarchForDependency(self):
- p = self.pkgs
- res, msg = self.runOperation(['install', 'superzippy'],
-diff --git a/test/simpleupdatetests.py b/test/simpleupdatetests.py
-index f02cc75..df641f7 100644
---- a/test/simpleupdatetests.py
-+++ b/test/simpleupdatetests.py
-@@ -764,3 +764,48 @@ class SimpleUpdateTests(OperationsTests):
- [pa1, pa2, pa4, pa3])
- self.assert_(res=='ok', msg)
- self.assertResult((pa1, pa3))
-+
-+ def testUpdateRLEvince1(self):
-+ """ This tests a dep. upgrade from a dep. upgrade, with a multilib. pkg.
-+ where only half of the multilib. is installed. """
-+ pi1 = FakePackage('evince', '1', '1', '0', 'x86_64')
-+ pi1.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
-+ pi2 = FakePackage('evince-libs', '1', '1', '0', 'x86_64')
-+ pi3 = FakePackage('evince-djvu', '1', '1', '0', 'x86_64')
-+ pi3.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
-+
-+ pa1 = FakePackage('evince', '2', '1', '0', 'x86_64')
-+ pa1.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
-+ pa2i = FakePackage('evince-libs', '2', '1', '0', 'i686')
-+ pa2x = FakePackage('evince-libs', '2', '1', '0', 'x86_64')
-+ pa3 = FakePackage('evince-djvu', '2', '1', '0', 'x86_64')
-+ pa3.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
-+
-+ res, msg = self.runOperation(['update', 'evince'],
-+ [pi1, pi2, pi3],
-+ [pa1, pa2x, pa2i, pa3])
-+ self.assert_(res=='ok', msg)
-+ self.assertResult((pa1, pa2x, pa3))
-+
-+ def testUpdateRLEvince2(self):
-+ """ Dito. testUpdateRLEvince1, except here pa2i is before pa2x, and
-+ thus. will be seen first by .update() when it does an
-+ archless "find". """
-+ pi1 = FakePackage('evince', '1', '1', '0', 'x86_64')
-+ pi1.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
-+ pi2 = FakePackage('evince-libs', '1', '1', '0', 'x86_64')
-+ pi3 = FakePackage('evince-djvu', '1', '1', '0', 'x86_64')
-+ pi3.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
-+
-+ pa1 = FakePackage('evince', '2', '1', '0', 'x86_64')
-+ pa1.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
-+ pa2i = FakePackage('evince-libs', '2', '1', '0', 'i686')
-+ pa2x = FakePackage('evince-libs', '2', '1', '0', 'x86_64')
-+ pa3 = FakePackage('evince-djvu', '2', '1', '0', 'x86_64')
-+ pa3.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
-+
-+ res, msg = self.runOperation(['update', 'evince'],
-+ [pi1, pi2, pi3],
-+ [pa1, pa2i, pa2x, pa3])
-+ self.assert_(res=='ok', msg)
-+ self.assertResult((pa1, pa2x, pa3))
-diff --git a/test/testbase.py b/test/testbase.py
-index 0b05812..f91fbf1 100644
---- a/test/testbase.py
-+++ b/test/testbase.py
-@@ -17,6 +17,7 @@ from cli import YumBaseCli
- from yum.rpmsack import RPMDBPackageSack as _rpmdbsack
- import inspect
- from rpmUtils import arch
-+from rpmUtils.transaction import initReadOnlyTransaction
-
- #############################################################
- ### Helper classes ##########################################
-@@ -44,11 +45,24 @@ class FakeConf(object):
- self.persistdir = '/should-not-exist-bad-test!'
- self.showdupesfromrepos = False
- self.uid = 0
-+ self.groupremove_leaf_only = False
-+ self.protected_packages = []
-+
-+class FakeSack:
-+ """ Fake PackageSack to use with FakeRepository"""
-+ def __init__(self):
-+ pass # This is fake, so do nothing
-+
-+ def have_fastReturnFileEntries(self):
-+ return True
-
- class FakeRepo(object):
-
-+ __fake_sack = FakeSack()
- def __init__(self, id=None,sack=None):
- self.id = id
-+ if sack is None:
-+ sack = self.__fake_sack
- self.sack = sack
- self.cost = 1000
-
-@@ -280,6 +294,11 @@ class FakeRpmDb(packageSack.PackageSack):
- def transactionReset(self):
- return
-
-+ def readOnlyTS(self):
-+ # Should probably be able to "fake" this, so we can provide different
-+ # get_running_kernel_pkgtup(). Bah.
-+ return initReadOnlyTransaction("/")
-+
- def getProvides(self, name, flags=None, version=(None, None, None)):
- """return dict { packages -> list of matching provides }"""
- self._checkIndexes(failure='build')
-diff --git a/test/yum-leak-test.py b/test/yum-leak-test.py
-index 299db51..760b770 100755
---- a/test/yum-leak-test.py
-+++ b/test/yum-leak-test.py
-@@ -1,6 +1,10 @@
- #! /usr/bin/python -tt
-
--import yum, os, time, gc
-+# Do either:
-+# ./yum-leak-test.py
-+# ./yum-leak-test.py zip
-+
-+import yum, os, time, gc, sys
- from urlgrabber.progress import format_number
-
- def out_mem(pid):
-@@ -17,9 +21,15 @@ def out_mem(pid):
- (format_number(int(ps['vmrss']) * 1024),
- format_number(int(ps['vmsize']) * 1024))
-
--out_mem(os.getpid())
--while True:
-+print "Running:", yum.__version__
-+
-+def _leak_tst_yb():
-+ print "Doing YumBase leak test. "
-+ out_mem(os.getpid())
-+ while True:
- yb = yum.YumBase()
-+ yb.preconf.debuglevel = 0
-+ yb.preconf.errorlevel = 0
- yb.repos.setCacheDir(yum.misc.getCacheDir())
- yb.rpmdb.returnPackages()
- yb.pkgSack.returnPackages()
-@@ -33,3 +43,83 @@ while True:
- print gc.garbage[0]
- print gc.get_referrers(gc.garbage[0])
- # print "DBG:", gc.get_referrers(yb)
-+
-+def _leak_tst_cl():
-+ print "Doing closeRpmDB and .up test. "
-+ yb = yum.YumBase()
-+ yb.preconf.debuglevel = 0
-+ yb.preconf.errorlevel = 0
-+ yb.repos.setCacheDir(yum.misc.getCacheDir())
-+ while True:
-+ out_mem(os.getpid())
-+ print "up:",
-+ yb.up
-+ print "done"
-+ out_mem(os.getpid())
-+
-+ print "rpmdb pkgs:",
-+ yb.rpmdb.returnPackages()
-+ print "done"
-+ out_mem(os.getpid())
-+
-+ print "pkgSack pkgs:",
-+ yb.pkgSack.returnPackages()
-+ print "done"
-+ out_mem(os.getpid())
-+
-+ print "close:",
-+ yb.closeRpmDB()
-+ print "done"
-+
-+def _leak_tst_ir():
-+ print "Doing install/remove leak test. "
-+
-+ def _init():
-+ yb = cli.YumBaseCli() # Need doTransaction() etc.
-+ yb.preconf.debuglevel = 0
-+ yb.preconf.errorlevel = 0
-+ yb.repos.setCacheDir(yum.misc.getCacheDir())
-+ yb.conf.assumeyes = True
-+ return yb
-+
-+ sys.path.append('/usr/share/yum-cli')
-+ import cli
-+ yb = _init()
-+ out_mem(os.getpid())
-+
-+ def _run(yb):
-+ print " Run"
-+ (code, msgs) = yb.buildTransaction()
-+ if code == 1:
-+ print "ERROR:", core, msgs
-+ sys.exit(1)
-+ returnval = yb.doTransaction()
-+ if returnval != 0: # We could allow 1 too, but meh.
-+ print "ERROR:", returnval
-+ sys.exit(1)
-+ yb.closeRpmDB()
-+
-+ last = None
-+ while True:
-+ if True:
-+ yb = _init()
-+ out_mem(os.getpid())
-+ print " Install:", sys.argv[1:]
-+ for pat in sys.argv[1:]:
-+ yb.install(pattern=pat)
-+ out_mem(os.getpid())
-+ _run(yb)
-+ out_mem(os.getpid())
-+
-+ print " Remove:", sys.argv[1:]
-+ for pat in sys.argv[1:]:
-+ yb.remove(pattern=pat)
-+ out_mem(os.getpid())
-+ _run(yb)
-+
-+if len(sys.argv) == 2 and sys.argv[1] == 'closeRpmDB':
-+ _leak_tst_cl()
-+elif sys.argv[1:]:
-+ _leak_tst_ir()
-+else:
-+ _leak_tst_yb()
-diff --git a/test/yum-pylintrc b/test/yum-pylintrc
-index dd3db57..fa3e57c 100644
---- a/test/yum-pylintrc
-+++ b/test/yum-pylintrc
-@@ -82,7 +82,8 @@ disable-msg-cat=C,R
- # W0703: *Catch "Exception"*
- # W0710: *Exception doesn't inherit from standard "Exception" class* (give false positives on ex. KeyboardInterrupt)
- # W0631: *Using possibly undefined loop variable %r* (Gives to many false positives)
--disable-msg=E1101,F0401,W0704,W0612,W0212,W0613,W0602,W0511,W0401,W0614,W0232,W0201,W0603,W0621,W0142,W0102,W0105,W0702,W0231,E0202,W0622,W0403,W0223,W0104,W1001,W0221,W0703,W0710,W0631
-+# E1103: *%s %r has no %r member (but some types could not be inferred)*
-+disable-msg=E1101,F0401,W0704,W0612,W0212,W0613,W0602,W0511,W0401,W0614,W0232,W0201,W0603,W0621,W0142,W0102,W0105,W0702,W0231,E0202,W0622,W0403,W0223,W0104,W1001,W0221,W0703,W0710,W0631,E1103
-
-
- [REPORTS]
-diff --git a/utils.py b/utils.py
-index dd6b642..9335112 100644
---- a/utils.py
-+++ b/utils.py
-@@ -21,6 +21,7 @@ import yum
- from cli import *
- from yum import Errors
- from yum import _
-+from yum.i18n import utf8_width
- from yum import logginglevels
- from optparse import OptionGroup
-
-@@ -105,7 +106,7 @@ def show_lock_owner(pid, logger):
-
- ps = get_process_info(pid)
- # This yumBackend isn't very friendly, so...
-- if ps['name'] == 'yumBackend.py':
-+ if ps is not None and ps['name'] == 'yumBackend.py':
- nmsg = _(" The other application is: PackageKit")
- else:
- nmsg = _(" The other application is: %s") % ps['name']
-@@ -120,6 +121,8 @@ def show_lock_owner(pid, logger):
- (time.ctime(ps['start_time']), ago))
- logger.critical(_(" State : %s, pid: %d") % (ps['state'], pid))
-
-+
-+
- class YumUtilBase(YumBaseCli):
- def __init__(self,name,ver,usage):
- YumBaseCli.__init__(self)
-@@ -132,6 +135,46 @@ class YumUtilBase(YumBaseCli):
- suppress_keyboard_interrupt_message()
- logger = logging.getLogger("yum.util")
- verbose_logger = logging.getLogger("yum.verbose.util")
-+ # Add yum-utils version to history records.
-+ if hasattr(self, 'run_with_package_names'):
-+ self.run_with_package_names.add("yum-utils")
-+
-+ def exUserCancel(self):
-+ self.logger.critical(_('\n\nExiting on user cancel'))
-+ if self.unlock(): return 200
-+ return 1
-+
-+ def exIOError(self, e):
-+ if e.errno == 32:
-+ self.logger.critical(_('\n\nExiting on Broken Pipe'))
-+ else:
-+ self.logger.critical(_('\n\n%s') % str(e))
-+ if self.unlock(): return 200
-+ return 1
-+
-+ def exPluginExit(self, e):
-+ '''Called when a plugin raises PluginYumExit.
-+
-+ Log the plugin's exit message if one was supplied.
-+ ''' # ' xemacs hack
-+ exitmsg = str(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))
-+ if self.unlock(): return 200
-+ return 1
-+
-+ def unlock(self):
-+ try:
-+ self.closeRpmDB()
-+ self.doUnlock()
-+ except Errors.LockError, e:
-+ return 200
-+ return 0
-
-
- def getOptionParser(self):
-@@ -150,9 +193,12 @@ class YumUtilBase(YumBaseCli):
- if "%s" %(e.msg,) != lockerr:
- lockerr = "%s" %(e.msg,)
- self.logger.critical(lockerr)
-- self.logger.critical("Another app is currently holding the yum lock; waiting for it to exit...")
-- show_lock_owner(e.pid, self.logger)
-- time.sleep(2)
-+ if not self.conf.exit_on_lock:
-+ self.logger.critical("Another app is currently holding the yum lock; waiting for it to exit...")
-+ show_lock_owner(e.pid, self.logger)
-+ time.sleep(2)
-+ else:
-+ raise Errors.YumBaseError, _("Another app is currently holding the yum lock; exiting as configured by exit_on_lock")
- else:
- break
-
-@@ -162,6 +208,14 @@ class YumUtilBase(YumBaseCli):
- def doUtilConfigSetup(self,args = sys.argv[1:],pluginsTypes=(plugins.TYPE_CORE,)):
- # Parse only command line options that affect basic yum setup
- opts = self._parser.firstParse(args)
-+
-+ # go through all the setopts and set the global ones
-+ self._parseSetOpts(opts.setopts)
-+
-+ if self.main_setopts:
-+ for opt in self.main_setopts.items:
-+ setattr(opts, opt, getattr(self.main_setopts, opt))
-+
- # Just print out the version if that's what the user wanted
- if opts.version:
- self._printUtilVersion()
-@@ -187,8 +241,15 @@ class YumUtilBase(YumBaseCli):
- pc.disabled_plugins =self._parser._splitArg(opts.disableplugins)
- if hasattr(opts, "enableplugins"):
- pc.enabled_plugins = self._parser._splitArg(opts.enableplugins)
-+ if hasattr(opts, "releasever"):
-+ pc.releasever = opts.releasever
- self.conf
-
-+ # now set all the non-first-start opts from main from our setopts
-+ if self.main_setopts:
-+ for opt in self.main_setopts.items:
-+ setattr(self.conf, opt, getattr(self.main_setopts, opt))
-+
- except Errors.ConfigError, e:
- self.logger.critical(_('Config Error: %s'), e)
- sys.exit(1)
-@@ -229,58 +290,64 @@ class YumUtilBase(YumBaseCli):
- except Errors.YumBaseError, msg:
- self.logger.critical(str(msg))
- sys.exit(1)
--
-- def doUtilTransaction(self):
-- def exUserCancel():
-- self.logger.critical(_('\n\nExiting on user cancel'))
-- if unlock(): return 200
-- return 1
--
-- def exIOError(e):
-- if e.errno == 32:
-- self.logger.critical(_('\n\nExiting on Broken Pipe'))
-- else:
-- self.logger.critical(_('\n\n%s') % str(e))
-- if unlock(): return 200
-- return 1
--
-- def exPluginExit(e):
-- '''Called when a plugin raises PluginYumExit.
--
-- Log the plugin's exit message if one was supplied.
-- ''' # ' xemacs hack
-- exitmsg = str(e)
-- if exitmsg:
-- self.logger.warn('\n\n%s', exitmsg)
-- if unlock(): return 200
-- return 1
-
-- def exFatal(e):
-- self.logger.critical('\n\n%s', to_unicode(e.value))
-- if unlock(): return 200
-+ def doUtilBuildTransaction(self, unfinished_transactions_check=True):
-+ try:
-+ (result, resultmsgs) = self.buildTransaction(unfinished_transactions_check = unfinished_transactions_check)
-+ except plugins.PluginYumExit, e:
-+ return self.exPluginExit(e)
-+ except Errors.YumBaseError, e:
-+ result = 1
-+ resultmsgs = [unicode(e)]
-+ except KeyboardInterrupt:
-+ return self.exUserCancel()
-+ except IOError, e:
-+ return self.exIOError(e)
-+
-+ # Act on the depsolve result
-+ if result == 0:
-+ # Normal exit
-+ if self.unlock(): return 200
-+ return 0
-+ elif result == 1:
-+ # Fatal error
-+ for msg in resultmsgs:
-+ prefix = _('Error: %s')
-+ prefix2nd = (' ' * (utf8_width(prefix) - 2))
-+ self.logger.critical(prefix, msg.replace('\n', '\n' + prefix2nd))
-+ if not self.conf.skip_broken:
-+ self.verbose_logger.info(_(" You could try using --skip-broken to work around the problem"))
-+ if not self._rpmdb_warn_checks(out=self.verbose_logger.info, warn=False):
-+ self.verbose_logger.info(_(" You could try running: rpm -Va --nofiles --nodigest"))
-+ if self.unlock(): return 200
- return 1
-+ elif result == 2:
-+ # Continue on
-+ pass
-+ else:
-+ self.logger.critical(_('Unknown Error(s): Exit Code: %d:'), result)
-+ for msg in resultmsgs:
-+ self.logger.critical(msg)
-+ if self.unlock(): return 200
-+ return 3
-
-- def unlock():
-- try:
-- self.closeRpmDB()
-- self.doUnlock()
-- except Errors.LockError, e:
-- return 200
-- return 0
-+ self.verbose_logger.log(logginglevels.INFO_2, _('\nDependencies Resolved'))
-+
-+ def doUtilTransaction(self):
-
- try:
- return_code = self.doTransaction()
- except plugins.PluginYumExit, e:
-- return exPluginExit(e)
-+ return self.exPluginExit(e)
- except Errors.YumBaseError, e:
-- return exFatal(e)
-+ return self.exFatal(e)
- except KeyboardInterrupt:
-- return exUserCancel()
-+ return self.exUserCancel()
- except IOError, e:
-- return exIOError(e)
-+ return self.exIOError(e,)
-
- self.verbose_logger.log(logginglevels.INFO_2, _('Complete!'))
-- if unlock(): return 200
-+ if self.unlock(): return 200
- return return_code
-
- def main():
-diff --git a/yum-updatesd.py b/yum-updatesd.py
-index f96940c..1ce4720 100644
---- a/yum-updatesd.py
-+++ b/yum-updatesd.py
-@@ -118,9 +118,7 @@ class SyslogUpdateEmitter(UpdateEmitter):
- "DEBUG": syslog.LOG_DEBUG }
- if type(lvl) == int:
- return lvl
-- if level_map.has_key(lvl.upper()):
-- return level_map[lvl.upper()]
-- return syslog.LOG_INFO
-+ return level_map.get(lvl.upper(), syslog.LOG_INFO)
-
- def _facilityMap(self, facility):
- facility_map = { "KERN": syslog.LOG_KERN,
-@@ -142,9 +140,7 @@ class SyslogUpdateEmitter(UpdateEmitter):
- "LOCAL7": syslog.LOG_LOCAL7,}
- if type(facility) == int:
- return facility
-- elif facility_map.has_key(facility.upper()):
-- return facility_map[facility.upper()]
-- return syslog.LOG_DAEMON
-+ return facility_map.get(facility.upper(), syslog.LOG_DAEMON)
-
-
- class EmailUpdateEmitter(UpdateEmitter):
-diff --git a/yum.spec b/yum.spec
-index 29870e5..3b8b3f8 100644
---- a/yum.spec
-+++ b/yum.spec
-@@ -22,14 +22,22 @@ Requires: pygpgme
- Prereq: /sbin/chkconfig, /sbin/service, coreutils
- Conflicts: yum-skip-broken
- Conflicts: rpm >= 5-0
--Obsoletes: yum-basearchonly
-+Obsoletes: yum-skip-broken <= 1.1.18
-+Obsoletes: yum-basearchonly <= 1.1.9
- Obsoletes: yum-allow-downgrade < 1.1.20-0
- Obsoletes: yum-plugin-allow-downgrade < 1.1.22-0
-+Obsoletes: yum-plugin-protect-packages < 1.1.27-0
-+Provides: yum-skip-broken
-+Provides: yum-basearchonly
-+Provides: yum-allow-downgrade
-+Provides: yum-plugin-allow-downgrade
-+Provides: yum-protect-packages
-+Provides: yum-plugin-protect-packages
-
- %description
- Yum is a utility that can check for and automatically download and
- install updated RPM packages. Dependencies are obtained and downloaded
--automatically prompting the user as necessary.
-+automatically, prompting the user for permission as necessary.
-
- %package updatesd
- Summary: Update notification daemon
-@@ -57,6 +65,12 @@ make DESTDIR=$RPM_BUILD_ROOT install
- # install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/etc/yum/yum.conf
- # install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/etc/cron.daily/yum.cron
-
-+# Ghost files:
-+mkdir -p $RPM_BUILD_ROOT/var/lib/yum/history
-+mkdir -p $RPM_BUILD_ROOT/var/lib/yum/plugins
-+mkdir -p $RPM_BUILD_ROOT/var/lib/yum/yumdb
-+touch $RPM_BUILD_ROOT/var/lib/yum/uuid
-+
- %find_lang %name
-
- %clean
-@@ -80,8 +94,10 @@ exit 0
- %doc README AUTHORS COPYING TODO INSTALL ChangeLog PLUGINS
- %config(noreplace) %{_sysconfdir}/yum/yum.conf
- %config(noreplace) %{_sysconfdir}/yum/version-groups.conf
--%dir %{_sysconfdir}/%{name}
-+%dir %{_sysconfdir}/yum
-+%dir %{_sysconfdir}/yum/protected.d
- %dir %{_sysconfdir}/yum/repos.d
-+%dir %{_sysconfdir}/yum/vars
- %config %{_sysconfdir}/logrotate.d/%{name}
- %{_sysconfdir}/bash_completion.d
- %{_datadir}/yum-cli/*
-@@ -91,6 +107,10 @@ exit 0
- /usr/lib/python?.?/site-packages/rpmUtils
- %dir /var/cache/yum
- %dir /var/lib/yum
-+%ghost /var/lib/yum/uuid
-+%ghost /var/lib/yum/history
-+%ghost /var/lib/yum/plugins
-+%ghost /var/lib/yum/yumdb
- %{_mandir}/man*/yum.*
- %{_mandir}/man*/yum-shell*
-
-diff --git a/yum/Errors.py b/yum/Errors.py
-index a3a12c5..143c9a4 100644
---- a/yum/Errors.py
-+++ b/yum/Errors.py
-@@ -46,6 +46,23 @@ class YumTestTransactionError(YumBaseError):
- class YumRPMCheckError(YumBaseError):
- pass
-
-+class YumRPMTransError(YumBaseError):
-+ """ This class means rpm's .ts.run() returned known errors. We are compat.
-+ with YumBaseError in that we print nicely, and compat. with traditional
-+ usage of this error from runTransaction(). """
-+ def __init__(self, msg, errors):
-+ self.msg = msg
-+ self.errors = errors
-+ # old YumBaseError raises from runTransaction used to raise just this
-+ self.value = self.errors
-+
-+ def __str__(self):
-+ return "%s" %(self.msg,)
-+
-+ def __unicode__(self):
-+ return '%s' % to_unicode(self.msg)
-+
-+
- class LockError(YumBaseError):
- def __init__(self, errno, msg, pid=0):
- YumBaseError.__init__(self)
-@@ -90,7 +107,9 @@ class ReinstallRemoveError(ReinstallError):
- pass
-
- class ReinstallInstallError(ReinstallError):
-- pass
-+ def __init__(self, value=None, failed_pkgs=[]):
-+ ReinstallError.__init__(self, value)
-+ self.failed_pkgs = failed_pkgs
-
- class DowngradeError(YumBaseError):
- pass
-diff --git a/yum/__init__.py b/yum/__init__.py
-index ea73549..6ca40ee 100644
---- a/yum/__init__.py
-+++ b/yum/__init__.py
-@@ -30,7 +30,7 @@ import fnmatch
- import logging
- import logging.config
- import operator
--import gzip
-+
-
- import yum.i18n
- _ = yum.i18n._
-@@ -41,7 +41,8 @@ from config import ParsingError, ConfigParser
- import Errors
- import rpmsack
- import rpmUtils.updates
--from rpmUtils.arch import canCoinstall, ArchStorage, isMultiLibArch
-+from rpmUtils.arch import archDifference, canCoinstall, ArchStorage, isMultiLibArch
-+from rpmUtils.miscutils import compareEVR
- import rpmUtils.transaction
- import comps
- import pkgtag_db
-@@ -102,11 +103,28 @@ class _YumPreBaseConf:
- self.enabled_plugins = None
- self.syslog_ident = None
- self.syslog_facility = None
-- self.syslog_device = '/dev/log'
-+ self.syslog_device = None
- self.arch = None
- self.releasever = None
- self.uuid = None
-
-+
-+class _YumPreRepoConf:
-+ """This is the configuration interface for the repos configuration.
-+ So if you want to change callbacks etc. you tweak it here, and when
-+ yb.repos does it's thing ... it happens. """
-+
-+ def __init__(self):
-+ self.progressbar = None
-+ self.callback = None
-+ self.failure_callback = None
-+ self.interrupt_callback = None
-+ self.confirm_func = None
-+ self.gpg_import_func = None
-+ self.cachedir = None
-+ self.cache = None
-+
-+
- class _YumCostExclude:
- """ This excludes packages that are in repos. of lower cost than the passed
- repo. """
-@@ -150,6 +168,9 @@ class YumBase(depsolve.Depsolve):
- self.logger = logging.getLogger("yum.YumBase")
- self.verbose_logger = logging.getLogger("yum.verbose.YumBase")
- 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
-+ # trips over it later
-
- # Start with plugins disabled
- self.disablePlugins()
-@@ -159,6 +180,7 @@ class YumBase(depsolve.Depsolve):
- self.mediagrabber = None
- self.arch = ArchStorage()
- self.preconf = _YumPreBaseConf()
-+ self.prerepoconf = _YumPreRepoConf()
-
- self.run_with_package_names = set()
-
-@@ -270,12 +292,15 @@ class YumBase(depsolve.Depsolve):
- startupconf.syslog_ident = syslog_ident
- if syslog_facility != None:
- startupconf.syslog_facility = syslog_facility
-+ if syslog_device != None:
-+ startupconf.syslog_device = syslog_device
- if releasever != None:
- startupconf.releasever = releasever
-
- self.doLoggingSetup(startupconf.debuglevel, startupconf.errorlevel,
- startupconf.syslog_ident,
-- startupconf.syslog_facility, syslog_device)
-+ startupconf.syslog_facility,
-+ startupconf.syslog_device)
-
- if init_plugins and startupconf.plugins:
- self.doPluginSetup(optparser, plugin_types, startupconf.pluginpath,
-@@ -299,12 +324,9 @@ class YumBase(depsolve.Depsolve):
- # this (core now only uses YumBase.conf.yumvar).
- self.yumvar = self.conf.yumvar
-
-- self.getReposFromConfig()
--
- # who are we:
- self.conf.uid = os.geteuid()
-
--
- self.doFileLogSetup(self.conf.uid, self.conf.logfile)
- self.verbose_logger.debug('Config time: %0.3f' % (time.time() - conf_st))
- self.plugins.run('init')
-@@ -374,6 +396,10 @@ class YumBase(depsolve.Depsolve):
- thisrepo.repo_config_age = repo_age
- thisrepo.repofile = repofn
-
-+ if thisrepo.id in self.repo_setopts:
-+ for opt in self.repo_setopts[thisrepo.id].items:
-+ setattr(thisrepo, opt, getattr(self.repo_setopts[thisrepo.id], opt))
-+
- if validate and not validate(thisrepo):
- continue
-
-@@ -480,8 +506,7 @@ class YumBase(depsolve.Depsolve):
- _('Reading Local RPMDB'))
- self._rpmdb = rpmsack.RPMDBPackageSack(root=self.conf.installroot,
- releasever=self.conf.yumvar['releasever'],
-- persistdir=self.conf.persistdir,
-- cachedir=self.conf.cachedir)
-+ persistdir=self.conf.persistdir)
- self.verbose_logger.debug('rpmdb time: %0.3f' % (time.time() - rpmdb_st))
- return self._rpmdb
-
-@@ -508,7 +533,26 @@ class YumBase(depsolve.Depsolve):
-
- def _getRepos(self, thisrepo=None, doSetup = False):
- """ For each enabled repository set up the basics of the repository. """
-- self.conf # touch the config class first
-+ if hasattr(self, 'prerepoconf'):
-+ self.conf # touch the config class first
-+
-+ self.getReposFromConfig()
-+
-+ # Recursion
-+ prerepoconf = self.prerepoconf
-+ del self.prerepoconf
-+
-+ self.repos.setProgressBar(prerepoconf.progressbar)
-+ self.repos.callback = prerepoconf.callback
-+ self.repos.setFailureCallback(prerepoconf.failure_callback)
-+ self.repos.setInterruptCallback(prerepoconf.interrupt_callback)
-+ self.repos.confirm_func = prerepoconf.confirm_func
-+ self.repos.gpg_import_func = prerepoconf.gpg_import_func
-+ if prerepoconf.cachedir is not None:
-+ self.repos.setCacheDir(prerepoconf.cachedir)
-+ if prerepoconf.cache is not None:
-+ self.repos.setCache(prerepoconf.cache)
-+
-
- if doSetup:
- repo_st = time.time()
-@@ -706,9 +750,9 @@ class YumBase(depsolve.Depsolve):
- self.verbose_logger.log(logginglevels.DEBUG_4,
- _('Adding group file from repository: %s'), repo)
- groupfile = repo.getGroups()
-- # open it up as a file object so iterparse can cope with our gz file
-- if groupfile is not None and groupfile.endswith('.gz'):
-- groupfile = gzip.open(groupfile)
-+ # open it up as a file object so iterparse can cope with our compressed file
-+ if groupfile:
-+ groupfile = misc.decompress(groupfile)
-
- try:
- self._comps.add(groupfile)
-@@ -855,7 +899,11 @@ class YumBase(depsolve.Depsolve):
- self.logger.critical(msg)
- self.yumUtilsMsg(self.logger.critical, "yum-complete-transaction")
- time.sleep(3)
--
-+
-+ # XXX - we could add a conditional here to avoid running the plugins and
-+ # limit_installonly_pkgs, etc - if we're being run from yum-complete-transaction
-+ # and don't want it to happen. - skv
-+
- self.plugins.run('preresolve')
- ds_st = time.time()
-
-@@ -864,6 +912,9 @@ class YumBase(depsolve.Depsolve):
-
- # 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
-+ if rescode == 2 and self.conf.protected_packages:
-+ kern_pkgtup = misc.get_running_kernel_pkgtup(self.rpmdb.ts)
- self.rpmdb.ts = None
-
- # do the skip broken magic, if enabled and problems exist
-@@ -878,6 +929,53 @@ class YumBase(depsolve.Depsolve):
-
- if self.tsInfo.pkgSack is not None: # rm Transactions don't have pkgSack
- self.tsInfo.pkgSack.dropCachedData()
-+
-+ # 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!:)
-+ protect_states = [TS_OBSOLETED, TS_ERASE]
-+ txmbrs = []
-+ if rescode == 2 and self.conf.protected_packages:
-+ protected = set(self.conf.protected_packages)
-+ txmbrs = self.tsInfo.getMembersWithState(None, protect_states)
-+ bad_togo = {}
-+ for txmbr in txmbrs:
-+ if kern_pkgtup is not None and txmbr.pkgtup == kern_pkgtup:
-+ pass
-+ elif txmbr.name not in protected:
-+ continue
-+ if txmbr.name not in bad_togo:
-+ bad_togo[txmbr.name] = []
-+ bad_togo[txmbr.name].append(txmbr.pkgtup)
-+ for ipkg in self.rpmdb.searchNames(bad_togo.keys()):
-+ if (kern_pkgtup is not None and ipkg.name == kern_pkgtup[0] and
-+ kern_pkgtup in bad_togo[kern_pkgtup[0]]):
-+ continue # If "running kernel" matches, it's always bad.
-+ if ipkg.name not in bad_togo:
-+ continue
-+ # If there is at least one version not being removed, allow it
-+ if ipkg.pkgtup not in bad_togo[ipkg.name]:
-+ del bad_togo[ipkg.name]
-+ for pkgname in bad_togo.keys():
-+ if (kern_pkgtup is not None and pkgname == kern_pkgtup[0] and
-+ kern_pkgtup in bad_togo[kern_pkgtup[0]]):
-+ continue # If "running kernel" matches, it's always bad.
-+ for txmbr in self.tsInfo.matchNaevr(name=pkgname):
-+ if txmbr.name not in bad_togo:
-+ continue
-+ if txmbr.pkgtup in bad_togo[ipkg.name]:
-+ continue
-+ # If we are installing one version we aren't removing, allow it
-+ if txmbr.output_state in TS_INSTALL_STATES:
-+ del bad_togo[ipkg.name]
-+
-+ if bad_togo:
-+ rescode = 1
-+ restring = []
-+ for pkgname in sorted(bad_togo):
-+ restring.append(_('Trying to remove "%s", which is protected') %
-+ pkgname)
-+
- self.rpmdb.dropCachedData()
-
- self.verbose_logger.debug('Depsolve time: %0.3f' % (time.time() - ds_st))
-@@ -890,7 +988,7 @@ class YumBase(depsolve.Depsolve):
- # Try another depsolve
- if self.conf.skip_broken and rescode==1:
- if clear_skipped:
-- self.skipped_packages = [] # reset the public list of skipped packages.
-+ self.skipped_packages = [] # reset the public list of skipped packages.
- sb_st = time.time()
- rescode, restring = self._skipPackagesWithProblems(rescode, restring)
- self._printTransaction()
-@@ -975,6 +1073,10 @@ class YumBase(depsolve.Depsolve):
- else:
- self.verbose_logger.debug('SKIPBROKEN: resetting already resolved packages (transaction not changed)' )
- self.tsInfo.resetResolved(hard=True)
-+ else:
-+ # Reset the looping counter, because it is only a loop if the same transaction is
-+ # unchanged two times in row, not if it has been unchanged in a early stage.
-+ looping = 0
-
- # if we are all clear, then we have to check that the whole current transaction
- # can complete the depsolve without error, because the packages skipped
-@@ -1129,27 +1231,73 @@ class YumBase(depsolve.Depsolve):
- toRemove.add(dep)
- self._getDepsToRemove(dep, deptree, toRemove)
-
-- def _rpmdb_warn_checks(self, out=None, warn=True, chkcmd='all'):
-+ def _rpmdb_warn_checks(self, out=None, warn=True, chkcmd=None, header=None,
-+ ignore_pkgs=[]):
- if out is None:
- out = self.logger.warning
-+ if chkcmd is None:
-+ chkcmd = ['dependencies', 'duplicates']
-+ if header is None:
-+ # FIXME: _N()
-+ msg = _("** Found %d pre-existing rpmdb problem(s),"
-+ " 'yum check' output follows:")
-+ header = lambda problems: not problems or out(msg % problems)
- if warn:
- out(_('Warning: RPMDB altered outside of yum.'))
-
-+ if type(chkcmd) in (type([]), type(set())):
-+ chkcmd = set(chkcmd)
-+ else:
-+ chkcmd = set([chkcmd])
-+
-+ ignore_pkgtups = set((pkg.pkgtup for pkg in ignore_pkgs))
-+
- rc = 0
- probs = []
-- if chkcmd in ('all', 'dependencies'):
-+ if chkcmd.intersection(set(('all', 'dependencies'))):
- prob2ui = {'requires' : _('missing requires'),
- 'conflicts' : _('installed conflict')}
-- probs.extend(self.rpmdb.check_dependencies())
-+ for prob in self.rpmdb.check_dependencies():
-+ if prob.pkg.pkgtup in ignore_pkgtups:
-+ continue
-+ if prob.problem == 'conflicts':
-+ found = True # all the conflicting pkgs have to be ignored
-+ for res in prob.conflicts:
-+ if res.pkgtup not in ignore_pkgtups:
-+ found = False
-+ break
-+ if found:
-+ continue
-+ probs.append(prob)
-
-- if chkcmd in ('all', 'duplicates'):
-+ if chkcmd.intersection(set(('all', 'duplicates'))):
- iopkgs = set(self.conf.installonlypkgs)
-- probs.extend(self.rpmdb.check_duplicates(iopkgs))
-+ for prob in self.rpmdb.check_duplicates(iopkgs):
-+ if prob.pkg.pkgtup in ignore_pkgtups:
-+ continue
-+ if prob.duplicate.pkgtup in ignore_pkgtups:
-+ continue
-+ probs.append(prob)
-
-+ if chkcmd.intersection(set(('all', 'obsoleted'))):
-+ for prob in self.rpmdb.check_obsoleted():
-+ if prob.pkg.pkgtup in ignore_pkgtups:
-+ continue
-+ if prob.obsoleter.pkgtup in ignore_pkgtups:
-+ continue
-+ probs.append(prob)
-+
-+ if chkcmd.intersection(set(('all', 'provides'))):
-+ for prob in self.rpmdb.check_provides():
-+ if prob.pkg.pkgtup in ignore_pkgtups:
-+ continue
-+ probs.append(prob)
-+
-+ header(len(probs))
- for prob in sorted(probs):
- out(prob)
-
-- return len(probs)
-+ return probs
-
- def runTransaction(self, cb):
- """takes an rpm callback object, performs the transaction"""
-@@ -1163,17 +1311,31 @@ class YumBase(depsolve.Depsolve):
- self.run_with_package_names.add('yum-metadata-parser')
- break
-
-- 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]
-- lastdbv = self.history.last()
-- if lastdbv is not None:
-- lastdbv = lastdbv.end_rpmdbversion
-- if lastdbv is None or rpmdbv != lastdbv:
-- self._rpmdb_warn_checks(warn=lastdbv is not None)
-- if self.conf.history_record:
-- self.history.beg(rpmdbv, using_pkgs, list(self.tsInfo))
--
-+ if self.conf.history_record and not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST):
-+ 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]
-+ lastdbv = self.history.last()
-+ if lastdbv is not None:
-+ lastdbv = lastdbv.end_rpmdbversion
-+ rpmdb_problems = []
-+ if lastdbv is None or rpmdbv != lastdbv:
-+ txmbrs = self.tsInfo.getMembersWithState(None, TS_REMOVE_STATES)
-+ ignore_pkgs = [txmbr.po for txmbr in txmbrs]
-+ output_warn = lastdbv is not None
-+ rpmdb_problems = self._rpmdb_warn_checks(warn=output_warn,
-+ ignore_pkgs=ignore_pkgs)
-+ cmdline = None
-+ if hasattr(self, 'args') and self.args:
-+ cmdline = ' '.join(self.args)
-+ elif hasattr(self, 'cmds') and self.cmds:
-+ cmdline = ' '.join(self.cmds)
-+ self.history.beg(rpmdbv, using_pkgs, list(self.tsInfo),
-+ self.skipped_packages, rpmdb_problems, cmdline)
-+ # write out our config and repo data to additional history info
-+ self._store_config_in_history()
-+
-+ self.plugins.run('historybegin')
- # Just before we update the transaction, update what we think the
- # rpmdb will look like. This needs to be done before the run, so that if
- # "something" happens and the rpmdb is different from what we think it
-@@ -1196,10 +1358,18 @@ class YumBase(depsolve.Depsolve):
- self.verbose_logger.debug(errstring)
- resultobject.return_code = 1
- else:
-- if self.conf.history_record:
-+ if self.conf.history_record and not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST):
- herrors = [to_unicode(to_str(x)) for x in errors]
-+ self.plugins.run('historyend')
- self.history.end(rpmdbv, 2, errors=herrors)
-- raise Errors.YumBaseError, errors
-+
-+
-+ self.logger.critical(_("Transaction couldn't start:"))
-+ for e in errors:
-+ self.logger.critical(e[0]) # should this be 'to_unicoded'?
-+ raise Errors.YumRPMTransError(msg=_("Could not run transaction."),
-+ errors=errors)
-+
-
- if not self.conf.keepcache:
- self.cleanUsedHeadersPackages()
-@@ -1215,7 +1385,8 @@ class YumBase(depsolve.Depsolve):
- self.rpmdb.dropCachedData() # drop out the rpm cache so we don't step on bad hdr indexes
- self.plugins.run('posttrans')
- # sync up what just happened versus what is in the rpmdb
-- self.verifyTransaction(resultobject)
-+ if not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST):
-+ self.verifyTransaction(resultobject)
- return resultobject
-
- def verifyTransaction(self, resultobject=None):
-@@ -1234,6 +1405,7 @@ class YumBase(depsolve.Depsolve):
- # and the install reason
-
- self.rpmdb.dropCachedData()
-+ self.plugins.run('preverifytrans')
- for txmbr in self.tsInfo:
- if txmbr.output_state in TS_INSTALL_STATES:
- if not self.rpmdb.contains(po=txmbr.po):
-@@ -1247,7 +1419,9 @@ class YumBase(depsolve.Depsolve):
- po.yumdb_info.from_repo = rpo.repoid
- po.yumdb_info.reason = txmbr.reason
- po.yumdb_info.releasever = self.conf.yumvar['releasever']
-- if hasattr(self, 'cmds') and self.cmds:
-+ if hasattr(self, 'args') and self.args:
-+ po.yumdb_info.command_line = ' '.join(self.args)
-+ elif hasattr(self, 'cmds') and self.cmds:
- po.yumdb_info.command_line = ' '.join(self.cmds)
- csum = rpo.returnIdSum()
- if csum is not None:
-@@ -1271,7 +1445,28 @@ class YumBase(depsolve.Depsolve):
- 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]
-+ elif txmbr.downgrades:
-+ opo = txmbr.downgrades[0]
-+ else:
-+ 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
-+
-+ # Remove old ones after installing new ones, so we can copy values.
-+ for txmbr in self.tsInfo:
-+ if txmbr.output_state in TS_INSTALL_STATES:
-+ pass
- elif txmbr.output_state in TS_REMOVE_STATES:
- if self.rpmdb.contains(po=txmbr.po):
- if not self.tsInfo.getMembersWithState(pkgtup=txmbr.pkgtup,
-@@ -1286,10 +1481,12 @@ class YumBase(depsolve.Depsolve):
- else:
- self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po)
-
-- if self.conf.history_record:
-+ self.plugins.run('postverifytrans')
-+ if self.conf.history_record and not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST):
- ret = -1
- if resultobject is not None:
- ret = resultobject.return_code
-+ self.plugins.run('historyend')
- self.history.end(self.rpmdb.simpleVersion(main_only=True)[0], ret)
- self.rpmdb.dropCachedData()
-
-@@ -1383,7 +1580,12 @@ class YumBase(depsolve.Depsolve):
-
- mypid=str(os.getpid())
- while not self._lock(lockfile, mypid, 0644):
-- fd = open(lockfile, 'r')
-+ try:
-+ fd = open(lockfile, 'r')
-+ except (IOError, OSError), e:
-+ msg = _("Could not open lock %s: %s") % (lockfile, e)
-+ raise Errors.LockError(1, msg)
-+
- try: oldpid = int(fd.readline())
- except ValueError:
- # bogus data in the pid file. Throw away.
-@@ -1482,7 +1684,7 @@ class YumBase(depsolve.Depsolve):
- os.unlink(fo)
-
- if raiseError:
-- msg = _('Package does not match intended download. Suggestion: run yum clean metadata')
-+ msg = _('Package does not match intended download. Suggestion: run yum --enablerepo=%s clean metadata') % po.repo.id
- raise URLGrabError(-1, msg)
- else:
- return False
-@@ -1820,7 +2022,7 @@ class YumBase(depsolve.Depsolve):
- return self._cleanFiles(exts, 'cachedir', 'metadata')
-
- def cleanRpmDB(self):
-- cachedir = self.conf.cachedir + "/installed/"
-+ cachedir = self.conf.persistdir + "/rpmdb-indexes/"
- if not os.path.exists(cachedir):
- filelist = []
- else:
-@@ -2012,7 +2214,6 @@ class YumBase(depsolve.Depsolve):
- elif pkgnarrow == 'recent':
- now = time.time()
- recentlimit = now-(self.conf.recent*86400)
-- ftimehash = {}
- if showdups:
- avail = self.pkgSack.returnPackages(patterns=patterns,
- ignore_case=ic)
-@@ -2024,15 +2225,7 @@ class YumBase(depsolve.Depsolve):
- avail = []
-
- for po in avail:
-- ftime = int(po.filetime)
-- if ftime > recentlimit:
-- if not ftimehash.has_key(ftime):
-- ftimehash[ftime] = [po]
-- else:
-- ftimehash[ftime].append(po)
--
-- for sometime in ftimehash:
-- for po in ftimehash[sometime]:
-+ if int(po.filetime) > recentlimit:
- recent.append(po)
-
-
-@@ -2090,10 +2283,7 @@ class YumBase(depsolve.Depsolve):
- the search keys in the results. """
- sql_fields = []
- for f in fields:
-- if RPM_TO_SQLITE.has_key(f):
-- sql_fields.append(RPM_TO_SQLITE[f])
-- else:
-- sql_fields.append(f)
-+ sql_fields.append(RPM_TO_SQLITE.get(f, f))
-
- # yield the results in order of most terms matched first
- sorted_lists = {} # count_of_matches = [(pkgobj,
-@@ -2163,10 +2353,10 @@ class YumBase(depsolve.Depsolve):
-
- # do the ones we already have
- for item in sorted_lists.values():
-- for pkg, keys, values in item:
-+ for pkg, k, v in item:
- if pkg not in results_by_pkg:
- results_by_pkg[pkg] = []
-- results_by_pkg[pkg].append((keys,values))
-+ results_by_pkg[pkg].append((k,v))
-
- # take our existing dict-by-pkg and make the dict-by-count for
- # this bizarro sorted_lists format
-@@ -2175,9 +2365,9 @@ class YumBase(depsolve.Depsolve):
- for pkg in results_by_pkg:
- totkeys = []
- totvals = []
-- for (keys, values) in results_by_pkg[pkg]:
-- totkeys.extend(keys)
-- totvals.extend(values)
-+ for (k, v) in results_by_pkg[pkg]:
-+ totkeys.extend(k)
-+ totvals.extend(v)
-
- totkeys = misc.unique(totkeys)
- totvals = misc.unique(totvals)
-@@ -2238,7 +2428,7 @@ class YumBase(depsolve.Depsolve):
- for (po, matched_strings) in match_gen:
- if callback:
- callback(po, matched_strings)
-- if not matches.has_key(po):
-+ if po not in matches:
- matches[po] = []
-
- matches[po].extend(matched_strings)
-@@ -2514,8 +2704,8 @@ class YumBase(depsolve.Depsolve):
- txmbr.groups.append(thisgroup.groupid)
- self.tsInfo.conditionals[cond].append(txmbr.po)
- continue
-- # Otherwise we hook into tsInfo.add to make
-- # sure we'll catch it if its added later in this transaction
-+ # Otherwise we hook into tsInfo.add to make sure
-+ # we'll catch it if it's added later in this transaction
- pkgs = self.pkgSack.searchNevra(name=condreq)
- if pkgs:
- if self.arch.multilib:
-@@ -2530,7 +2720,7 @@ class YumBase(depsolve.Depsolve):
-
- pkgs = packagesNewestByName(pkgs)
-
-- if not self.tsInfo.conditionals.has_key(cond):
-+ if cond not in self.tsInfo.conditionals:
- self.tsInfo.conditionals[cond] = []
- self.tsInfo.conditionals[cond].extend(pkgs)
- return txmbrs_used
-@@ -2573,7 +2763,7 @@ class YumBase(depsolve.Depsolve):
- for pkg in self.tsInfo.conditionals.get(txmbr.name, []):
- self.tsInfo.remove(pkg.pkgtup)
-
-- def getPackageObject(self, pkgtup):
-+ def getPackageObject(self, pkgtup, allow_missing=False):
- """retrieves a packageObject from a pkgtuple - if we need
- to pick and choose which one is best we better call out
- to some method from here to pick the best pkgobj if there are
-@@ -2588,6 +2778,8 @@ class YumBase(depsolve.Depsolve):
- pkgs = self.pkgSack.searchPkgTuple(pkgtup)
-
- if len(pkgs) == 0:
-+ if allow_missing: # This can happen due to excludes after .up has
-+ return None # happened.
- raise Errors.DepError, _('Package tuple %s could not be found in packagesack') % str(pkgtup)
-
- if len(pkgs) > 1: # boy it'd be nice to do something smarter here FIXME
-@@ -2643,7 +2835,9 @@ class YumBase(depsolve.Depsolve):
- def returnPackagesByDep(self, depstring):
- """Pass in a generic [build]require string and this function will
- pass back the packages it finds providing that dep."""
--
-+
-+ if not depstring:
-+ return []
- results = self.pkgSack.searchProvides(depstring)
- return results
-
-@@ -2673,6 +2867,9 @@ class YumBase(depsolve.Depsolve):
- """Pass in a generic [build]require string and this function will
- pass back the installed packages it finds providing that dep."""
-
-+ if not depstring:
-+ return []
-+
- # parse the string out
- # either it is 'dep (some operator) e:v-r'
- # or /file/dep
-@@ -2781,9 +2978,53 @@ class YumBase(depsolve.Depsolve):
- we should install instead. Or None if there isn't one. """
- thispkgobsdict = self.up.checkForObsolete([po.pkgtup])
- if po.pkgtup in thispkgobsdict:
-- obsoleting = thispkgobsdict[po.pkgtup][0]
-- obsoleting_pkg = self.getPackageObject(obsoleting)
-- return obsoleting_pkg
-+ obsoleting = thispkgobsdict[po.pkgtup]
-+ oobsoleting = []
-+ # We want to keep the arch. of the obsoleted pkg. if possible.
-+ for opkgtup in obsoleting:
-+ if not canCoinstall(po.arch, opkgtup[1]):
-+ oobsoleting.append(opkgtup)
-+ if oobsoleting:
-+ obsoleting = oobsoleting
-+ if len(obsoleting) > 1:
-+ # Pick the first name, and run with it...
-+ first = obsoleting[0]
-+ obsoleting = [pkgtup for pkgtup in obsoleting
-+ if first[0] == pkgtup[0]]
-+ if len(obsoleting) > 1:
-+ # Lock to the latest version...
-+ def _sort_ver(x, y):
-+ n1,a1,e1,v1,r1 = x
-+ n2,a2,e2,v2,r2 = y
-+ return compareEVR((e1,v1,r1), (e2,v2,r2))
-+ obsoleting.sort(_sort_ver)
-+ first = obsoleting[0]
-+ obsoleting = [pkgtup for pkgtup in obsoleting
-+ if not _sort_ver(first, pkgtup)]
-+ if len(obsoleting) > 1:
-+ # Now do arch distance (see depsolve:compare_providers)...
-+ def _sort_arch_i(carch, a1, a2):
-+ res1 = archDifference(carch, a1)
-+ if not res1:
-+ return 0
-+ res2 = archDifference(carch, a2)
-+ if not res2:
-+ return 0
-+ return res1 - res2
-+ def _sort_arch(x, y):
-+ n1,a1,e1,v1,r1 = x
-+ n2,a2,e2,v2,r2 = y
-+ ret = _sort_arch_i(po.arch, a1, a2)
-+ if ret:
-+ return ret
-+ ret = _sort_arch_i(self.arch.bestarch, a1, a2)
-+ return ret
-+ obsoleting.sort(_sort_arch)
-+ for pkgtup in obsoleting:
-+ pkg = self.getPackageObject(pkgtup, allow_missing=True)
-+ if pkg is not None:
-+ return pkg
-+ return None
- return None
-
- def _test_loop(self, node, next_func):
-@@ -2846,6 +3087,17 @@ class YumBase(depsolve.Depsolve):
- pkgnames.update(thisgroup.packages)
- return self.pkgSack.searchNames(pkgnames)
-
-+ def _minus_deselect(self, pattern):
-+ """ Remove things from the transaction, like kickstart. """
-+ assert pattern[0] == '-'
-+ pat = pattern[1:]
-+
-+ if pat and pat[0] == '@':
-+ pat = pat[1:]
-+ return self.deselectGroup(pat)
-+
-+ return self.tsInfo.deselect(pat)
-+
- def _find_obsoletees(self, po):
- """ Return the pkgs. that are obsoleted by the po we pass in. """
- if not isinstance(po, YumLocalPackage):
-@@ -2854,11 +3106,9 @@ class YumBase(depsolve.Depsolve):
- installed_pkg = self.getInstalledPackageObject(inst_tup)
- yield installed_pkg
- else:
-- for (obs_n, obs_f, (obs_e, obs_v, obs_r)) in po.obsoletes:
-+ for obs_n in po.obsoletes_names:
- for pkg in self.rpmdb.searchNevra(name=obs_n):
-- installedtup = (pkg.name, 'EQ', (pkg.epoch,
-- pkg.ver, pkg.release))
-- if po.inPrcoRange('obsoletes', installedtup):
-+ if pkg.obsoletedBy([po]):
- yield pkg
-
- def _add_prob_flags(self, *flags):
-@@ -2888,7 +3138,10 @@ class YumBase(depsolve.Depsolve):
- raise Errors.InstallError, _('Nothing specified to install')
-
- if 'pattern' in kwargs:
-- if kwargs['pattern'][0] == '@':
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '-':
-+ return self._minus_deselect(kwargs['pattern'])
-+
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '@':
- return self._at_groupinstall(kwargs['pattern'])
-
- was_pattern = True
-@@ -2957,7 +3210,7 @@ class YumBase(depsolve.Depsolve):
-
- pkgbyname = {}
- for pkg in pkgs:
-- if not pkgbyname.has_key(pkg.name):
-+ if pkg.name not in pkgbyname:
- pkgbyname[pkg.name] = [ pkg ]
- else:
- pkgbyname[pkg.name].append(pkg)
-@@ -3017,18 +3270,23 @@ class YumBase(depsolve.Depsolve):
- # pull in foo.i586 when foo.x86_64 already obsoletes the pkg and
- # is already installed
- already_obs = None
-- poprovtup = (po.name, 'EQ', (po.epoch, po.ver, po.release))
-- for pkg in self.rpmdb.searchNevra(name=obsoleting_pkg.name):
-- if pkg.inPrcoRange('obsoletes', poprovtup):
-- already_obs = pkg
-- continue
-+ pkgs = self.rpmdb.searchNevra(name=obsoleting_pkg.name)
-+ pkgs = po.obsoletedBy(pkgs, limit=1)
-+ if pkgs:
-+ already_obs = pkgs[0]
-+ continue
-
- if already_obs:
- self.verbose_logger.warning(_('Package %s is obsoleted by %s which is already installed'),
- po, already_obs)
- else:
-+ if 'provides_for' in kwargs:
-+ if not obsoleting_pkg.provides_for(kwargs['provides_for']):
-+ self.verbose_logger.warning(_('Package %s is obsoleted by %s, but obsoleting package does not provide for requirements'),
-+ po.name, obsoleting_pkg.name)
-+ continue
- self.verbose_logger.warning(_('Package %s is obsoleted by %s, trying to install %s instead'),
-- po.name, obsoleting_pkg.name, obsoleting_pkg)
-+ po.name, obsoleting_pkg.name, obsoleting_pkg)
- tx_return.extend(self.install(po=obsoleting_pkg))
- continue
-
-@@ -3160,7 +3418,10 @@ class YumBase(depsolve.Depsolve):
- obsoletes = []
-
- for (obsoleting, installed) in obsoletes:
-- obsoleting_pkg = self.getPackageObject(obsoleting)
-+ obsoleting_pkg = self.getPackageObject(obsoleting,
-+ allow_missing=True)
-+ if obsoleting_pkg is None:
-+ continue
- topkg = self._test_loop(obsoleting_pkg, self._pkg2obspkg)
- if topkg is not None:
- obsoleting_pkg = topkg
-@@ -3173,10 +3434,13 @@ class YumBase(depsolve.Depsolve):
-
- for (new, old) in updates:
- if self.tsInfo.isObsoleted(pkgtup=old):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
- old)
- else:
-- tx_return.extend(self.update(po=self.getPackageObject(new)))
-+ new = self.getPackageObject(new, allow_missing=True)
-+ if new is None:
-+ continue
-+ tx_return.extend(self.update(po=new))
-
- return tx_return
-
-@@ -3195,7 +3459,10 @@ class YumBase(depsolve.Depsolve):
-
-
- elif 'pattern' in kwargs:
-- if kwargs['pattern'][0] == '@':
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '-':
-+ return self._minus_deselect(kwargs['pattern'])
-+
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '@':
- return self._at_groupinstall(kwargs['pattern'])
-
- (e, m, u) = self.rpmdb.matchPackageNames([kwargs['pattern']])
-@@ -3268,27 +3535,35 @@ class YumBase(depsolve.Depsolve):
- obs_tups = self.up.obsoleted_dict.get(installed_pkg.pkgtup, [])
- # This is done so we don't have to returnObsoletes(newest=True)
- # It's a minor UI problem for RHEL, but might as well dtrt.
-- obs_pkgs = [self.getPackageObject(tup) for tup in obs_tups]
-+ obs_pkgs = []
-+ for pkgtup in obs_tups:
-+ obsoleting_pkg = self.getPackageObject(pkgtup,
-+ allow_missing=True)
-+ if obsoleting_pkg is None:
-+ continue
-+ obs_pkgs.append(obsoleting_pkg)
- for obsoleting_pkg in packagesNewestByName(obs_pkgs):
- tx_return.extend(self.install(po=obsoleting_pkg))
- for available_pkg in availpkgs:
-- for obsoleted in self.up.obsoleting_dict.get(available_pkg.pkgtup, []):
-- obsoleted_pkg = self.getInstalledPackageObject(obsoleted)
-+ for obsoleted_pkg in self._find_obsoletees(available_pkg):
-+ obsoleted = obsoleted_pkg.pkgtup
- txmbr = self.tsInfo.addObsoleting(available_pkg, obsoleted_pkg)
- if requiringPo:
- txmbr.setAsDep(requiringPo)
- tx_return.append(txmbr)
- if self.tsInfo.isObsoleted(obsoleted):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Package is already obsoleted: %s.%s %s:%s-%s'), obsoleted)
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Package is already obsoleted: %s.%s %s:%s-%s') % obsoleted)
- else:
- txmbr = self.tsInfo.addObsoleted(obsoleted_pkg, available_pkg)
- tx_return.append(txmbr)
-
- for installed_pkg in instpkgs:
- for updating in self.up.updatesdict.get(installed_pkg.pkgtup, []):
-- po = self.getPackageObject(updating)
-+ po = self.getPackageObject(updating, allow_missing=True)
-+ if po is None:
-+ continue
- if self.tsInfo.isObsoleted(installed_pkg.pkgtup):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
- installed_pkg.pkgtup)
- # at this point we are going to mark the pkg to be installed, make sure
- # it doesn't obsolete anything. If it does, mark that in the tsInfo, too
-@@ -3315,11 +3590,11 @@ class YumBase(depsolve.Depsolve):
- continue
- for updated in self.up.updating_dict.get(available_pkg.pkgtup, []):
- if self.tsInfo.isObsoleted(updated):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
- updated)
- elif self._newer_update_in_trans(updated, available_pkg,
- tx_return):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s'),
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s') %
- updated)
-
- else:
-@@ -3341,11 +3616,11 @@ class YumBase(depsolve.Depsolve):
-
- for ipkg in pot_updated:
- if self.tsInfo.isObsoleted(ipkg.pkgtup):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
- ipkg.pkgtup)
- elif self._newer_update_in_trans(ipkg.pkgtup, available_pkg,
- tx_return):
-- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s'),
-+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s') %
- ipkg.pkgtup)
- elif ipkg.verLT(available_pkg):
- txmbr = self._add_up_txmbr(requiringPo, available_pkg, ipkg)
-@@ -3376,7 +3651,10 @@ class YumBase(depsolve.Depsolve):
- pkgs = [po]
- else:
- if 'pattern' in kwargs:
-- if kwargs['pattern'][0] == '@':
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '-':
-+ return self._minus_deselect(kwargs['pattern'])
-+
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '@':
- return self._at_groupremove(kwargs['pattern'])
-
- (e,m,u) = self.rpmdb.matchPackageNames([kwargs['pattern']])
-@@ -3406,7 +3684,12 @@ class YumBase(depsolve.Depsolve):
- if not kwargs.get('silence_warnings', False):
- self.logger.warning(_("No package matched to remove"))
-
-+ ts = self.rpmdb.readOnlyTS()
-+ kern_pkgtup = misc.get_running_kernel_pkgtup(ts)
- for po in pkgs:
-+ if self.conf.protected_packages and po.pkgtup == kern_pkgtup:
-+ self.logger.warning(_("Skipping the running kernel: %s") % po)
-+ continue
- txmbr = self.tsInfo.addErase(po)
- tx_return.append(txmbr)
-
-@@ -3443,6 +3726,11 @@ class YumBase(depsolve.Depsolve):
- self.verbose_logger.log(logginglevels.INFO_2,
- _('Examining %s: %s'), po.localpath, po)
-
-+ # apparently someone wanted to try to install a drpm as an rpm :(
-+ if po.hdr['payloadformat'] == 'drpm':
-+ self.logger.critical(_('Cannot localinstall deltarpm: %s. Skipping.'), pkg)
-+ return tx_return
-+
- # if by any chance we're a noncompat arch rpm - bail and throw out an error
- # FIXME -our archlist should be stored somewhere so we don't have to
- # do this: but it's not a config file sort of thing
-@@ -3452,6 +3740,12 @@ class YumBase(depsolve.Depsolve):
- self.logger.critical(_('Cannot add package %s to transaction. Not a compatible architecture: %s'), pkg, po.arch)
- return tx_return
-
-+ if self.conf.obsoletes:
-+ obsoleters = po.obsoletedBy(self.rpmdb.searchObsoletes(po.name))
-+ if obsoleters:
-+ self.logger.critical(_('Cannot install package %s. It is obsoleted by installed package %s'), po, obsoleters[0])
-+ return tx_return
-+
- # everything installed that matches the name
- installedByKey = self.rpmdb.searchNevra(name=po.name)
- # go through each package
-@@ -3513,7 +3807,9 @@ class YumBase(depsolve.Depsolve):
- # be fixed later but a fair bit of that is a pebkac and should be
- # said as "don't do that". potential 'fixme'
- for txmbr in tx_return:
-- if txmbr.po.obsoletes:
-+ # We don't want to do this twice, so only bother if the txmbr
-+ # doesn't already obsolete anything.
-+ if txmbr.po.obsoletes and not txmbr.obsoletes:
- for obs_pkg in self._find_obsoletees(txmbr.po):
- self.tsInfo.addObsoleted(obs_pkg, txmbr.po)
- txmbr.obsoletes.append(obs_pkg)
-@@ -3573,17 +3869,8 @@ class YumBase(depsolve.Depsolve):
- # then we really shouldn't go on
- new_members = []
- failed = []
-+ failed_pkgs = []
- for item in tx_mbrs[:]:
-- #FIXME future - if things in the rpm transaction handling get
-- # a bit finer-grained, then we should allow reinstalls of kernels
-- # for now, banned and dropped.
-- if self.allowedMultipleInstalls(item.po):
-- self.tsInfo.remove(item.pkgtup)
-- tx_mbrs.remove(item)
-- msg = _("Package %s is allowed multiple installs, skipping") % item.po
-- self.verbose_logger.log(logginglevels.INFO_2, msg)
-- continue
--
- # Make sure obsoletes processing is off, so we can reinstall()
- # pkgs that are obsolete.
- old_conf_obs = self.conf.obsoletes
-@@ -3597,11 +3884,12 @@ class YumBase(depsolve.Depsolve):
- self.tsInfo.remove(item.pkgtup)
- tx_mbrs.remove(item)
- failed.append(str(item.po))
-+ failed_pkgs.append(item.po)
- continue
- new_members.extend(members)
-
- if failed and not tx_mbrs:
-- raise Errors.ReinstallInstallError, _("Problem in reinstall: no package %s matched to install") % ", ".join(failed)
-+ raise Errors.ReinstallInstallError(_("Problem in reinstall: no package %s matched to install") % ", ".join(failed), failed_pkgs=failed_pkgs)
- tx_mbrs.extend(new_members)
- return tx_mbrs
-
-@@ -3670,7 +3958,10 @@ class YumBase(depsolve.Depsolve):
- if po:
- apkgs = [po]
- elif 'pattern' in kwargs:
-- if kwargs['pattern'][0] == '@':
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '-':
-+ return self._minus_deselect(kwargs['pattern'])
-+
-+ if kwargs['pattern'] and kwargs['pattern'][0] == '@':
- apkgs = self._at_groupdowngrade(kwargs['pattern'])
- doing_group_pkgs = True # Don't warn. about some things
- else:
-@@ -3946,6 +4237,28 @@ class YumBase(depsolve.Depsolve):
-
- return keys
-
-+ def _getKeyImportMessage(self, info, keyurl):
-+ 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'
-+ ' Userid : %s\n'
-+ ' Package: %s (%s)\n'
-+ ' From : %s') %
-+ (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'
-+ ' Userid: "%s"\n'
-+ ' From : %s') %
-+ (info['hexkeyid'], to_unicode(info['userid']),
-+ keyurl.replace("file://","")))
-+ self.logger.critical("%s", msg)
-+
- def getKeyForPackage(self, po, askcb = None, fullaskcb = None):
- """
- Retrieve a key for a package. If needed, prompt for if the key should
-@@ -3976,10 +4289,7 @@ class YumBase(depsolve.Depsolve):
- continue
-
- # Try installing/updating GPG key
-- self.logger.critical(_('Importing GPG key 0x%s "%s" from %s') %
-- (info['hexkeyid'],
-- to_unicode(info['userid']),
-- keyurl.replace("file://","")))
-+ self._getKeyImportMessage(info, keyurl)
- rc = False
- if self.conf.assumeyes:
- rc = True
-@@ -4003,13 +4313,13 @@ class YumBase(depsolve.Depsolve):
- self.logger.info(_('Key imported successfully'))
- key_installed = True
-
-- if not key_installed:
-- raise Errors.YumBaseError, \
-- _('The GPG keys listed for the "%s" repository are ' \
-- 'already installed but they are not correct for this ' \
-- 'package.\n' \
-- 'Check that the correct key URLs are configured for ' \
-- 'this repository.') % (repo.name)
-+ if not key_installed:
-+ raise Errors.YumBaseError, \
-+ _('The GPG keys listed for the "%s" repository are ' \
-+ 'already installed but they are not correct for this ' \
-+ 'package.\n' \
-+ 'Check that the correct key URLs are configured for ' \
-+ 'this repository.') % (repo.name)
-
- # Check if the newly installed keys helped
- result, errmsg = self.sigCheckPkg(po)
-@@ -4038,10 +4348,7 @@ class YumBase(depsolve.Depsolve):
- continue
-
- # Try installing/updating GPG key
-- self.logger.critical(_('Importing GPG key 0x%s "%s" from %s') %
-- (info['hexkeyid'],
-- to_unicode(info['userid']),
-- keyurl.replace("file://","")))
-+ self._getKeyImportMessage(info, keyurl)
- rc = False
- if self.conf.assumeyes:
- rc = True
-@@ -4062,14 +4369,12 @@ class YumBase(depsolve.Depsolve):
- self.logger.info(_('Key imported successfully'))
- key_installed = True
-
-- if not key_installed:
-- raise Errors.YumBaseError, \
-- _('The GPG keys listed for the "%s" repository are ' \
-- 'already installed but they are not correct for this ' \
-- 'package.\n' \
-- 'Check that the correct key URLs are configured for ' \
-- 'this repository.') % (repo.name)
--
-+ if not key_installed:
-+ raise Errors.YumBaseError, \
-+ _('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.') % (repo.name)
-
- def _limit_installonly_pkgs(self):
- """ Limit packages based on conf.installonly_limit, if any of the
-@@ -4114,22 +4419,31 @@ class YumBase(depsolve.Depsolve):
- # so self.rpmdb.ts should be valid.
- ts = self.rpmdb.readOnlyTS()
- (cur_kernel_v, cur_kernel_r) = misc.get_running_kernel_version_release(ts)
-- for instpkg in self.conf.installonlypkgs:
-- for m in self.tsInfo.getMembers():
-- if (m.name == instpkg or instpkg in m.po.provides_names) \
-- and m.ts_state in ('i', 'u'):
-- installed = self.rpmdb.searchNevra(name=m.name)
-- installed = _sort_and_filter_installonly(installed)
-- if len(installed) >= self.conf.installonly_limit - 1: # since we're adding one
-- numleft = len(installed) - self.conf.installonly_limit + 1
-- for po in installed:
-- if (po.version, po.release) == (cur_kernel_v, cur_kernel_r):
-- # don't remove running
-- continue
-- if numleft == 0:
-- break
-- toremove.append((po,m))
-- numleft -= 1
-+ install_only_names = set(self.conf.installonlypkgs)
-+ for m in self.tsInfo.getMembers():
-+ if m.ts_state not in ('i', 'u'):
-+ continue
-+ if m.reinstall:
-+ continue
-+
-+ po_names = set([m.name] + m.po.provides_names)
-+ if not po_names.intersection(install_only_names):
-+ continue
-+
-+ installed = self.rpmdb.searchNevra(name=m.name)
-+ installed = _sort_and_filter_installonly(installed)
-+ if len(installed) < self.conf.installonly_limit - 1:
-+ continue # we're adding one
-+
-+ numleft = len(installed) - self.conf.installonly_limit + 1
-+ for po in installed:
-+ if (po.version, po.release) == (cur_kernel_v, cur_kernel_r):
-+ # don't remove running
-+ continue
-+ if numleft == 0:
-+ break
-+ toremove.append((po,m))
-+ numleft -= 1
-
- for po,rel in toremove:
- txmbr = self.tsInfo.addErase(po)
-@@ -4312,9 +4626,7 @@ class YumBase(depsolve.Depsolve):
- newrepo = yumRepo.YumRepository(repoid)
- newrepo.name = repoid
- newrepo.basecachedir = self.conf.cachedir
-- var_convert = True
-- if kwargs.has_key('variable_convert') and not kwargs['variable_convert']:
-- var_convert = False
-+ var_convert = kwargs.get('variable_convert', True)
-
- if baseurls:
- replaced = []
-@@ -4351,13 +4663,17 @@ class YumBase(depsolve.Depsolve):
- self.repos.enableRepo(newrepo.id)
- return newrepo
-
-- def setCacheDir(self, force=False, tmpdir='/var/tmp', reuse=True,
-+ def setCacheDir(self, force=False, tmpdir=None, reuse=True,
- suffix='/$basearch/$releasever'):
- ''' Set a new cache dir, using misc.getCacheDir() and var. replace
- on suffix. '''
-
- if not force and os.geteuid() == 0:
- return True # We are root, not forced, so happy with the global dir.
-+ if tmpdir is None:
-+ tmpdir = os.getenv('TMPDIR')
-+ if tmpdir is None: # Note that TMPDIR isn't exported by default :(
-+ tmpdir = '/var/tmp'
- try:
- cachedir = misc.getCacheDir(tmpdir, reuse)
- except (IOError, OSError), e:
-@@ -4368,8 +4684,10 @@ class YumBase(depsolve.Depsolve):
- return False # Tried, but failed, to get a "user" cachedir
-
- cachedir += varReplace(suffix, self.conf.yumvar)
-- self.repos.setCacheDir(cachedir)
-- self.rpmdb.setCacheDir(cachedir)
-+ if hasattr(self, 'prerepoconf'):
-+ self.prerepoconf.cachedir = cachedir
-+ else:
-+ self.repos.setCacheDir(cachedir)
- self.conf.cachedir = cachedir
- return True # We got a new cache dir
-
-@@ -4380,7 +4698,7 @@ class YumBase(depsolve.Depsolve):
-
- if pkg1.name != pkg2.name:
- return False
-- if not pkg1.EVR > pkg2.EVR:
-+ if pkg1.verLE(pkg2):
- return False
- if pkg1.arch not in self.arch.archlist:
- return False
-@@ -4391,3 +4709,16 @@ class YumBase(depsolve.Depsolve):
-
- return True
-
-+ def _store_config_in_history(self):
-+ self.history.write_addon_data('config-main', self.conf.dump())
-+ myrepos = ''
-+ for repo in self.repos.listEnabled():
-+ myrepos += repo.dump()
-+ myrepos += '\n'
-+ self.history.write_addon_data('config-repos', myrepos)
-+
-+ def verify_plugins_cb(self, verify_package):
-+ """ Callback to call a plugin hook for pkg.verify(). """
-+ self.plugins.run('verify_package', verify_package=verify_package)
-+ return verify_package
-+
-diff --git a/yum/comps.py b/yum/comps.py
-index bbc1ac9..5ccfba2 100755
---- a/yum/comps.py
-+++ b/yum/comps.py
-@@ -16,11 +16,6 @@
- import types
- import sys
- from constants import *
--try:
-- from xml.etree import cElementTree
--except ImportError:
-- import cElementTree
--iterparse = cElementTree.iterparse
- from Errors import CompsException
- #FIXME - compsexception isn't caught ANYWHERE so it's pointless to raise it
- # switch all compsexceptions to grouperrors after api break
-@@ -28,14 +23,12 @@ import fnmatch
- import re
- from yum.i18n import to_unicode
- from misc import get_my_lang_code
-+from yum.misc import cElementTree_iterparse as iterparse
-
- lang_attr = '{http://www.w3.org/XML/1998/namespace}lang'
-
- def parse_boolean(strng):
-- if BOOLEAN_STATES.has_key(strng.lower()):
-- return BOOLEAN_STATES[strng.lower()]
-- else:
-- return False
-+ return BOOLEAN_STATES.get(strng.lower(), False)
-
- def parse_number(strng):
- return int(strng)
-@@ -235,11 +228,11 @@ class Group(CompsObj):
-
- # name and description translations
- for lang in obj.translated_name:
-- if not self.translated_name.has_key(lang):
-+ if lang not in self.translated_name:
- self.translated_name[lang] = obj.translated_name[lang]
-
- for lang in obj.translated_description:
-- if not self.translated_description.has_key(lang):
-+ if lang not in self.translated_description:
- self.translated_description[lang] = obj.translated_description[lang]
-
- def xml(self):
-@@ -348,11 +341,11 @@ class Category(CompsObj):
-
- # name and description translations
- for lang in obj.translated_name:
-- if not self.translated_name.has_key(lang):
-+ if lang not in self.translated_name:
- self.translated_name[lang] = obj.translated_name[lang]
-
- for lang in obj.translated_description:
-- if not self.translated_description.has_key(lang):
-+ if lang not in self.translated_description:
- self.translated_description[lang] = obj.translated_description[lang]
-
- def xml(self):
-@@ -424,7 +417,7 @@ class Comps(object):
-
- for item in group_pattern.split(','):
- item = item.strip()
-- if self._groups.has_key(item):
-+ if item in self._groups:
- thisgroup = self._groups[item]
- returns[thisgroup.groupid] = thisgroup
- continue
-@@ -490,14 +483,14 @@ class Comps(object):
- return returns.values()
-
- def add_group(self, group):
-- if self._groups.has_key(group.groupid):
-+ if group.groupid in self._groups:
- thatgroup = self._groups[group.groupid]
- thatgroup.add(group)
- else:
- self._groups[group.groupid] = group
-
- def add_category(self, category):
-- if self._categories.has_key(category.categoryid):
-+ if category.categoryid in self._categories:
- thatcat = self._categories[category.categoryid]
- thatcat.add(category)
- else:
-@@ -557,7 +550,7 @@ class Comps(object):
- check_pkgs = group.optional_packages.keys() + group.default_packages.keys() + group.conditional_packages.keys()
- group.installed = False
- for pkgname in check_pkgs:
-- if inst_pkg_names.has_key(pkgname):
-+ if pkgname in inst_pkg_names:
- group.installed = True
- break
-
-diff --git a/yum/config.py b/yum/config.py
-index ad8db7e..650d7b9 100644
---- a/yum/config.py
-+++ b/yum/config.py
-@@ -40,7 +40,7 @@ if not _use_iniparse:
- import rpmUtils.transaction
- import Errors
- import types
--from misc import get_uuid
-+from misc import get_uuid, read_in_items_from_dot_dir
-
- # Alter/patch these to change the default checking...
- __pkgs_gpgcheck_default__ = False
-@@ -55,9 +55,11 @@ class Option(object):
- definition easy and consise.
- '''
-
-- def __init__(self, default=None):
-+ def __init__(self, default=None, parse_default=False):
- self._setattrname()
- self.inherit = False
-+ if parse_default:
-+ default = self.parse(default)
- self.default = default
-
- def _setattrname(self):
-@@ -87,7 +89,7 @@ class Option(object):
- @param value: The value to set the option to.
- @return: Nothing.
- '''
-- # Only try to parse if its a string
-+ # Only try to parse if it's a string
- if isinstance(value, basestring):
- try:
- value = self.parse(value)
-@@ -155,13 +157,14 @@ class ListOption(Option):
- An option containing a list of strings.
- """
-
-- def __init__(self, default=None):
-+ def __init__(self, default=None, parse_default=False):
- if default is None:
- default = []
-- super(ListOption, self).__init__(default)
-+ super(ListOption, self).__init__(default, parse_default)
-
- def parse(self, s):
-- """Converts a string from the config file to a workable list
-+ """Converts a string from the config file to a workable list, parses
-+ globdir: paths as foo.d-style dirs
-
- Commas and spaces are used as separators for the list
- """
-@@ -169,7 +172,15 @@ class ListOption(Option):
- # to sub the \n with a space and then read the lines
- s = s.replace('\n', ' ')
- s = s.replace(',', ' ')
-- return s.split()
-+ results = []
-+ for item in s.split():
-+ if item.startswith('glob:'):
-+ thisglob = item.replace('glob:', '')
-+ results.extend(read_in_items_from_dot_dir(thisglob))
-+ continue
-+ results.append(item)
-+
-+ return results
-
- def tostring(self, value):
- return '\n '.join(value)
-@@ -217,8 +228,9 @@ class UrlListOption(ListOption):
- Option for handling lists of URLs with validation of the URL scheme.
- '''
-
-- def __init__(self, default=None, schemes=('http', 'ftp', 'file', 'https')):
-- super(UrlListOption, self).__init__(default)
-+ def __init__(self, default=None, schemes=('http', 'ftp', 'file', 'https'),
-+ parse_default=False):
-+ super(UrlListOption, self).__init__(default, parse_default)
-
- # Hold a UrlOption instance to assist with parsing
- self._urloption = UrlOption(schemes=schemes)
-@@ -228,8 +240,15 @@ class UrlListOption(ListOption):
- s = s.replace('\n', ' ')
- s = s.replace(',', ' ')
- items = [ item.replace(' ', '%20') for item in shlex.split(s) ]
-- s = ' '.join(items)
-- for url in super(UrlListOption, self).parse(s):
-+ tmp = []
-+ for item in items:
-+ if item.startswith('glob:'):
-+ thisglob = item.replace('glob:', '')
-+ tmp.extend(read_in_items_from_dot_dir(thisglob))
-+ continue
-+ tmp.append(item)
-+
-+ for url in super(UrlListOption, self).parse(' '.join(tmp)):
- out.append(self._urloption.parse(url))
- return out
-
-@@ -601,7 +620,8 @@ class StartupConf(BaseConfig):
- pluginconfpath = ListOption(['/etc/yum/pluginconf.d'])
- gaftonmode = BoolOption(False)
- syslog_ident = Option()
-- syslog_facility = Option('LOG_DAEMON')
-+ syslog_facility = Option('LOG_USER')
-+ syslog_device = Option('/dev/log')
- persistdir = Option('/var/lib/yum')
-
- class YumConf(StartupConf):
-@@ -656,6 +676,7 @@ class YumConf(StartupConf):
- enabled = BoolOption(True)
- enablegroups = BoolOption(True)
- enable_group_conditionals = BoolOption(True)
-+ groupremove_leaf_only = BoolOption(False)
- group_package_types = ListOption(['mandatory', 'default'])
-
- timeout = FloatOption(30.0) # FIXME: Should use variation of SecondsOption
-@@ -712,6 +733,10 @@ class YumConf(StartupConf):
-
- rpmverbosity = Option('info')
-
-+ protected_packages = ListOption("yum, glob:/etc/yum/protected.d/*.conf",
-+ parse_default=True)
-+ exit_on_lock = BoolOption(False)
-+
- _reposlist = []
-
- def dump(self):
-@@ -728,7 +753,7 @@ class YumConf(StartupConf):
- if isinstance(getattr(self, attr), types.MethodType):
- continue
- res = getattr(self, attr)
-- if not res:
-+ if not res and type(res) not in (type(False), type(0)):
- res = ''
- if type(res) == types.ListType:
- res = ',\n '.join(res)
-@@ -855,13 +880,15 @@ def readMainConfig(startupconf):
- yumvars['arch'] = startupconf.arch
- yumvars['releasever'] = startupconf.releasever
- yumvars['uuid'] = startupconf.uuid
-+ # Note: We don't setup the FS yumvars here, because we want to be able to
-+ # use the core yumvars in persistdir. Which is the base of FS yumvars.
-
- # Read [main] section
- yumconf = YumConf()
- yumconf.populate(startupconf._parser, 'main')
-
- # Apply the installroot to directory options
-- for option in ('cachedir', 'logfile', 'persistdir'):
-+ def _apply_installroot(yumconf, option):
- path = getattr(yumconf, option)
- ir_path = yumconf.installroot + path
- ir_path = ir_path.replace('//', '/') # os.path.normpath won't fix this and
-@@ -869,6 +896,27 @@ def readMainConfig(startupconf):
- ir_path = varReplace(ir_path, yumvars)
- setattr(yumconf, option, ir_path)
-
-+ # Read the FS yumvars
-+ try:
-+ dir_fsvars = yumconf.installroot + "/etc/yum/vars/"
-+ fsvars = os.listdir(dir_fsvars)
-+ except OSError:
-+ fsvars = []
-+ for fsvar in fsvars:
-+ if os.path.islink(dir_fsvars + fsvar):
-+ continue
-+ try:
-+ val = open(dir_fsvars + fsvar).readline()
-+ if val and val[-1] == '\n':
-+ val = val[:-1]
-+ except (OSError, IOError):
-+ continue
-+ yumvars[fsvar] = val
-+
-+ # These can use the above FS yumvars
-+ for option in ('cachedir', 'logfile', 'persistdir'):
-+ _apply_installroot(yumconf, option)
-+
- # Add in some extra attributes which aren't actually configuration values
- yumconf.yumvar = yumvars
- yumconf.uid = 0
-@@ -953,6 +1001,9 @@ def _getsysver(installroot, distroverpkg):
- else:
- raise Errors.YumBaseError("Error: " + str(e))
- raise Errors.YumBaseError("Error: " + str(e))
-+ except rpm.error, e:
-+ # This is the "new" code for "cannot open rpmdb", 4.8.0 ish
-+ raise Errors.YumBaseError("Error: " + str(e))
- # we're going to take the first one - if there is more than one of these
- # then the user needs a beating
- if idx.count() == 0:
-@@ -977,13 +1028,21 @@ def writeRawRepoFile(repo,only=None):
- return
-
- ini = INIConfig(open(repo.repofile))
-+ # b/c repoids can have $values in them we need to map both ways to figure
-+ # out which one is which
-+ section_id = repo.id
-+ if repo.id not in ini._sections:
-+ for sect in ini._sections.keys():
-+ if varReplace(sect, repo.yumvar) == repo.id:
-+ section_id = sect
-+
- # Updated the ConfigParser with the changed values
- cfgOptions = repo.cfg.options(repo.id)
- for name,value in repo.iteritems():
- option = repo.optionobj(name)
- if option.default != value or name in cfgOptions :
- if only == None or name in only:
-- ini[repo.id][name] = option.tostring(value)
-+ ini[section_id][name] = option.tostring(value)
- fp =file(repo.repofile,"w")
- fp.write(str(ini))
- fp.close()
-diff --git a/yum/depsolve.py b/yum/depsolve.py
-index 11c9f29..e9b3fa7 100644
---- a/yum/depsolve.py
-+++ b/yum/depsolve.py
-@@ -27,6 +27,7 @@ import rpmUtils.miscutils
- from rpmUtils.arch import archDifference, canCoinstall
- import misc
- from misc import unique, version_tuple_to_string
-+from transactioninfo import TransactionMember
- import rpm
-
- from packageSack import ListPackageSack
-@@ -65,7 +66,6 @@ class Depsolve(object):
- """
-
- def __init__(self):
-- packages.base = self
- self._ts = None
- self._tsInfo = None
- self.dsCallback = None
-@@ -138,6 +138,9 @@ class Depsolve(object):
- 'test': rpm.RPMTRANS_FLAG_TEST,
- 'justdb': rpm.RPMTRANS_FLAG_JUSTDB,
- 'repackage': rpm.RPMTRANS_FLAG_REPACKAGE}
-+ # This is only in newer rpm.org releases
-+ if hasattr(rpm, 'RPMTRANS_FLAG_NOCONTEXTS'):
-+ ts_flags_to_rpm['nocontexts'] = rpm.RPMTRANS_FLAG_NOCONTEXTS
-
- self._ts.setFlags(0) # reset everything.
-
-@@ -221,14 +224,20 @@ class Depsolve(object):
- self.ts.addInstall(hdr, (hdr, rpmfile), txmbr.ts_state)
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('Adding Package %s in mode %s'), txmbr.po, txmbr.ts_state)
-- if self.dsCallback:
-- self.dsCallback.pkgAdded(txmbr.pkgtup, txmbr.ts_state)
-+ if self.dsCallback:
-+ dscb_ts_state = txmbr.ts_state
-+ if dscb_ts_state == 'u' and txmbr.downgrades:
-+ dscb_ts_state = 'd'
-+ self.dsCallback.pkgAdded(txmbr.pkgtup, dscb_ts_state)
-
- elif txmbr.ts_state in ['e']:
- if (txmbr.pkgtup, txmbr.ts_state) in ts_elem:
- continue
- self.ts.addErase(txmbr.po.idx)
-- if self.dsCallback: self.dsCallback.pkgAdded(txmbr.pkgtup, 'e')
-+ if self.dsCallback:
-+ if txmbr.downgraded_by:
-+ continue
-+ self.dsCallback.pkgAdded(txmbr.pkgtup, 'e')
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('Removing Package %s'), txmbr.po)
-
-@@ -511,18 +520,26 @@ class Depsolve(object):
- if pkgmode in ['i', 'u']:
- self.verbose_logger.log(logginglevels.DEBUG_2,
- _('%s already in ts, skipping this one'), pkg)
-- # FIXME: Remove this line, if it is not needed ?
-- # checkdeps = 1
- self._last_req = pkg
- return checkdeps, missingdep
-
- # find the best one
-
- # try updating the already install pkgs
-+ results = []
- for pkg in provSack.returnNewestByName():
-- results = self.update(requiringPo=requiringPo, name=pkg.name,
-- epoch=pkg.epoch, version=pkg.version,
-- rel=pkg.rel)
-+ tresults = self.update(requiringPo=requiringPo, name=pkg.name,
-+ epoch=pkg.epoch, version=pkg.version,
-+ rel=pkg.rel)
-+ # Note that this does "interesting" things with multilib. We can
-+ # have say A.i686 and A.x86_64, and if we hit "A.i686" first,
-+ # .update() will actually update "A.x86_64" which will then fail
-+ # the pkg == txmbr.po test below, but then they'll be nothing to
-+ # update when we get around to A.x86_64 ... so this entire loop
-+ # fails.
-+ # Keeping results through the loop and thus. testing each pkg
-+ # against all txmbr's from previous runs "fixes" this.
-+ results.extend(tresults)
- for txmbr in results:
- if pkg == txmbr.po:
- checkdeps = True
-@@ -547,7 +564,6 @@ class Depsolve(object):
- return checkdeps, missingdep
-
-
--
- # FIXME - why can't we look up in the transaction set for the requiringPkg
- # and know what needs it that way and provide a more sensible dep structure in the txmbr
- inst = self.rpmdb.searchNevra(name=best.name, arch=best.arch)
-@@ -558,23 +574,30 @@ class Depsolve(object):
- txmbr = self.tsInfo.addUpdate(best, inst[0])
- txmbr.setAsDep(po=requiringPo)
- txmbr.reason = "dep"
-+ checkdeps = True
- self._last_req = best
- else:
- self.verbose_logger.debug(_('TSINFO: Marking %s as install for %s'), best,
- requiringPo)
-- # FIXME: Don't we want .install() here, so obsoletes get done?
-- txmbr = self.tsInfo.addInstall(best)
-- txmbr.setAsDep(po=requiringPo)
-- txmbr.reason = "dep"
-- self._last_req = best
--
-- # if we had other packages with this name.arch that we found
-- # before, they're not going to be installed anymore, so we
-- # should mark them to be re-checked
-- if best.pkgtup in upgraded:
-- map(self.tsInfo.remove, upgraded[best.pkgtup])
--
-- checkdeps = 1
-+ reqtuple = misc.string_to_prco_tuple(needname + str(needflags) + needversion)
-+ txmbrs = self.install(best, provides_for=reqtuple)
-+ for txmbr in txmbrs:
-+ txmbr.setAsDep(po=requiringPo)
-+ txmbr.reason = "dep"
-+ self._last_req = txmbr.po
-+
-+ # if we had other packages with this name.arch that we found
-+ # before, they're not going to be installed anymore, so we
-+ # should mark them to be re-checked
-+ if txmbr.pkgtup in upgraded:
-+ map(self.tsInfo.remove, upgraded[txmbr.pkgtup])
-+ if not txmbrs:
-+ missingdep = 1
-+ checkdeps = 0
-+ msg = self._err_missing_requires(requiringPo, requirement)
-+ errorlist.append(msg)
-+ else:
-+ checkdeps = 1
-
- return checkdeps, missingdep
-
-@@ -753,10 +776,9 @@ class Depsolve(object):
- self.verbose_logger.log(logginglevels.DEBUG_4," --> %s" % err)
- return (1, errors)
-
-- if len(self.tsInfo) > 0:
-- if not len(self.tsInfo):
-- return (0, [_('Success - empty transaction')])
-- return (2, [_('Success - deps resolved')])
-+ if not len(self.tsInfo):
-+ return (0, [_('Success - empty transaction')])
-+ return (2, [_('Success - deps resolved')])
-
- def _resolveRequires(self, errors):
- any_missing = False
-@@ -768,7 +790,14 @@ class Depsolve(object):
- for txmbr in self.tsInfo.getUnresolvedMembers():
-
- if self.dsCallback and txmbr.ts_state:
-- self.dsCallback.pkgAdded(txmbr.pkgtup, txmbr.ts_state)
-+ dscb_ts_state = txmbr.ts_state
-+ if txmbr.downgrades:
-+ dscb_ts_state = 'd'
-+ if dscb_ts_state == 'u' and txmbr.reinstall:
-+ dscb_ts_state = 'r'
-+ if dscb_ts_state == 'u' and not txmbr.updates:
-+ dscb_ts_state = 'i'
-+ self.dsCallback.pkgAdded(txmbr.pkgtup, dscb_ts_state)
- self.verbose_logger.log(logginglevels.DEBUG_2,
- _("Checking deps for %s") %(txmbr,))
-
-@@ -790,6 +819,14 @@ class Depsolve(object):
-
- missing_in_pkg = False
- for po, dep in thisneeds:
-+ if txmbr.downgraded_by: # Don't try to chain remove downgrades
-+ msg = self._err_missing_requires(po, dep)
-+ self.verbose_logger.log(logginglevels.DEBUG_2, msg)
-+ errors.append(msg)
-+ self.po_with_problems.add((po,self._working_po,errors[-1]))
-+ missing_in_pkg = 1
-+ continue
-+
- (checkdep, missing, errormsgs) = self._processReq(po, dep)
- CheckDeps |= checkdep
- errors += errormsgs
-@@ -850,7 +887,11 @@ class Depsolve(object):
-
- self.verbose_logger.log(logginglevels.DEBUG_2, _("looking for %s as a requirement of %s"), req, txmbr)
- provs = self.tsInfo.getProvides(*req)
-- if not provs:
-+ # The self provides should mostly be caught before here now, but
-+ # at least config() crack still turns up, it's not that
-+ # expensive to just do it, and we really don't want "false positive"
-+ # requires for compare_providers().
-+ if not provs and not txmbr.po.inPrcoRange('provides', req):
- ret.append( (txmbr.po, self._prco_req2req(req)) )
- continue
-
-@@ -881,11 +922,22 @@ class Depsolve(object):
- for prov in provs:
- if prov[0].startswith('rpmlib('): # ignore rpmlib() provides
- continue
-- if newpoprovs.has_key(prov):
-+ if prov in newpoprovs:
- continue
- # FIXME: This is probably the best place to fix the postfix rename
- # problem long term (post .21) ... see compare_providers.
- for pkg, hits in self.tsInfo.getRequires(*prov).iteritems():
-+ # See the docs, this is to make groupremove "more useful".
-+ if (self.conf.groupremove_leaf_only and txmbr.groups and
-+ txmbr.output_state == TS_ERASE):
-+ cb = self.dsCallback
-+ if cb and hasattr(cb, 'groupRemoveReq'):
-+ cb.groupRemoveReq(pkg, hits)
-+ # We don't undo anything else here ... hopefully that's
-+ # fine.
-+ self.tsInfo.remove(txmbr.pkgtup)
-+ return []
-+
- for hit in hits:
- # See if the update solves the problem...
- found = False
-@@ -1116,11 +1168,15 @@ class Depsolve(object):
- pkgs = unique_nevra_pkgs.values()
-
- pkgresults = {}
-- ipkgresults = {}
-
- for pkg in pkgs:
- pkgresults[pkg] = 0
--
-+
-+ # hand this off to our plugins
-+ self.plugins.run("compare_providers", providers_dict=pkgresults,
-+ reqpo=reqpo)
-+
-+ for pkg in pkgresults.keys():
- rpmdbpkgs = self.rpmdb.searchNevra(name=pkg.name)
- if rpmdbpkgs:
- # We only want to count things as "installed" if they are
-@@ -1134,23 +1190,17 @@ class Depsolve(object):
- # we are giving an edge to is not obsoleted by
- # something else in the transaction. :(
- # there are many ways I hate this - this is but one
-- ipkgresults[pkg] = 5
-+ pkgresults[pkg] += 5
-+ elif newest.verEQ(pkg):
-+ # We get here from bestPackagesFromList(), give a giant
-+ # bump to stuff that is already installed.
-+ pkgresults[pkg] += 1000
- else:
- # just b/c they're not installed pkgs doesn't mean they should
- # be ignored entirely. Just not preferred
-- ipkgresults[pkg] = 0
--
-- # This is probably only for "renames". What happens is that pkgA-1 gets
-- # obsoleted by pkgB but pkgB requires pkgA-2, now _if_ the pkgA txmbr
-- # gets processed before pkgB then we'll process the "checkRemove" of
-- # pkgA ... so any deps. on pkgA-1 will look for a new provider, one of
-- # which is pkgA-2 in that case we want to choose that pkg over any
-- # others. This works for multiple cases too, but who'd do that right?:)
-- # FIXME: A good long term. fix here is to just not get into this
-- # problem, but that's too much for .21. This is much safer.
-- if ipkgresults:
-- pkgresults = ipkgresults
-- pkgs = ipkgresults.keys()
-+ pass
-+
-+ pkgs = pkgresults.keys()
-
- # go through each pkg and compare to others
- # if it is same skip it
-@@ -1186,8 +1236,7 @@ class Depsolve(object):
- pkgresults[po] -= 1024
-
- obsoleted = False
-- poprovtup = (po.name, 'EQ', (po.epoch, po.ver, po.release))
-- if nextpo.inPrcoRange('obsoletes', poprovtup):
-+ if po.obsoletedBy([nextpo]):
- obsoleted = True
- pkgresults[po] -= 1024
-
-@@ -1209,6 +1258,7 @@ class Depsolve(object):
- if res == po:
- pkgresults[po] += 5
-
-+ # End of O(N*N): for nextpo in pkgs:
- if _common_sourcerpm(po, reqpo):
- self.verbose_logger.log(logginglevels.DEBUG_4,
- _('common sourcerpm %s and %s' % (po, reqpo)))
-@@ -1216,7 +1266,7 @@ class Depsolve(object):
- if self.isPackageInstalled(po.base_package_name):
- self.verbose_logger.log(logginglevels.DEBUG_4,
- _('base package %s is installed for %s' % (po.base_package_name, po)))
-- pkgresults[po] += 5 # Same as ipkgresults above.
-+ pkgresults[po] += 5 # Same as before - - but off of base package name
- if reqpo:
- cpl = _common_prefix_len(po.name, reqpo.name)
- if cpl > 2:
-@@ -1225,6 +1275,53 @@ class Depsolve(object):
-
- pkgresults[po] += cpl*2
-
-+ # If we have more than one "best", see what would happen if we picked
-+ # each package ... ie. what things do they require that _aren't_ already
-+ # installed/to-be-installed. In theory this can screw up due to:
-+ # pkgA => requires pkgX
-+ # pkgB => requires pkgY, requires pkgZ
-+ # ...but pkgX requires 666 other things. Going recursive is
-+ # "non-trivial" though, python != prolog. This seems to do "better"
-+ # from simple testing though.
-+ bestnum = max(pkgresults.values())
-+ rec_depsolve = {}
-+ for po in pkgs:
-+ if pkgresults[po] != bestnum:
-+ continue
-+ rec_depsolve[po] = 0
-+ if len(rec_depsolve) > 1:
-+ for po in rec_depsolve:
-+ fake_txmbr = TransactionMember(po)
-+
-+ # Note that this is just requirements, so you could also have
-+ # 4 requires for a single package. This might be fixable, if
-+ # needed, but given the above it's probably better to leave it
-+ # like this.
-+ reqs = self._checkInstall(fake_txmbr)
-+ rec_depsolve[po] = len(reqs)
-+
-+ bestnum = min(rec_depsolve.values())
-+ self.verbose_logger.log(logginglevels.DEBUG_4,
-+ _('requires minimal: %d') % bestnum)
-+ for po in rec_depsolve:
-+ if rec_depsolve[po] == bestnum:
-+ self.verbose_logger.log(logginglevels.DEBUG_4,
-+ _(' Winner: %s') % po)
-+ pkgresults[po] += 1
-+ else:
-+ num = rec_depsolve[po]
-+ self.verbose_logger.log(logginglevels.DEBUG_4,
-+ _(' Loser(with %d): %s') % (num, po))
-+
-+ # We don't want to decide to use a "shortest first", if something else
-+ # has told us to pick something else. But we want to pick between
-+ # multiple "best" packages. So we spike all the best packages (so
-+ # only those can win) and then bump them down by package name length.
-+ bestnum = max(pkgresults.values())
-+ for po in pkgs:
-+ if pkgresults[po] != bestnum:
-+ continue
-+ pkgresults[po] += 1000
- pkgresults[po] += (len(po.name)*-1)
-
- bestorder = sorted(pkgresults.items(),
-diff --git a/yum/history.py b/yum/history.py
-index 2707cac..502b908 100644
---- a/yum/history.py
-+++ b/yum/history.py
-@@ -22,7 +22,7 @@ import os, os.path
- import glob
- from weakref import proxy as weakref
-
--from sqlutils import sqlite, executeSQL, sql_esc, sql_esc_glob
-+from sqlutils import sqlite, executeSQL, sql_esc_glob
- import yum.misc as misc
- import yum.constants
- from yum.constants import *
-@@ -112,6 +112,35 @@ class YumHistoryPackage(PackageObject):
- chk = checksum.split(':')
- self._checksums = [(chk[0], chk[1], 0)] # (type, checksum, id(0,1))
-
-+class YumHistoryRpmdbProblem(PackageObject):
-+ """ Class representing an rpmdb problem that existed at the time of the
-+ transaction. """
-+
-+ def __init__(self, history, rpid, problem, text):
-+ self._history = weakref(history)
-+
-+ self.rpid = rpid
-+ self.problem = problem
-+ self.text = text
-+
-+ self._loaded_P = None
-+
-+ def __cmp__(self, other):
-+ if other is None:
-+ return 1
-+ ret = cmp(self.problem, other.problem)
-+ if ret: return -ret
-+ ret = cmp(self.rpid, other.rpid)
-+ return ret
-+
-+ def _getProbPkgs(self):
-+ if self._loaded_P is None:
-+ self._loaded_P = sorted(self._history._old_prob_pkgs(self.rpid))
-+ return self._loaded_P
-+
-+ packages = property(fget=lambda self: self._getProbPkgs())
-+
-+
- class YumHistoryTransaction:
- """ Holder for a history transaction. """
-
-@@ -128,6 +157,12 @@ class YumHistoryTransaction:
-
- self._loaded_TW = None
- self._loaded_TD = None
-+ self._loaded_TS = None
-+
-+ self._loaded_PROB = None
-+
-+ self._have_loaded_CMD = False # cmdline can validly be None
-+ self._loaded_CMD = None
-
- self._loaded_ER = None
- self._loaded_OT = None
-@@ -153,9 +188,29 @@ class YumHistoryTransaction:
- if self._loaded_TD is None:
- self._loaded_TD = sorted(self._history._old_data_pkgs(self.tid))
- return self._loaded_TD
-+ def _getTransSkip(self):
-+ if self._loaded_TS is None:
-+ self._loaded_TS = sorted(self._history._old_skip_pkgs(self.tid))
-+ return self._loaded_TS
-
- trans_with = property(fget=lambda self: self._getTransWith())
- trans_data = property(fget=lambda self: self._getTransData())
-+ trans_skip = property(fget=lambda self: self._getTransSkip())
-+
-+ def _getProblems(self):
-+ if self._loaded_PROB is None:
-+ self._loaded_PROB = sorted(self._history._old_problems(self.tid))
-+ return self._loaded_PROB
-+
-+ rpmdb_problems = property(fget=lambda self: self._getProblems())
-+
-+ def _getCmdline(self):
-+ if not self._have_loaded_CMD:
-+ self._have_loaded_CMD = True
-+ self._loaded_CMD = self._history._old_cmdline(self.tid)
-+ return self._loaded_CMD
-+
-+ cmdline = property(fget=lambda self: self._getCmdline())
-
- def _getErrors(self):
- if self._loaded_ER is None:
-@@ -176,8 +231,12 @@ class YumHistory:
- self._conn = None
-
- self.conf = yum.misc.GenericHolder()
-- self.conf.db_path = os.path.normpath(root + '/' + db_path)
-+ if not os.path.normpath(db_path).startswith(root):
-+ self.conf.db_path = os.path.normpath(root + '/' + db_path)
-+ else:
-+ self.conf.db_path = os.path.normpath('/' + db_path)
- self.conf.writable = False
-+ self.conf.readable = True
-
- if not os.path.exists(self.conf.db_path):
- try:
-@@ -203,18 +262,41 @@ class YumHistory:
- except ValueError:
- continue
-
-+ self._db_date = '%s-%s-%s' % (pieces[0], pieces[1], pieces[2])
- self._db_file = d
- break
-
- if self._db_file is None:
- self._create_db_file()
-+
-+ # make an addon path for where we're going to stick
-+ # random additional history info - probably from plugins and what-not
-+ self.conf.addon_path = self.conf.db_path + '/' + self._db_date
-+ if not os.path.exists(self.conf.addon_path):
-+ try:
-+ os.makedirs(self.conf.addon_path)
-+ except (IOError, OSError), e:
-+ # some sort of useful thing here? A warning?
-+ return
-+ else:
-+ if os.access(self.conf.addon_path, os.W_OK):
-+ self.conf.writable = True
-+
-
- def __del__(self):
- self.close()
-
- def _get_cursor(self):
- if self._conn is None:
-- self._conn = sqlite.connect(self._db_file)
-+ if not self.conf.readable:
-+ return None
-+
-+ try:
-+ self._conn = sqlite.connect(self._db_file)
-+ except (sqlite.OperationalError, sqlite.DatabaseError):
-+ self.conf.readable = False
-+ return None
-+
- return self._conn.cursor()
- def _commit(self):
- return self._conn.commit()
-@@ -276,7 +358,7 @@ class YumHistory:
- def txmbr2state(txmbr):
- state = None
- if txmbr.output_state in (TS_INSTALL, TS_TRUEINSTALL):
-- if hasattr(txmbr, 'reinstall'):
-+ if txmbr.reinstall:
- state = 'Reinstall'
- elif txmbr.downgrades:
- state = 'Downgrade'
-@@ -291,17 +373,32 @@ class YumHistory:
-
- def trans_with_pid(self, pid):
- cur = self._get_cursor()
-+ if cur is None:
-+ return None
- res = executeSQL(cur,
- """INSERT INTO trans_with_pkgs
- (tid, pkgtupid)
- VALUES (?, ?)""", (self._tid, pid))
- return cur.lastrowid
-
-+ def trans_skip_pid(self, pid):
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return None
-+
-+ res = executeSQL(cur,
-+ """INSERT INTO trans_skip_pkgs
-+ (tid, pkgtupid)
-+ VALUES (?, ?)""", (self._tid, pid))
-+ return cur.lastrowid
-+
- def trans_data_pid_beg(self, pid, state):
- assert state is not None
- if not hasattr(self, '_tid') or state is None:
- return # Not configured to run
- cur = self._get_cursor()
-+ if cur is None:
-+ return # Should never happen, due to above
- res = executeSQL(cur,
- """INSERT INTO trans_data_pkgs
- (tid, pkgtupid, state)
-@@ -313,6 +410,8 @@ class YumHistory:
- return # Not configured to run
-
- cur = self._get_cursor()
-+ if cur is None:
-+ return # Should never happen, due to above
- res = executeSQL(cur,
- """UPDATE trans_data_pkgs SET done = ?
- WHERE tid = ? AND pkgtupid = ? AND state = ?
-@@ -320,8 +419,62 @@ class YumHistory:
- self._commit()
- return cur.lastrowid
-
-- def beg(self, rpmdb_version, using_pkgs, txmbrs):
-+ def _trans_rpmdb_problem(self, problem):
-+ if not hasattr(self, '_tid'):
-+ return # Not configured to run
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return None
-+ res = executeSQL(cur,
-+ """INSERT INTO trans_rpmdb_problems
-+ (tid, problem, msg)
-+ VALUES (?, ?, ?)""", (self._tid,
-+ problem.problem,
-+ to_unicode(str(problem))))
-+ rpid = cur.lastrowid
-+
-+ if not rpid:
-+ return rpid
-+
-+ pkgs = {}
-+ pkg = problem.pkg
-+ pkgs[pkg.pkgtup] = pkg
-+ if problem.problem == 'conflicts':
-+ for pkg in problem.conflicts:
-+ pkgs[pkg.pkgtup] = pkg
-+ if problem.problem == 'duplicates':
-+ pkgs[problem.duplicate.pkgtup] = problem.duplicate
-+
-+ for pkg in pkgs.values():
-+ pid = self.pkg2pid(pkg)
-+ if pkg.pkgtup == problem.pkg.pkgtup:
-+ main = 'TRUE'
-+ else:
-+ main = 'FALSE'
-+ res = executeSQL(cur,
-+ """INSERT INTO trans_prob_pkgs
-+ (rpid, pkgtupid, main)
-+ VALUES (?, ?, ?)""", (rpid, pid, main))
-+
-+ return rpid
-+
-+ def _trans_cmdline(self, cmdline):
-+ if not hasattr(self, '_tid'):
-+ return # Not configured to run
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return None
-+ res = executeSQL(cur,
-+ """INSERT INTO trans_cmdline
-+ (tid, cmdline)
-+ VALUES (?, ?)""", (self._tid, cmdline))
-+ return cur.lastrowid
-+
-+ def beg(self, rpmdb_version, using_pkgs, txmbrs, skip_packages=[],
-+ rpmdb_problems=[], cmdline=None):
- cur = self._get_cursor()
-+ if cur is None:
-+ return
- res = executeSQL(cur,
- """INSERT INTO trans_beg
- (timestamp, rpmdb_version, loginuid)
-@@ -339,10 +492,22 @@ class YumHistory:
- state = self.txmbr2state(txmbr)
- self.trans_data_pid_beg(pid, state)
-
-+ for pkg in skip_packages:
-+ pid = self.pkg2pid(pkg)
-+ self.trans_skip_pid(pid)
-+
-+ for problem in rpmdb_problems:
-+ self._trans_rpmdb_problem(problem)
-+
-+ if cmdline:
-+ self._trans_cmdline(cmdline)
-+
- self._commit()
-
- def _log_errors(self, errors):
- cur = self._get_cursor()
-+ if cur is None:
-+ return
- for error in errors:
- error = to_unicode(error)
- executeSQL(cur,
-@@ -356,7 +521,9 @@ class YumHistory:
- return # Not configured to run
-
- cur = self._get_cursor()
-- for error in msg.split('\n'):
-+ if cur is None:
-+ return # Should never happen, due to above
-+ for error in msg.splitlines():
- error = to_unicode(error)
- executeSQL(cur,
- """INSERT INTO trans_script_stdout
-@@ -387,7 +554,11 @@ class YumHistory:
-
- def end(self, rpmdb_version, return_code, errors=None):
- assert return_code or not errors
-+ if not hasattr(self, '_tid'):
-+ return # Failed at beg() time
- cur = self._get_cursor()
-+ if cur is None:
-+ return # Should never happen, due to above
- res = executeSQL(cur,
- """INSERT INTO trans_end
- (tid, timestamp, rpmdb_version, return_code)
-@@ -407,6 +578,63 @@ class YumHistory:
- self._log_errors(errors)
- del self._tid
-
-+ def write_addon_data(self, dataname, data):
-+ """append data to an arbitrary-named file in the history
-+ addon_path/transaction id location,
-+ returns True if write succeeded, False if not"""
-+
-+ if not hasattr(self, '_tid'):
-+ # maybe we should raise an exception or a warning here?
-+ return False
-+
-+ if not dataname:
-+ return False
-+
-+ if not data:
-+ return False
-+
-+ # make sure the tid dir exists
-+ tid_dir = self.conf.addon_path + '/' + str(self._tid)
-+
-+ if self.conf.writable and not os.path.exists(tid_dir):
-+ try:
-+ os.makedirs(tid_dir, mode=0700)
-+ except (IOError, OSError), e:
-+ # emit a warning/raise an exception?
-+ return False
-+
-+ # cleanup dataname
-+ safename = dataname.replace('/', '_')
-+ data_fn = tid_dir + '/' + safename
-+ try:
-+ # open file in append
-+ fo = open(data_fn, 'w+')
-+ # write data
-+ fo.write(data)
-+ # flush data
-+ fo.flush()
-+ fo.close()
-+ except (IOError, OSError), e:
-+ return False
-+ # return
-+ return True
-+
-+ def return_addon_data(self, tid, item=None):
-+ hist_and_tid = self.conf.addon_path + '/' + str(tid) + '/'
-+ addon_info = glob.glob(hist_and_tid + '*')
-+ addon_names = [ i.replace(hist_and_tid, '') for i in addon_info ]
-+ if not item:
-+ return addon_names
-+
-+ if item not in addon_names:
-+ # XXX history needs SOME kind of exception, or warning, I think?
-+ return None
-+
-+ fo = open(hist_and_tid + item, 'r')
-+ data = fo.read()
-+ fo.close()
-+ return data
-+
- def _old_with_pkgs(self, tid):
- cur = self._get_cursor()
- executeSQL(cur,
-@@ -439,11 +667,70 @@ class YumHistory:
- obj.state_installed = False
- ret.append(obj)
- return ret
-+ def _old_skip_pkgs(self, tid):
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return []
-+ executeSQL(cur,
-+ """SELECT name, arch, epoch, version, release, checksum
-+ FROM trans_skip_pkgs JOIN pkgtups USING(pkgtupid)
-+ WHERE tid = ?
-+ ORDER BY name ASC, epoch ASC""", (tid,))
-+ ret = []
-+ for row in cur:
-+ obj = YumHistoryPackage(row[0],row[1],row[2],row[3],row[4], row[5])
-+ ret.append(obj)
-+ return ret
-+ def _old_prob_pkgs(self, rpid):
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return []
-+ executeSQL(cur,
-+ """SELECT name, arch, epoch, version, release, checksum, main
-+ FROM trans_prob_pkgs JOIN pkgtups USING(pkgtupid)
-+ WHERE rpid = ?
-+ ORDER BY name ASC, epoch ASC""", (rpid,))
-+ ret = []
-+ for row in cur:
-+ obj = YumHistoryPackage(row[0],row[1],row[2],row[3],row[4], row[5])
-+ obj.main = row[6] == 'TRUE'
-+ ret.append(obj)
-+ return ret
-+
-+ def _old_problems(self, tid):
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return []
-+ executeSQL(cur,
-+ """SELECT rpid, problem, msg
-+ FROM trans_rpmdb_problems
-+ WHERE tid = ?
-+ ORDER BY problem ASC, rpid ASC""", (tid,))
-+ ret = []
-+ for row in cur:
-+ obj = YumHistoryRpmdbProblem(self, row[0], row[1], row[2])
-+ ret.append(obj)
-+ return ret
-+
-+ def _old_cmdline(self, tid):
-+ cur = self._get_cursor()
-+ if cur is None or not self._update_db_file_2():
-+ return None
-+ executeSQL(cur,
-+ """SELECT cmdline
-+ FROM trans_cmdline
-+ WHERE tid = ?""", (tid,))
-+ ret = []
-+ for row in cur:
-+ return row[0]
-+ return None
-
- def old(self, tids=[], limit=None, complete_transactions_only=False):
- """ Return a list of the last transactions, note that this includes
- partial transactions (ones without an end transaction). """
- cur = self._get_cursor()
-+ if cur is None:
-+ return []
- sql = """SELECT tid,
- trans_beg.timestamp AS beg_ts,
- trans_beg.rpmdb_version AS beg_rv,
-@@ -551,6 +838,10 @@ class YumHistory:
- packages al. la. "yum list". Returns transaction ids. """
- # Search packages ... kind of sucks that it's search not list, pkglist?
-
-+ cur = self._get_cursor()
-+ if cur is None:
-+ return set()
-+
- data = _setupHistorySearchSQL(patterns, ignore_case)
- (need_full, patterns, fields, names) = data
-
-@@ -559,7 +850,6 @@ class YumHistory:
- for row in self._yieldSQLDataList(patterns, fields, ignore_case):
- pkgtupids.add(row[0])
-
-- cur = self._get_cursor()
- sql = """SELECT tid FROM trans_data_pkgs WHERE pkgtupid IN """
- sql += "(%s)" % ",".join(['?'] * len(pkgtupids))
- params = list(pkgtupids)
-@@ -577,12 +867,98 @@ class YumHistory:
- tids.add(row[0])
- return tids
-
-+ _update_ops_2 = ['''\
-+\
-+ CREATE TABLE trans_skip_pkgs (
-+ tid INTEGER NOT NULL REFERENCES trans_beg,
-+ pkgtupid INTEGER NOT NULL REFERENCES pkgtups);
-+''', '''\
-+\
-+ CREATE TABLE trans_cmdline (
-+ tid INTEGER NOT NULL REFERENCES trans_beg,
-+ cmdline TEXT NOT NULL);
-+''', '''\
-+\
-+ CREATE TABLE trans_rpmdb_problems (
-+ rpid INTEGER PRIMARY KEY,
-+ tid INTEGER NOT NULL REFERENCES trans_beg,
-+ problem TEXT NOT NULL, msg TEXT NOT NULL);
-+''', '''\
-+\
-+ CREATE TABLE trans_prob_pkgs (
-+ rpid INTEGER NOT NULL REFERENCES trans_rpmdb_problems,
-+ pkgtupid INTEGER NOT NULL REFERENCES pkgtups,
-+ main BOOL NOT NULL DEFAULT FALSE);
-+''', '''\
-+\
-+ CREATE VIEW vtrans_data_pkgs AS
-+ SELECT tid,name,epoch,version,release,arch,pkgtupid,
-+ state,done,
-+ name || '-' || epoch || ':' ||
-+ version || '-' || release || '.' || arch AS nevra
-+ FROM trans_data_pkgs JOIN pkgtups USING(pkgtupid)
-+ ORDER BY name;
-+''', '''\
-+\
-+ CREATE VIEW vtrans_with_pkgs AS
-+ SELECT tid,name,epoch,version,release,arch,pkgtupid,
-+ name || '-' || epoch || ':' ||
-+ version || '-' || release || '.' || arch AS nevra
-+ FROM trans_with_pkgs JOIN pkgtups USING(pkgtupid)
-+ ORDER BY name;
-+''', '''\
-+\
-+ CREATE VIEW vtrans_skip_pkgs AS
-+ SELECT tid,name,epoch,version,release,arch,pkgtupid,
-+ name || '-' || epoch || ':' ||
-+ version || '-' || release || '.' || arch AS nevra
-+ FROM trans_skip_pkgs JOIN pkgtups USING(pkgtupid)
-+ ORDER BY name;
-+''', # NOTE: Old versions of sqlite don't like this next view, they are only
-+ # there for debugging anyway ... but it's worth remembering.
-+'''\
-+\
-+ CREATE VIEW vtrans_prob_pkgs AS
-+ SELECT tid,rpid,name,epoch,version,release,arch,pkgtups.pkgtupid,
-+ main,
-+ name || '-' || epoch || ':' ||
-+ version || '-' || release || '.' || arch AS nevra
-+ FROM (trans_prob_pkgs JOIN trans_rpmdb_problems USING(rpid))
-+ JOIN pkgtups USING(pkgtupid)
-+ ORDER BY name;
-+''']
-+
-+ def _update_db_file_2(self):
-+ """ Update to version 2 of history, includes trans_skip_pkgs. """
-+ if not self.conf.writable:
-+ return False
-+
-+ if hasattr(self, '_cached_updated_2'):
-+ return self._cached_updated_2
-+
-+ cur = self._get_cursor()
-+ if cur is None:
-+ return False
-+
-+ executeSQL(cur, "PRAGMA table_info(trans_skip_pkgs)")
-+ # If we get anything, we're fine. There might be a better way of
-+ # saying "anything" but this works.
-+ for ob in cur:
-+ break
-+ else:
-+ for op in self._update_ops_2:
-+ cur.execute(op)
-+ self._commit()
-+ self._cached_updated_2 = True
-+ return True
-+
- def _create_db_file(self):
- """ Create a new history DB file, populating tables etc. """
-
-+ self._db_date = time.strftime('%Y-%m-%d')
- _db_file = '%s/%s-%s.%s' % (self.conf.db_path,
- 'history',
-- time.strftime('%Y-%m-%d'),
-+ self._db_date,
- 'sqlite')
- if self._db_file == _db_file:
- os.rename(_db_file, _db_file + '.old')
-@@ -638,6 +1014,8 @@ class YumHistory:
- ''']
- for op in ops:
- cur.execute(op)
-+ for op in self._update_ops_2:
-+ cur.execute(op)
- self._commit()
-
- # Pasted from sqlitesack
-diff --git a/yum/logginglevels.py b/yum/logginglevels.py
-index 6c23f88..9534984 100644
---- a/yum/logginglevels.py
-+++ b/yum/logginglevels.py
-@@ -45,7 +45,7 @@ logging.addLevelName(DEBUG_4, "DEBUG_4")
- __NO_LOGGING = 100
- logging.raiseExceptions = False
-
--import syslog as syslog_module
-+from logging.handlers import SysLogHandler as syslog_module
-
- syslog = None
-
-@@ -75,7 +75,7 @@ def syslogFacilityMap(facility):
- elif (facility.upper().startswith("LOG_") and
- facility[4:].upper() in _syslog_facility_map):
- return _syslog_facility_map[facility[4:].upper()]
-- return syslog.LOG_USER
-+ return _syslog_facility_map["USER"]
-
- def logLevelFromErrorLevel(error_level):
- """ Convert an old-style error logging level to the new style. """
-@@ -130,7 +130,10 @@ def doLoggingSetup(debuglevel, errorlevel,
- """
- global _added_handlers
-
-- logging.basicConfig()
-+ #logging.basicConfig() # this appears to not change anything in our
-+ # logging setup - disabling this b/c of the behaviors in yum ticket 525
-+ # -skvidal
-+
-
- if _added_handlers:
- if debuglevel is not None:
-@@ -140,7 +143,6 @@ def doLoggingSetup(debuglevel, errorlevel,
- return
-
- plainformatter = logging.Formatter("%(message)s")
-- syslogformatter = logging.Formatter("yum: %(message)s")
-
- console_stdout = logging.StreamHandler(sys.stdout)
- console_stdout.setFormatter(plainformatter)
-@@ -158,20 +160,24 @@ def doLoggingSetup(debuglevel, errorlevel,
- filelogger.setLevel(logging.INFO)
- filelogger.propagate = False
-
-- log_dev = syslog_device
- global syslog
-- if os.path.exists(log_dev):
-- try:
-- syslog = logging.handlers.SysLogHandler(log_dev)
-- syslog.setFormatter(syslogformatter)
-- filelogger.addHandler(syslog)
-- if syslog_ident is not None or syslog_facility is not None:
-- ident = syslog_ident or ''
-- facil = syslog_facility or 'LOG_USER'
-- syslog_module.openlog(ident, 0, syslogFacilityMap(facil))
-- except socket.error:
-- if syslog is not None:
-- syslog.close()
-+ if syslog_device:
-+ address = None
-+ if ":" in syslog_device:
-+ address = syslog_device.rsplit(":", 1)
-+ address = (address[0], int(address[1]))
-+ elif os.path.exists(syslog_device):
-+ address = syslog_device
-+ if address:
-+ try:
-+ facil = syslogFacilityMap(syslog_facility or "USER")
-+ syslog = logging.handlers.SysLogHandler(address, facil)
-+ except socket.error:
-+ if syslog is not None:
-+ syslog.close()
-+ else:
-+ setLoggingApp(syslog_ident or "yum")
-+ filelogger.addHandler(syslog)
- _added_handlers = True
-
- if debuglevel is not None:
-@@ -189,7 +195,12 @@ def setFileLog(uid, logfile):
- logdir = os.path.dirname(logfile)
- if not os.path.exists(logdir):
- os.makedirs(logdir, mode=0755)
--
-+
-+ if not os.path.exists(logfile):
-+ f = open(logfile, 'w')
-+ os.chmod(logfile, 0600) # making sure umask doesn't catch us up
-+ f.close()
-+
- filelogger = logging.getLogger("yum.filelogging")
- filehandler = logging.FileHandler(logfile)
- formatter = logging.Formatter("%(asctime)s %(message)s",
-@@ -201,5 +212,5 @@ def setFileLog(uid, logfile):
-
- def setLoggingApp(app):
- if syslog:
-- syslogformatter = logging.Formatter("yum(%s): "% (app,) + "%(message)s")
-+ syslogformatter = logging.Formatter(app + "[%(process)d]: %(message)s")
- syslog.setFormatter(syslogformatter)
-diff --git a/yum/mdparser.py b/yum/mdparser.py
-index 2753dad..194d5d1 100644
---- a/yum/mdparser.py
-+++ b/yum/mdparser.py
-@@ -132,7 +132,7 @@ class PrimaryEntry(BaseEntry):
- elif name in ('checksum', 'location'):
- p.update(self._prefixprops(child, name))
- p[name + '_value'] = child.text
-- if name == 'location' and not p.has_key("location_base"):
-+ if name == 'location' and "location_base" not in p:
- p["location_base"] = None
-
- elif name == 'format':
-diff --git a/yum/metalink.py b/yum/metalink.py
-index 24da633..aaa4f25 100755
---- a/yum/metalink.py
-+++ b/yum/metalink.py
-@@ -26,11 +26,7 @@ from urlgrabber.progress import format_number
-
- import Errors
-
--try:
-- from xml.etree import cElementTree
--except ImportError:
-- import cElementTree
--xmlparse = cElementTree.parse
-+from yum.misc import cElementTree_xmlparse as xmlparse
-
- class MetaLinkRepoErrorParseFail(Errors.RepoError):
- """ An exception thrown for an unparsable MetaLinkRepoMD file. """
-@@ -138,6 +134,8 @@ class MetaLinkURL:
- self.preference = int(elem.get("preference", -1))
- self.protocol = elem.get("type") # This is the "std" attribute name
- self.location = elem.get("location")
-+ self.private = elem.get("{%s}private" % __XML_NS_MM__, "false")
-+ self.private = self.private.lower() == "true"
-
- if self.protocol is None: # Try for the old MM protocol attribute
- self.protocol = elem.get("protocol")
-@@ -149,8 +147,9 @@ Preference: %d
- Max-Connections: %d
- Protocol: %s
- Location: %s
-+Private: %s
- """ % (self.url, self.preference, self.max_connections,
-- self.protocol, self.location)
-+ self.protocol, self.location, self.private)
-
- def __cmp__(self, other):
- if other is None:
-diff --git a/yum/misc.py b/yum/misc.py
-index 66b0653..0f80d7d 100644
---- a/yum/misc.py
-+++ b/yum/misc.py
-@@ -19,6 +19,13 @@ import pwd
- import fnmatch
- import bz2
- import gzip
-+_available_compression = ['gz', 'bz2']
-+try:
-+ import lzma
-+ _available_compression.append('xz')
-+except ImportError:
-+ lzma = None
-+
- from rpmUtils.miscutils import stringToVersion, flagToString
- from stat import *
- try:
-@@ -98,17 +105,16 @@ def re_filename(s):
- def re_primary_filename(filename):
- """ Tests if a filename string, can be matched against just primary.
- Note that this can produce false negatives (but not false
-- positives). """
-- if 'bin/' in filename:
-- return True
-- if filename.startswith('/etc/'):
-+ positives). Note that this is a superset of re_primary_dirname(). """
-+ if re_primary_dirname(filename):
- return True
- if filename == '/usr/lib/sendmail':
- return True
- return False
-
- def re_primary_dirname(dirname):
-- """ Tests if a dirname string, can be matched against just primary. """
-+ """ Tests if a dirname string, can be matched against just primary. Note
-+ that this is a subset of re_primary_filename(). """
- if 'bin/' in dirname:
- return True
- if dirname.startswith('/etc/'):
-@@ -642,7 +648,9 @@ def string_to_prco_tuple(prcoString):
- n = prcoString
- f = v = None
-
-- if n[0] != '/':
-+ # We love GPG keys as packages, esp. awesome provides like:
-+ # gpg(Fedora (13) <fedora at fedoraproject.org>)
-+ if n[0] != '/' and not n.startswith("gpg("):
- # not a file dep - look at it for being versioned
- prco_split = n.split()
- if len(prco_split) == 3:
-@@ -676,10 +684,22 @@ def refineSearchPattern(arg):
- restring = re.escape(arg)
-
- return restring
-+
-+
-+def _decompress_chunked(source, dest, ztype):
-+
-+ if ztype not in _available_compression:
-+ msg = "%s compression not available" % ztype
-+ raise Errors.MiscError, msg
-+
-+ if ztype == 'bz2':
-+ s_fn = bz2.BZ2File(source, 'r')
-+ elif ztype == 'xz':
-+ s_fn = lzma.LZMAFile(source, 'r')
-+ elif ztype == 'gz':
-+ s_fn = gzip.GzipFile(source, 'r')
-+
-
--def bunzipFile(source,dest):
-- """ Extract the bzipped contents of source to dest. """
-- s_fn = bz2.BZ2File(source, 'r')
- destination = open(dest, 'w')
-
- while True:
-@@ -698,7 +718,11 @@ def bunzipFile(source,dest):
-
- destination.close()
- s_fn.close()
--
-+
-+def bunzipFile(source,dest):
-+ """ Extract the bzipped contents of source to dest. """
-+ _decompress_chunked(source, dest, ztype='bz2')
-+
- def get_running_kernel_pkgtup(ts):
- """This takes the output of uname and figures out the pkgtup of the running
- kernel (name, arch, epoch, version, release)."""
-@@ -782,7 +806,11 @@ def find_ts_remaining(timestamp, yumlibpath='/var/lib/yum'):
- item = item.replace('\n', '')
- if item == '':
- continue
-- (action, pkgspec) = item.split()
-+ try:
-+ (action, pkgspec) = item.split()
-+ except ValueError, e:
-+ msg = "Transaction journal file %s is corrupt." % (tsallpath)
-+ raise Errors.MiscError, msg
- to_complete_items.append((action, pkgspec))
-
- return to_complete_items
-@@ -848,15 +876,20 @@ def _ugly_utf8_string_hack(item):
- newitem = newitem + char
- return newitem
-
-+__cached_saxutils = None
- def to_xml(item, attrib=False):
-- import xml.sax.saxutils
-+ global __cached_saxutils
-+ if __cached_saxutils is None:
-+ import xml.sax.saxutils
-+ __cached_saxutils = xml.sax.saxutils
-+
- item = _ugly_utf8_string_hack(item)
- item = to_utf8(item)
- item = item.rstrip()
- if attrib:
-- item = xml.sax.saxutils.escape(item, entities={'"':"""})
-+ item = __cached_saxutils.escape(item, entities={'"':"""})
- else:
-- item = xml.sax.saxutils.escape(item)
-+ item = __cached_saxutils.escape(item)
- return item
-
- def unlink_f(filename):
-@@ -868,7 +901,16 @@ def unlink_f(filename):
- if e.errno != errno.ENOENT:
- raise
-
--def getloginuid():
-+def stat_f(filename):
-+ """ Call os.stat(), but don't die if the file isn't there. Returns None. """
-+ try:
-+ return os.stat(filename)
-+ except OSError, e:
-+ if e.errno != errno.ENOENT:
-+ raise
-+ return None
-+
-+def _getloginuid():
- """ Get the audit-uid/login-uid, if available. None is returned if there
- was a problem. Note that no caching is done here. """
- # We might normally call audit.audit_getloginuid(), except that requires
-@@ -883,6 +925,16 @@ def getloginuid():
- except ValueError:
- return None
-
-+_cached_getloginuid = None
-+def getloginuid():
-+ """ Get the audit-uid/login-uid, if available. None is returned if there
-+ was a problem. The value is cached, so you don't have to save it. """
-+ global _cached_getloginuid
-+ if _cached_getloginuid is None:
-+ _cached_getloginuid = _getloginuid()
-+ return _cached_getloginuid
-+
-+
- # ---------- i18n ----------
- import locale
- import sys
-@@ -983,27 +1035,84 @@ def get_uuid(savepath):
-
- return myid
-
--def decompress(filename):
-+def decompress(filename, dest=None, fn_only=False):
- """take a filename and decompress it into the same relative location.
- if the file is not compressed just return the file"""
-- out = filename
-+
-+ out = dest
-+ if not dest:
-+ out = filename
-+
- if filename.endswith('.gz'):
-- out = filename.replace('.gz', '')
-- decom = gzip.open(filename)
-- fo = open(out, 'w')
-- fo.write(decom.read())
-- fo.flush()
-- fo.close()
-- decom.close()
-- elif filename.endswith('.bz') or filename.endswith('.bz2'):
-- if filename.endswith('.bz'):
-- out = filename.replace('.bz','')
-- else:
-- out = filename.replace('.bz2', '')
-- bunzipFile(filename, out)
-+ ztype='gz'
-+ if not dest:
-+ out = filename.replace('.gz', '')
-
-- #add magical lzma/xz trick here
-+ elif filename.endswith('.bz') or filename.endswith('.bz2'):
-+ ztype='bz2'
-+ if not dest:
-+ if filename.endswith('.bz'):
-+ out = filename.replace('.bz','')
-+ else:
-+ out = filename.replace('.bz2', '')
-+
-+ elif filename.endswith('.xz'):
-+ ztype='xz'
-+ if not dest:
-+ out = filename.replace('.xz', '')
-+
-+ else:
-+ out = filename # returning the same file since it is not compressed
-+ ztype = None
-
-+ if ztype and not fn_only:
-+ _decompress_chunked(filename, out, ztype)
-+
- return out
-
-
-+def read_in_items_from_dot_dir(thisglob, line_as_list=True):
-+ """takes a glob of a dir (like /etc/foo.d/*.foo)
-+ returns a list of all the lines in all the files matching
-+ that glob, ignores comments and blank lines,
-+ optional paramater 'line_as_list tells whether to
-+ treat each line as a space or comma-separated list, defaults to True"""
-+ results = []
-+ for fname in glob.glob(thisglob):
-+ for line in open(fname):
-+ if re.match('\s*(#|$)', line):
-+ continue
-+ line = line.rstrip() # no more trailing \n's
-+ line = line.lstrip() # be nice
-+ if not line:
-+ continue
-+ if line_as_list:
-+ line = line.replace('\n', ' ')
-+ line = line.replace(',', ' ')
-+ results.extend(line.split())
-+ continue
-+ results.append(line)
-+ return results
-+
-+__cached_cElementTree = None
-+def _cElementTree_import():
-+ """ Importing xElementTree all the time, when we often don't need it, is a
-+ huge timesink. This makes python -c 'import yum' suck. So we hide it
-+ behind this function. And have accessors. """
-+ global __cached_cElementTree
-+ if __cached_cElementTree is None:
-+ try:
-+ from xml.etree import cElementTree
-+ except ImportError:
-+ import cElementTree
-+ __cached_cElementTree = cElementTree
-+
-+def cElementTree_iterparse(filename):
-+ """ Lazily load/run: cElementTree.iterparse """
-+ _cElementTree_import()
-+ return __cached_cElementTree.iterparse(filename)
-+
-+def cElementTree_xmlparse(filename):
-+ """ Lazily load/run: cElementTree.parse """
-+ _cElementTree_import()
-+ return __cached_cElementTree.parse(filename)
-diff --git a/yum/packageSack.py b/yum/packageSack.py
-index 1278cba..d822394 100644
---- a/yum/packageSack.py
-+++ b/yum/packageSack.py
-@@ -152,6 +152,11 @@ class PackageSackBase(object):
- """returns a dict of obsoletes dict[obsoleting pkgtuple] = [list of obs]"""
- raise NotImplementedError()
-
-+ def have_fastReturnFileEntries(self):
-+ """ Is calling pkg.returnFileEntries(primary_only=True) faster than
-+ using searchFiles(). """
-+ raise NotImplementedError()
-+
- def searchFiles(self, name):
- """return list of packages by filename"""
- raise NotImplementedError()
-@@ -227,15 +232,15 @@ class PackageSackBase(object):
- """return list of newest packages based on name, arch matching
- this means(in name.arch form): foo.i386 and foo.noarch are not
- compared to each other for highest version only foo.i386 and
-- foo.i386 will be compared"""
-+ foo.i386 will be compared
-+ Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-+ The last _two_ pkgs will be returned, not just one of them. """
- raise NotImplementedError()
-
- def returnNewestByName(self, name=None, patterns=None, ignore_case=False):
- """return list of newest packages based on name matching
- this means(in name.arch form): foo.i386 and foo.noarch will
-- be compared to each other for highest version.
-- Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-- The last _two_ pkgs will be returned, not just one of them. """
-+ be compared to each other for highest version."""
- raise NotImplementedError()
-
- def simplePkgList(self, patterns=None, ignore_case=False):
-@@ -343,7 +348,7 @@ class PackageSackBase(object):
- for po in self.returnPackages(repoid=repoid):
- preq = 0
- for p in _return_all_provides(po):
-- if req.has_key(p):
-+ if p in req:
- # If this pkg provides something that is required by
- # anything but itself (or another version of itself) it
- # isn't an orphan.
-@@ -497,7 +502,9 @@ class MetaSack(PackageSackBase):
- """return list of newest packages based on name, arch matching
- this means(in name.arch form): foo.i386 and foo.noarch are not
- compared to each other for highest version only foo.i386 and
-- foo.i386 will be compared"""
-+ foo.i386 will be compared.
-+ Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-+ The last _two_ pkgs will be returned, not just one of them. """
- calr = self._computeAggregateListResult
- pkgs = calr("returnNewestByNameArch", naTup, patterns, ignore_case)
- pkgs = packagesNewestByNameArch(pkgs)
-@@ -509,9 +516,7 @@ class MetaSack(PackageSackBase):
- def returnNewestByName(self, name=None, patterns=None, ignore_case=False):
- """return list of newest packages based on name matching
- this means(in name.arch form): foo.i386 and foo.noarch will
-- be compared to each other for highest version.
-- Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-- The last _two_ pkgs will be returned, not just one of them. """
-+ be compared to each other for highest version."""
- pkgs = self._computeAggregateListResult("returnNewestByName", name,
- patterns, ignore_case)
- pkgs = packagesNewestByName(pkgs)
-@@ -638,7 +643,7 @@ class PackageSack(PackageSackBase):
-
- def dropCachedData(self):
- """ Do nothing, mainly for the testing code. """
-- pass
-+ self.clearIndexes()
-
- def setCompatArchs(self, compatarchs):
- self.compatarchs = compatarchs
-@@ -772,18 +777,21 @@ class PackageSack(PackageSackBase):
-
- return obs
-
-+ def have_fastReturnFileEntries(self):
-+ """ Is calling pkg.returnFileEntries(primary_only=True) faster than
-+ using searchFiles(). """
-+ return True
-+
- def searchFiles(self, name):
-- """return list of packages by filename
-- FIXME - need to add regex match against keys in file list
-- """
-+ """ Return list of packages by filename. """
- self._checkIndexes(failure='build')
-- if self.filenames.has_key(name):
-+ if name in self.filenames:
- return self.filenames[name]
- else:
- return []
-
- def _addToDictAsList(self, dict, key, data):
-- if not dict.has_key(key):
-+ if key not in dict:
- dict[key] = []
- #if data not in dict[key]: - if I enable this the whole world grinds to a halt
- # need a faster way of looking for the object in any particular list
-@@ -903,7 +911,10 @@ class PackageSack(PackageSackBase):
- """return list of newest packages based on name, arch matching
- this means(in name.arch form): foo.i386 and foo.noarch are not
- compared to each other for highest version only foo.i386 and
-- foo.i386 will be compared"""
-+ foo.i386 will be compared
-+ Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-+ The last _two_ pkgs will be returned, not just one of them. """
-+
- highdict = {}
- # If naTup is set, only iterate through packages that match that
- # name
-@@ -917,7 +928,7 @@ class PackageSack(PackageSackBase):
- ignore_case=ignore_case)
-
- for pkg in where:
-- if not highdict.has_key((pkg.name, pkg.arch)):
-+ if (pkg.name, pkg.arch) not in highdict:
- highdict[(pkg.name, pkg.arch)] = pkg
- else:
- pkg2 = highdict[(pkg.name, pkg.arch)]
-@@ -935,16 +946,18 @@ class PackageSack(PackageSackBase):
- def returnNewestByName(self, name=None, patterns=None, ignore_case=False):
- """return list of newest packages based on name matching
- this means(in name.arch form): foo.i386 and foo.noarch will
-- be compared to each other for highest version.
-- Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-- The last _two_ pkgs will be returned, not just one of them. """
-+ be compared to each other for highest version."""
-
- highdict = {}
-- for pkg in self.returnPackages(patterns=patterns,
-- ignore_case=ignore_case):
-- if not highdict.has_key(pkg.name):
-- highdict[pkg.name] = []
-- highdict[pkg.name].append(pkg)
-+ if patterns is None and name is not None:
-+ pkgs = self.searchNevra(name=name)
-+ else:
-+ pkgs = self.returnPackages(patterns=patterns,
-+ ignore_case=ignore_case)
-+
-+ for pkg in pkgs:
-+ if pkg.name not in highdict:
-+ highdict[pkg.name] = [pkg]
- else:
- pkg2 = highdict[pkg.name][0]
- if pkg.verGT(pkg2):
-@@ -1002,8 +1015,7 @@ class PackageSack(PackageSackBase):
-
- def packagesNewestByName(pkgs):
- """ Does the same as PackageSack.returnNewestByName().
-- Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64
-- The last _two_ pkgs will be returned, not just one of them. """
-+ Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64"""
- newest = {}
- for pkg in pkgs:
- key = pkg.name
-@@ -1021,7 +1033,8 @@ def packagesNewestByName(pkgs):
- ret.extend(vals)
- return ret
- def packagesNewestByNameArch(pkgs):
-- """ Does the same as PackageSack.returnNewestByNameArch() """
-+ """ Does the same as PackageSack.returnNewestByNameArch()
-+ The last _two_ pkgs will be returned, not just one of them."""
- newest = {}
- for pkg in pkgs:
- key = (pkg.name, pkg.arch)
-diff --git a/yum/packages.py b/yum/packages.py
-index 33cbc39..b5a7d40 100644
---- a/yum/packages.py
-+++ b/yum/packages.py
-@@ -91,7 +91,7 @@ def buildPkgRefDict(pkgs, casematch=True):
- envra = '%s:%s-%s-%s.%s' % (e, n, v, r, a)
- nevra = '%s-%s:%s-%s.%s' % (n, e, v, r, a)
- for item in [name, nameArch, nameVerRelArch, nameVer, nameVerRel, envra, nevra]:
-- if not pkgdict.has_key(item):
-+ if item not in pkgdict:
- pkgdict[item] = []
- pkgdict[item].append(pkg)
-
-@@ -159,6 +159,11 @@ class FakeSack:
- def __init__(self):
- pass # This is fake, so do nothing
-
-+ def have_fastReturnFileEntries(self):
-+ """ Is calling pkg.returnFileEntries(primary_only=True) faster than
-+ using searchFiles(). """
-+ return True
-+
- def delPackage(self, obj):
- """delete a pkgobject, do nothing, but make localpackages work with --skip-broken"""
- pass # This is fake, so do nothing
-@@ -193,6 +198,7 @@ class FakeRepository:
-
- def __init__(self, repoid):
- self._set_cleanup_repoid(repoid)
-+ self.name = self.id
- self.sack = FakeSack()
-
- def __cmp__(self, other):
-@@ -210,8 +216,10 @@ class FakeRepository:
- return self.id
-
-
--# goal for the below is to have a packageobject that can be used by generic
-+# Goal for the below is to have a packageobject that can be used by generic
- # functions independent of the type of package - ie: installed or available
-+# Note that this is also used to history etc. ... so it's more a nevra+checksum
-+# holder than a base for things which are actual packages.
- class PackageObject(object):
- """Base Package Object - sets up the default storage dicts and the
- most common returns"""
-@@ -296,11 +304,16 @@ class PackageObject(object):
- def verEQ(self, other):
- """ Compare package to another one, only rpm-version equality. """
- if not other:
-- return False
-+ return None
- ret = cmp(self.name, other.name)
- if ret != 0:
- return False
- return comparePoEVREQ(self, other)
-+ def verNE(self, other):
-+ """ Compare package to another one, only rpm-version inequality. """
-+ if not other:
-+ return None
-+ return not self.verEQ(other)
- def verLT(self, other):
- """ Uses verCMP, tests if the other _rpm-version_ is < ours. """
- return self.verCMP(other) < 0
-@@ -332,6 +345,10 @@ class PackageObject(object):
- if csumid:
- return (csumtype, csum)
-
-+# This is the virtual base class of actual packages, it basically requires a
-+# repo. even though it doesn't set one up in it's __init__. It also doesn't have
-+# PackageObject methods ... so is basically unusable on it's own
-+# see: YumAvailablePackage.
- class RpmBase(object):
- """return functions and storage for rpm-specific data"""
-
-@@ -377,13 +394,13 @@ class RpmBase(object):
- def returnPrco(self, prcotype, printable=False):
- """return list of provides, requires, conflicts or obsoletes"""
-
-- prcos = []
-- if self.prco.has_key(prcotype):
-- prcos = self.prco[prcotype]
-+ prcos = self.prco.get(prcotype, [])
-
- if printable:
- results = []
- for prco in prcos:
-+ if not prco[0]: # empty or none or whatever, doesn't matter
-+ continue
- results.append(misc.prco_tuple_to_string(prco))
- return results
-
-@@ -458,7 +475,27 @@ class RpmBase(object):
-
- return result
-
-+ def provides_for(self, reqtuple):
-+ """check to see if the package object provides for the requirement
-+ passed, including searching filelists if the requirement is a file
-+ dep"""
-+
-+ if self.checkPrco('provides', reqtuple):
-+ return True
-+
-+ if reqtuple[0].startswith('/'):
-+ if misc.re_primary_filename(reqtuple[0]):
-+ pri_only = True
-+ else:
-+ pri_only = False
-
-+ files = self.returnFileEntries('file', pri_only) + \
-+ self.returnFileEntries('dir', pri_only) + \
-+ self.returnFileEntries('ghost', pri_only)
-+ if reqtuple[0] in files:
-+ return True
-+
-+ return False
-
- def returnChangelog(self):
- """return changelog entries"""
-@@ -478,9 +515,26 @@ class RpmBase(object):
- return self.files[ftype]
- return []
-
-- def returnFileTypes(self):
-- """return list of types of files in the package"""
-- # maybe should die - use direct access to attribute
-+ def returnFileTypes(self, primary_only=False):
-+ """return list of types of files in the package, you can pass
-+ primary_only=True to limit to those files in the primary repodata"""
-+ if primary_only:
-+ ret = [] # We only return the types for the primary files.
-+ for ftype in self.files.keys():
-+ if ftype == 'dir':
-+ match = misc.re_primary_dirname
-+ else:
-+ match = misc.re_primary_filename
-+ # As soon as we find a primary file of this type, we can
-+ # return it.
-+ for fn in self.files[ftype]:
-+ if match(fn):
-+ break
-+ else:
-+ continue
-+ ret.append(ftype)
-+ return ret
-+
- return self.files.keys()
-
- def returnPrcoNames(self, prcotype):
-@@ -538,11 +592,32 @@ class RpmBase(object):
-
- base_package_name = property(fget=lambda self: self._getBaseName())
-
-+ def have_fastReturnFileEntries(self):
-+ """ Is calling pkg.returnFileEntries(primary_only=True) faster than
-+ using searchFiles(). """
-+ return self.repo.sack.have_fastReturnFileEntries()
-+
-+ def obsoletedBy(self, obsoleters, limit=0):
-+ """ Returns list of obsoleters that obsolete this package. Note that we
-+ don't do obsoleting loops. If limit is != 0, then we stop after
-+ finding that many. """
-+ provtup = (self.name, 'EQ', (self.epoch, self.version, self.release))
-+ ret = []
-+ for obspo in obsoleters:
-+ if obspo.inPrcoRange('obsoletes', provtup):
-+ ret.append(obspo)
-+ if limit and len(ret) > limit:
-+ break
-+ return ret
-+
-
-+
-+# This is kind of deprecated
- class PackageEVR:
-
- """
-- A comparable epoch, version, and release representation.
-+ A comparable epoch, version, and release representation. Note that you
-+ almost certainly want to use pkg.verEQ() or pkg.verGT() etc. instead.
- """
-
- def __init__(self,e,v,r):
-@@ -585,7 +660,8 @@ class PackageEVR:
- return False
-
-
--
-+# This is the real base class of actual packages, it has a repo. and is
-+# usable on it's own, in theory (but in practise see sqlitesack).
- class YumAvailablePackage(PackageObject, RpmBase):
- """derived class for the packageobject and RpmBase packageobject yum
- uses this for dealing with packages in a repository"""
-@@ -838,12 +914,9 @@ class YumAvailablePackage(PackageObject, RpmBase):
- self.installedsize = pkgdict.size['installed']
-
- if hasattr(pkgdict, 'location'):
-- if not pkgdict.location.has_key('base'):
-- url = None
-- elif pkgdict.location['base'] == '':
-+ url = pkgdict.location.get('base')
-+ if url == '':
- url = None
-- else:
-- url = pkgdict.location['base']
-
- self.basepath = url
- self.relativepath = pkgdict.location['href']
-@@ -863,7 +936,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
- if hasattr(pkgdict, 'files'):
- for fn in pkgdict.files:
- ftype = pkgdict.files[fn]
-- if not self.files.has_key(ftype):
-+ if ftype not in self.files:
- self.files[ftype] = []
- self.files[ftype].append(fn)
-
-@@ -871,19 +944,17 @@ class YumAvailablePackage(PackageObject, RpmBase):
- for rtype in pkgdict.prco:
- for rdict in pkgdict.prco[rtype]:
- name = rdict['name']
-- f = e = v = r = None
-- if rdict.has_key('flags'): f = rdict['flags']
-- if rdict.has_key('epoch'): e = rdict['epoch']
-- if rdict.has_key('ver'): v = rdict['ver']
-- if rdict.has_key('rel'): r = rdict['rel']
-+ f = rdict.get('flags')
-+ e = rdict.get('epoch')
-+ v = rdict.get('ver')
-+ r = rdict.get('rel')
- self.prco[rtype].append((name, f, (e,v,r)))
-
- if hasattr(pkgdict, 'changelog'):
- for cdict in pkgdict.changelog:
-- date = text = author = None
-- if cdict.has_key('date'): date = cdict['date']
-- if cdict.has_key('value'): text = cdict['value']
-- if cdict.has_key('author'): author = cdict['author']
-+ date = cdict.get('date')
-+ text = cdict.get('value')
-+ author = cdict.get('author')
- self._changelog.append((date, author, text))
-
- if hasattr(pkgdict, 'checksum'):
-@@ -969,7 +1040,10 @@ class YumAvailablePackage(PackageObject, RpmBase):
- msg += self._dump_pco('conflicts')
- msg += self._dump_pco('obsoletes')
- msg += self._dump_files(True)
-- msg += """\n </format>"""
-+ if msg[-1] != '\n':
-+ msg += """\n"""
-+ msg += """ </format>"""
-+
- return msg
-
- def _dump_pco(self, pcotype):
-@@ -995,7 +1069,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
- return msg
-
- def _dump_files(self, primary=False):
-- msg =""
-+ msg ="\n"
- if not primary:
- files = self.returnFileEntries('file')
- dirs = self.returnFileEntries('dir')
-@@ -1025,6 +1099,17 @@ class YumAvailablePackage(PackageObject, RpmBase):
- msg = ""
-
- if mylist: msg = "\n <rpm:requires>\n"
-+ if hasattr(self, '_collapse_libc_requires') and self._collapse_libc_requires:
-+ libc_requires = filter(lambda x: x[0].startswith('libc.so.6'), mylist)
-+ if libc_requires:
-+ best = sorted(libc_requires)[-1]
-+ newlist = []
-+ for i in mylist:
-+ if i[0].startswith('libc.so.6') and i != best:
-+ continue
-+ newlist.append(i)
-+ mylist = newlist
-+
- for (name, flags, (e,v,r),pre) in mylist:
- if name.startswith('rpmlib('):
- continue
-@@ -1101,7 +1186,8 @@ class YumAvailablePackage(PackageObject, RpmBase):
-
-
-
--
-+# This is a tweak on YumAvailablePackage() and is a base class for packages
-+# which are actual rpms.
- class YumHeaderPackage(YumAvailablePackage):
- """Package object built from an rpm header"""
- def __init__(self, repo, hdr):
-@@ -1162,7 +1248,7 @@ class YumHeaderPackage(YumAvailablePackage):
- for tag in tag2prco:
- name = hdr[getattr(rpm, 'RPMTAG_%sNAME' % tag)]
- name = map(misc.share_data, name)
-- if name is None:
-+ if not name: # empty or none or whatever, doesn't matter
- continue
-
- lst = hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
-@@ -1198,6 +1284,10 @@ class YumHeaderPackage(YumAvailablePackage):
- # Note above, API break to fix this ... this at least is a nicer
- # msg. so we know what we accessed that is bad.
- raise KeyError, "%s has no attribute %s" % (self, thing)
-+ except ValueError:
-+ # Note above, API break to fix this ... this at least is a nicer
-+ # msg. so we know what we accessed that is bad.
-+ raise ValueError, "%s has no attribute %s" % (self, thing)
-
- def doepoch(self):
- tmpepoch = self.hdr['epoch']
-@@ -1221,7 +1311,7 @@ class YumHeaderPackage(YumAvailablePackage):
- for (fn, mode, flag) in filetuple:
- #garbage checks
- if mode is None or mode == '':
-- if not self.files.has_key('file'):
-+ if 'file' not in self.files:
- self.files['file'] = []
- self.files['file'].append(fn)
- continue
-@@ -1330,7 +1420,7 @@ class _PkgVerifyProb:
- return ret
-
- # From: lib/rpmvf.h ... not in rpm *sigh*
--_RPMVERIFY_DIGEST = (1 << 0)
-+_RPMVERIFY_DIGEST = (1 << 0)
- _RPMVERIFY_FILESIZE = (1 << 1)
- _RPMVERIFY_LINKTO = (1 << 2)
- _RPMVERIFY_USER = (1 << 3)
-@@ -1338,9 +1428,232 @@ _RPMVERIFY_GROUP = (1 << 4)
- _RPMVERIFY_MTIME = (1 << 5)
- _RPMVERIFY_MODE = (1 << 6)
- _RPMVERIFY_RDEV = (1 << 7)
-+_RPMVERIFY_CAPS = (1 << 8)
-+_RPMVERIFY_CONTEXTS = (1 << 15)
-+
-+class YUMVerifyPackageFile(object):
-+ def __init__(self, filename):
-+ self.filename = filename
-+
-+ self.readlink = None
-+ self.mtime = None
-+ self.dev = None
-+ self.user = None
-+ self.group = None
-+ self.mode = None
-+ self.digest = None
-+ self.size = None
-+
-+ self.verify_ftype = False
-+
-+ self.rpmfile_type = set()
-+ self.rpmfile_state = None
-+
-+ def _setVerifiedAttr(self, attr, val, vattr=None):
-+ if vattr is None:
-+ vattr = "verify_" + attr
-+ attr = "_" + attr
-+ setattr(self, attr, val)
-+ setattr(self, vattr, val is not None)
-+
-+ readlink = property(fget=lambda x: x._readlink,
-+ fdel=lambda x: setattr(x, 'readlink', None),
-+ fset=lambda x,y: x._setVerifiedAttr("readlink", y))
-+ mtime = property(fget=lambda x: x._mtime,
-+ fdel=lambda x: setattr(x, 'mtime', None),
-+ fset=lambda x,y: x._setVerifiedAttr("mtime", y))
-+ dev = property(fget=lambda x: x._dev,
-+ fdel=lambda x: setattr(x, 'dev', None),
-+ fset=lambda x,y: x._setVerifiedAttr("dev", y))
-+ user = property(fget=lambda x: x._user,
-+ fdel=lambda x: setattr(x, 'user', None),
-+ fset=lambda x,y: x._setVerifiedAttr("user", y))
-+ group = property(fget=lambda x: x._group,
-+ fdel=lambda x: setattr(x, 'group', None),
-+ fset=lambda x,y: x._setVerifiedAttr("group", y))
-+ # Mode is special, because it's shared with ftype.
-+ digest = property(fget=lambda x: x._digest,
-+ fdel=lambda x: setattr(x, 'digest', None),
-+ fset=lambda x,y: x._setVerifiedAttr("digest", y))
-+ size = property(fget=lambda x: x._size,
-+ fdel=lambda x: setattr(x, 'size', None),
-+ fset=lambda x,y: x._setVerifiedAttr("size", y))
-+
-+ def _setVerifiedMode(self, attr, val):
-+ self.verify_mode = val is not None
-+ self.verify_ftype = val is not None
-+ attr = "_" + attr
-+ setattr(self, attr, val)
-+
-+ mode = property(fget=lambda x: x._mode,
-+ fdel=lambda x: setattr(x, 'mode', None),
-+ fset=lambda x,y: x._setVerifiedMode("mode", y))
-+
-+ @staticmethod
-+ def _ftype(mode):
-+ """ Given a "mode" return the name of the type of file. """
-+ if stat.S_ISREG(mode): return "file"
-+ if stat.S_ISDIR(mode): return "directory"
-+ if stat.S_ISLNK(mode): return "symlink"
-+ if stat.S_ISFIFO(mode): return "fifo"
-+ if stat.S_ISCHR(mode): return "character device"
-+ if stat.S_ISBLK(mode): return "block device"
-+ return "<unknown>"
-+
-+ ftype = property(fget=lambda x: x._ftype(x.mode))
-+
-+
-+class _RPMVerifyPackageFile(YUMVerifyPackageFile):
-+ def __init__(self, fi, filetuple, csum_type, override_vflags=False):
-+ YUMVerifyPackageFile.__init__(self, filetuple[0])
-+
-+ flags = filetuple[4]
-+ if override_vflags:
-+ vflags = -1
-+ else:
-+ vflags = filetuple[9]
-+
-+ if vflags & _RPMVERIFY_FILESIZE:
-+ self.size = filetuple[1]
-+
-+ if vflags & _RPMVERIFY_RDEV|_RPMVERIFY_MODE:
-+ mode = filetuple[2]
-+ if mode < 0:
-+ # Stupid rpm, should be unsigned value but is signed ...
-+ # so we "fix" it via. this hack
-+ mode = (mode & 0xFFFF)
-+
-+ self.mode = mode
-+ if not (vflags & _RPMVERIFY_MODE):
-+ self.verify_mode = False
-+ if not (vflags & _RPMVERIFY_RDEV):
-+ self.verify_ftype = False
-+
-+ if vflags & _RPMVERIFY_MTIME:
-+ self.mtime = filetuple[3]
-+ if vflags & _RPMVERIFY_RDEV:
-+ self.dev = filetuple[5]
-+
-+ self.rpmfile_types = rpmfile_types = set()
-+ if flags & rpm.RPMFILE_CONFIG:
-+ rpmfile_types.add('configuration')
-+ if flags & rpm.RPMFILE_DOC:
-+ rpmfile_types.add('documentation')
-+ if flags & rpm.RPMFILE_GHOST:
-+ rpmfile_types.add('ghost')
-+ if flags & rpm.RPMFILE_LICENSE:
-+ rpmfile_types.add('license')
-+ if flags & rpm.RPMFILE_PUBKEY:
-+ rpmfile_types.add('public key')
-+ if flags & rpm.RPMFILE_README:
-+ rpmfile_types.add('README')
-+ if flags & rpm.RPMFILE_MISSINGOK:
-+ rpmfile_types.add('missing ok')
-+
-+ # 6 == inode
-+ # 7 == link
-+ state = filetuple[8]
-+ statemap = {rpm.RPMFILE_STATE_NORMAL : 'normal',
-+ rpm.RPMFILE_STATE_REPLACED : 'replaced',
-+ rpm.RPMFILE_STATE_NOTINSTALLED : 'not installed',
-+ rpm.RPMFILE_STATE_WRONGCOLOR : 'wrong color',
-+ rpm.RPMFILE_STATE_NETSHARED : 'netshared'}
-+
-+ if state in statemap:
-+ self.rpmfile_state = statemap[state]
-+ else:
-+ self.rpmfile_state = "<unknown>"
-+
-+ if vflags & _RPMVERIFY_USER:
-+ self.user = filetuple[10]
-+ if vflags & _RPMVERIFY_GROUP:
-+ self.group = filetuple[11]
-+ if vflags & _RPMVERIFY_DIGEST:
-+ self.digest = (csum_type, filetuple[12])
-+
-+ if self.ftype == 'symlnk' and vflags & _RPMVERIFY_LINKTO:
-+ self.readlink = fi.FLink() # fi.foo is magic, don't think about it
-+ elif vflags & _RPMVERIFY_LINKTO:
-+ self.readlink = ''
-+
-+
-+class YUMVerifyPackage:
-+ """ A holder for YUMVerifyPackageFile objects. """
-+ def __init__(self, po):
-+ self.po = po
-+ self._files = {}
-+
-+ def __contains__(self, fname):
-+ """ Note that this checks if a filename is part of the package, and
-+ not a full YUMVerifyPackageFile(). """
-+ return fname in self._files
-+
-+ def __iter__(self):
-+ for fn in self._files:
-+ yield self._files[fn]
-+
-+ def add(self, vpf):
-+ self._files[vpf.filename] = vpf
-+
-+ def remove(self, vpf):
-+ del self._files[vpf.filename]
-+
-+ def discard(self, vpf):
-+ if vpf.filename not in self:
-+ return
-+ self.remove(vpf)
-+
-+ def clear(self):
-+ self._files = {}
-+
-+
-+class _RPMVerifyPackage(YUMVerifyPackage):
-+ def __init__(self, po, fi, def_csum_type, patterns, all):
-+ YUMVerifyPackage.__init__(self, po)
-+
-+ self._presetup = (fi, def_csum_type, patterns, all)
-+ def _setup(self):
-+ if not hasattr(self, '_presetup'):
-+ return
-+
-+ (fi, def_csum_type, patterns, all) = self._presetup
-+ del self._presetup
-+
-+ for ft in fi:
-+ fn = ft[0]
-+ if patterns:
-+ matched = False
-+ for p in patterns:
-+ if fnmatch.fnmatch(fn, p):
-+ matched = True
-+ break
-+ if not matched:
-+ continue
-+
-+ self.add(_RPMVerifyPackageFile(fi, ft, def_csum_type, all))
-+
-+ def __contains__(self, *args, **kwargs):
-+ self._setup()
-+ return YUMVerifyPackage.__contains__(self, *args, **kwargs)
-+ def __iter__(self, *args, **kwargs):
-+ self._setup()
-+ return YUMVerifyPackage.__iter__(self, *args, **kwargs)
-+ def add(self, *args, **kwargs):
-+ self._setup()
-+ return YUMVerifyPackage.add(self, *args, **kwargs)
-+ def remove(self, *args, **kwargs):
-+ self._setup()
-+ return YUMVerifyPackage.remove(self, *args, **kwargs)
-+ # discard uses contains...
-+ def clear(self, *args, **kwargs):
-+ if hasattr(self, '_presetup'):
-+ del self._presetup
-+ return YUMVerifyPackage.clear(self, *args, **kwargs)
-+
-
- _installed_repo = FakeRepository('installed')
- _installed_repo.cost = 0
-+# This is a tweak on YumHeaderPackage() for installed rpm packages.
- class YumInstalledPackage(YumHeaderPackage):
- """super class for dealing with packages in the rpmdb"""
- def __init__(self, hdr, yumdb=None):
-@@ -1349,25 +1662,10 @@ class YumInstalledPackage(YumHeaderPackage):
- self.yumdb_info = yumdb.get_package(self)
-
- def verify(self, patterns=[], deps=False, script=False,
-- fake_problems=True, all=False, fast=False):
-+ fake_problems=True, all=False, fast=False, callback=None):
- """verify that the installed files match the packaged checksum
- optionally verify they match only if they are in the 'pattern' list
- returns a tuple """
-- def _ftype(mode):
-- """ Given a "mode" return the name of the type of file. """
-- if stat.S_ISREG(mode): return "file"
-- if stat.S_ISDIR(mode): return "directory"
-- if stat.S_ISLNK(mode): return "symlink"
-- if stat.S_ISFIFO(mode): return "fifo"
-- if stat.S_ISCHR(mode): return "character device"
-- if stat.S_ISBLK(mode): return "block device"
-- return "<unknown>"
--
-- statemap = {rpm.RPMFILE_STATE_REPLACED : 'replaced',
-- rpm.RPMFILE_STATE_NOTINSTALLED : 'not installed',
-- rpm.RPMFILE_STATE_WRONGCOLOR : 'wrong color',
-- rpm.RPMFILE_STATE_NETSHARED : 'netshared'}
--
- fi = self.hdr.fiFromHeader()
- results = {} # fn = problem_obj?
-
-@@ -1384,70 +1682,39 @@ class YumInstalledPackage(YumHeaderPackage):
- csum_type = RPM_CHECKSUM_TYPES[csum_num]
- # maybe an else with an error code here? or even a verify issue?
-
-- for filetuple in fi:
-- #tuple is: (filename, fsize, mode, mtime, flags, frdev?, inode, link,
-- # state, vflags?, user, group, checksum(or none for dirs)
-- (fn, size, mode, mtime, flags, dev, inode, link, state, vflags,
-- user, group, csum) = filetuple
-- if patterns:
-- matched = False
-- for p in patterns:
-- if fnmatch.fnmatch(fn, p):
-- matched = True
-- break
-- if not matched:
-- continue
-+ pfs = _RPMVerifyPackage(self, fi, csum_type, patterns, all)
-
-- ftypes = []
-- if flags & rpm.RPMFILE_CONFIG:
-- ftypes.append('configuration')
-- if flags & rpm.RPMFILE_DOC:
-- ftypes.append('documentation')
-- if flags & rpm.RPMFILE_GHOST:
-- ftypes.append('ghost')
-- if flags & rpm.RPMFILE_LICENSE:
-- ftypes.append('license')
-- if flags & rpm.RPMFILE_PUBKEY:
-- ftypes.append('public key')
-- if flags & rpm.RPMFILE_README:
-- ftypes.append('README')
-- if flags & rpm.RPMFILE_MISSINGOK:
-- ftypes.append('missing ok')
-- # not in python rpm bindings yet
-- # elif flags & rpm.RPMFILE_POLICY:
-- # ftypes.append('policy')
--
-- if all:
-- vflags = -1
-+ if callback is not None:
-+ pfs = callback(pfs)
-
-- if state != rpm.RPMFILE_STATE_NORMAL:
-- if state in statemap:
-- ftypes.append("state=" + statemap[state])
-- else:
-- ftypes.append("state=<unknown>")
-+ for pf in pfs:
-+ fn = pf.filename
-+ ftypes = list(pf.rpmfile_types)
-+ if pf.rpmfile_state != "normal":
-+ ftypes.append("state=" + pf.rpmfile_state)
- if fake_problems:
- results[fn] = [_PkgVerifyProb('state',
- 'state is not normal',
- ftypes, fake=True)]
- continue
-
-- if flags & rpm.RPMFILE_MISSINGOK and fake_problems:
-+ if 'missing ok' in pf.rpmfile_types and fake_problems:
- results[fn] = [_PkgVerifyProb('missingok', 'missing but ok',
- ftypes, fake=True)]
-- if flags & rpm.RPMFILE_MISSINGOK and not all:
-+ if 'missing ok' in pf.rpmfile_types and not all:
- continue # rpm just skips missing ok, so we do too
-
-- if flags & rpm.RPMFILE_GHOST and fake_problems:
-+ if 'ghost' in pf.rpmfile_types and fake_problems:
- results[fn] = [_PkgVerifyProb('ghost', 'ghost file', ftypes,
- fake=True)]
-- if flags & rpm.RPMFILE_GHOST and not all:
-+ if 'ghost' in pf.rpmfile_types and not all:
- continue
-
- # do check of file status on system
- problems = []
-- if os.path.lexists(fn):
-+ if os.path.lexists(pf.filename):
- # stat
-- my_st = os.lstat(fn)
-+ my_st = os.lstat(pf.filename)
- my_st_size = my_st.st_size
- try:
- my_user = pwd.getpwuid(my_st[stat.ST_UID])[0]
-@@ -1458,115 +1725,128 @@ class YumInstalledPackage(YumHeaderPackage):
- except KeyError, e:
- my_group = 'gid %s not found' % my_st[stat.ST_GID]
-
-- if mode < 0:
-- # Stupid rpm, should be unsigned value but is signed ...
-- # so we "fix" it via. this hack
-- mode = (mode & 0xFFFF)
--
-- ftype = _ftype(mode)
-- my_ftype = _ftype(my_st.st_mode)
--
-- if vflags & _RPMVERIFY_RDEV and ftype != my_ftype:
-- prob = _PkgVerifyProb('type', 'file type does not match',
-- ftypes)
-- prob.database_value = ftype
-- prob.disk_value = my_ftype
-- problems.append(prob)
-+ my_ftype = YUMVerifyPackageFile._ftype(my_st.st_mode)
-+
-+ verify_dev = False
-+ if (pf.verify_dev and (pf.ftype.endswith("device") or
-+ my_ftype.endswith("device"))):
-+ verify_dev = True
-+ if verify_dev:
-+ if pf.ftype != my_ftype:
-+ prob = _PkgVerifyProb('type','file type does not match',
-+ ftypes)
-+ prob.database_value = pf.ftype
-+ prob.disk_value = my_ftype
-+ problems.append(prob)
-+ elif (pf.dev & 0xFFFF) != (my_st.st_dev & 0xFFFF):
-+ prob =_PkgVerifyProb('type','dev does not match',ftypes)
-+ prob.database_value = hex(pf.dev & 0xffff)
-+ prob.disk_value = hex(my_st.st_dev & 0xffff)
-+ problems.append(prob)
-
-- if (ftype == "symlink" and my_ftype == "symlink" and
-- vflags & _RPMVERIFY_LINKTO):
-- fnl = fi.FLink() # fi.foo is magic, don't think about it
-- my_fnl = os.readlink(fn)
-- if my_fnl != fnl:
-+ if pf.verify_readlink:
-+ my_fnl = ''
-+ if my_ftype == "symlink":
-+ my_fnl = os.readlink(pf.filename)
-+ if my_fnl != pf.readlink:
- prob = _PkgVerifyProb('symlink',
- 'symlink does not match', ftypes)
-- prob.database_value = fnl
-+ prob.database_value = pf.readlink
- prob.disk_value = my_fnl
- problems.append(prob)
-
- check_content = True
- if 'ghost' in ftypes:
- check_content = False
-- if my_ftype == "symlink" and ftype == "file":
-+ if my_ftype == "symlink" and pf.ftype == "file":
- # Don't let things hide behind symlinks
-- my_st_size = os.stat(fn).st_size
-+ my_st_size = os.stat(pf.filename).st_size
- elif my_ftype != "file":
- check_content = False
- check_perms = True
- if my_ftype == "symlink":
-+ # No, rpm doesn't check user/group on the dst. of the
-+ # symlink ... so we don't.
- check_perms = False
-
-- if (check_content and vflags & _RPMVERIFY_MTIME and
-- my_st.st_mtime != mtime):
-+ if (check_content and pf.verify_mtime and
-+ int(my_st.st_mtime) != int(pf.mtime)):
- prob = _PkgVerifyProb('mtime', 'mtime does not match',
- ftypes)
-- prob.database_value = mtime
-- prob.disk_value = my_st.st_mtime
-+ prob.database_value = pf.mtime
-+ prob.disk_value = int(my_st.st_mtime)
- problems.append(prob)
-
-- if check_perms and vflags & _RPMVERIFY_USER and my_user != user:
-+ if check_perms and pf.verify_user and my_user != pf.user:
- prob = _PkgVerifyProb('user', 'user does not match', ftypes)
-- prob.database_value = user
-+ prob.database_value = pf.user
- prob.disk_value = my_user
- problems.append(prob)
-- if (check_perms and vflags & _RPMVERIFY_GROUP and
-- my_group != group):
-+ if check_perms and pf.verify_group and my_group != pf.group:
- prob = _PkgVerifyProb('group', 'group does not match',
- ftypes)
-- prob.database_value = group
-+ prob.database_value = pf.group
- prob.disk_value = my_group
- problems.append(prob)
-
- my_mode = my_st.st_mode
-- if 'ghost' in ftypes: # This is what rpm does
-- my_mode &= 0777
-+ if 'ghost' in ftypes: # This is what rpm does, although it
-+ my_mode &= 0777 # doesn't usually get here.
- mode &= 0777
-- if check_perms and vflags & _RPMVERIFY_MODE and my_mode != mode:
-+ if check_perms and pf.verify_mode and my_mode != pf.mode:
- prob = _PkgVerifyProb('mode', 'mode does not match', ftypes)
-- prob.database_value = mode
-+ prob.database_value = pf.mode
- prob.disk_value = my_st.st_mode
- problems.append(prob)
-
-- if fast and not problems and (my_st_size == size):
-- vflags &= ~_RPMVERIFY_DIGEST
-+ verify_digest = pf.verify_digest
-+ if fast and not problems and (my_st_size == pf.size):
-+ verify_digest = False
-+ if not pf.digest:
-+ verify_digest = False
-
- # Note that because we might get the _size_ from prelink,
- # we need to do the checksum, even if we just throw it away,
- # just so we get the size correct.
- if (check_content and
-- ((have_prelink and (vflags & _RPMVERIFY_FILESIZE) and
-- (my_st_size != size)) or
-- (csum and vflags & _RPMVERIFY_DIGEST))):
-+ (verify_digest or (pf.verify_size and have_prelink and
-+ my_st_size != pf.size))):
-+ if pf.digest:
-+ digest_type = pf.digest[0]
-+ csum = pf.digest[0] + ':' + pf.digest[1]
-+ else:
-+ digest_type = csum_type
-+ csum = ''
- try:
-- my_csum = misc.checksum(csum_type, fn)
-- gen_csum = True
-+ my_csum = misc.checksum(digest_type, pf.filename)
-+ my_csum = digest_type + ':' + my_csum
- except Errors.MiscError:
- # Don't have permission?
-- gen_csum = False
-+ my_csum = None
-
-- if csum and vflags & _RPMVERIFY_DIGEST and not gen_csum:
-+ if pf.verify_digest and my_csum is None:
- prob = _PkgVerifyProb('genchecksum',
- 'checksum not available', ftypes)
- prob.database_value = csum
- prob.disk_value = None
- problems.append(prob)
-
-- if gen_csum and my_csum != csum and have_prelink:
-+ if my_csum != csum and have_prelink:
- # This is how rpm -V works, try and if that fails try
- # again with prelink.
-- p = Popen([prelink_cmd, "-y", fn],
-+ p = Popen([prelink_cmd, "-y", pf.filename],
- bufsize=-1, stdin=PIPE,
- stdout=PIPE, stderr=PIPE, close_fds=True)
- (ig, fp, er) = (p.stdin, p.stdout, p.stderr)
- # er.read(1024 * 1024) # Try and get most of the stderr
- fp = _CountedReadFile(fp)
-- tcsum = misc.checksum(csum_type, fp)
-+ tcsum = misc.checksum(digest_type, fp)
- if fp.read_size: # If prelink worked
- my_csum = tcsum
-+ my_csum = digest_type + ':' + my_csum
- my_st_size = fp.read_size
-
-- if (csum and vflags & _RPMVERIFY_DIGEST and gen_csum and
-- my_csum != csum):
-+ if pf.verify_digest and my_csum != csum:
- prob = _PkgVerifyProb('checksum',
- 'checksum does not match', ftypes)
- prob.database_value = csum
-@@ -1574,16 +1854,15 @@ class YumInstalledPackage(YumHeaderPackage):
- problems.append(prob)
-
- # Size might be got from prelink ... *sigh*.
-- if (check_content and vflags & _RPMVERIFY_FILESIZE and
-- my_st_size != size):
-+ if check_content and pf.verify_size and my_st_size != pf.size:
- prob = _PkgVerifyProb('size', 'size does not match', ftypes)
-- prob.database_value = size
-+ prob.database_value = pf.size
- prob.disk_value = my_st_size
- problems.append(prob)
-
- else:
- try:
-- os.stat(fn)
-+ os.stat(pf.filename)
- perms_ok = True # Shouldn't happen
- except OSError, e:
- perms_ok = True
-@@ -1599,11 +1878,12 @@ class YumInstalledPackage(YumHeaderPackage):
- problems.append(prob)
-
- if problems:
-- results[fn] = problems
-+ results[pf.filename] = problems
-
- return results
-
-
-+# This is a tweak on YumHeaderPackage() for rpm packages which are on disk.
- class YumLocalPackage(YumHeaderPackage):
- """Class to handle an arbitrary package from a file path
- this inherits most things from YumInstalledPackage because
-@@ -1613,8 +1893,10 @@ class YumLocalPackage(YumHeaderPackage):
-
- def __init__(self, ts=None, filename=None):
- if ts is None:
-- raise Errors.MiscError, \
-- 'No Transaction Set Instance for YumLocalPackage instance creation'
-+ # This shouldn't be used "normally" within yum, but is very useful
-+ # for small scripts and debugging/etc.
-+ ts = rpmUtils.transaction.initReadOnlyTransaction()
-+
- if filename is None:
- raise Errors.MiscError, \
- 'No Filename specified for YumLocalPackage instance creation'
-@@ -1747,6 +2029,8 @@ class YumLocalPackage(YumHeaderPackage):
- return msg
-
-
-+# This is a tweak on YumLocalPackage() to download rpm packages to disk, and
-+# then use them directly.
- class YumUrlPackage(YumLocalPackage):
- """Class to handle an arbitrary package from a URL
- this inherits most things from YumLocalPackage, but will download a
-diff --git a/yum/pgpmsg.py b/yum/pgpmsg.py
-index f8dccdb..9cf8217 100644
---- a/yum/pgpmsg.py
-+++ b/yum/pgpmsg.py
-@@ -18,6 +18,11 @@ import struct, time, cStringIO, base64, types
- # We use this so that we can work on python-2.4 and python-2.6, and thus.
- # use import md5/import sha on the older one and import hashlib on the newer.
- # Stupid deprecation warnings.
-+
-+# pylint: disable-msg=W0108
-+# Ignore :W0108: *Lambda may not be necessary*
-+
-+
- try:
- import hashlib
- except ImportError:
-@@ -302,7 +307,7 @@ REVOKE_KEY_CLASS_SENS = 0x40 # sensitive
- PGP_FEATURE_1_MOD_DETECT = 0x01 # Modification detection
-
- pgp_feature_to_str = {
-- PGP_FEATURE_1_MOD_DETECT : 'Modification Detectiobn'
-+ PGP_FEATURE_1_MOD_DETECT : 'Modification Detection'
- }
-
- def get_whole_number(msg, idx, numlen) :
-@@ -399,7 +404,7 @@ def map_to_str(m, vals) :
- if type(vals) != types.ListType and type(vals) != types.TupleType :
- vals = list((vals,))
- for i in vals :
-- if m.has_key(i) :
-+ if i in m :
- slist.append(m[i])
- else :
- slist.append('unknown(' + str(i) + ')')
-@@ -781,11 +786,9 @@ class signature(pgp_packet) :
- if sp[0] == SIG_SUB_TYPE_SGNR_USER_ID : # signer's user id
- return 'signer id: ' + sp[1]
- if sp[0] == SIG_SUB_TYPE_REVOKE_REASON : # reason for revocation
-- reas = ''
-- if revoke_reason_to_str.has_key(sp[1]) :
-- reas = revoke_reason_to_str[sp[1]]
-+ reas = revoke_reason_to_str.get(sp[1], '')
- return 'reason for revocation: %s, %s' % (reas, sp[2])
-- if sp[0] == SIG_SUB_TYPE_FEATURES : # featues
-+ if sp[0] == SIG_SUB_TYPE_FEATURES : # features
- features = []
- if len(sp) > 1 :
- val = sp[1]
-@@ -1073,7 +1076,7 @@ be scanned to make sure they are valid for a pgp certificate."""
- if pkt_idx >= len(pkts) :
- raise ValueError('subkey at index %d was not followed by a signature' % (pkt_idx-1))
- if pkts[pkt_idx].pkt_typ != CTB_PKT_SIG or pkts[pkt_idx].sig_type != SIG_TYPE_SUBKEY_BIND :
-- raise ValueError('signature %d doesn\'t bind subkey to key, type is %s' % (pkt_idx, map_to_str(sig_type_to_str, pkts[pkt_idx].sig_typ)))
-+ raise ValueError('signature %d doesn\'t bind subkey to key, type is %s' % (pkt_idx, map_to_str(sig_type_to_str, pkts[pkt_idx].sig_typ)))
- subkey.append(pkts[pkt_idx])
-
- pkt_idx = pkt_idx + 1
-@@ -1214,7 +1217,7 @@ a PGP "certificate" includes a public key, user id(s), and signature.
- continue
-
- # are we at the checksum line?
-- if l[0] == '=' :
-+ if l and l[0] == '=' :
- # get the checksum number
- csum = base64.decodestring(l[1:5])
- i = 0
-diff --git a/yum/pkgtag_db.py b/yum/pkgtag_db.py
-index d2836e4..016dd41 100644
---- a/yum/pkgtag_db.py
-+++ b/yum/pkgtag_db.py
-@@ -17,7 +17,7 @@
-
- # parse sqlite tag database
- # return pkgnames and tag that was matched
--from sqlutils import sqlite, executeSQL, sql_esc, sql_esc_glob
-+from sqlutils import sqlite, executeSQL, sql_esc
- from Errors import PkgTagsError
- import sqlutils
- import sys
-@@ -82,7 +82,7 @@ class PackageTagDB(object):
- """Search by package name/glob.
- Return dict of dict[packagename] = [tag1, tag2, tag3, tag4, ...]"""
- res = {}
-- (name, esc) = sql_esc(tag)
-+ (name, esc) = sql_esc(name)
- query = "SELECT name, tag, score FROM packagetags where name like ?%s " % esc
- name = '%' + name + '%'
- rows = self._sql_exec(query, (name,))
-diff --git a/yum/plugins.py b/yum/plugins.py
-index 9968614..9cd2040 100644
---- a/yum/plugins.py
-+++ b/yum/plugins.py
-@@ -89,13 +89,19 @@ SLOT_TO_CONDUIT = {
- 'clean': 'PluginConduit',
- 'pretrans': 'MainPluginConduit',
- 'posttrans': 'MainPluginConduit',
-+ 'preverifytrans': 'MainPluginConduit',
-+ 'postverifytrans': 'MainPluginConduit',
- 'exclude': 'MainPluginConduit',
- 'preresolve': 'DepsolvePluginConduit',
- 'postresolve': 'DepsolvePluginConduit',
-+ 'historybegin': 'HistoryPluginConduit',
-+ 'historyend': 'HistoryPluginConduit',
-+ 'compare_providers': 'CompareProvidersPluginConduit',
-+ 'verify_package': 'VerifyPluginConduit',
- }
-
- # Enumerate all slot names
--SLOTS = SLOT_TO_CONDUIT.keys()
-+SLOTS = sorted(SLOT_TO_CONDUIT.keys())
-
- class PluginYumExit(Exception):
- '''Used by plugins to signal that yum should stop
-@@ -606,6 +612,21 @@ class DepsolvePluginConduit(MainPluginConduit):
- self.resultcode = rescode
- self.resultstring = restring
-
-+class CompareProvidersPluginConduit(MainPluginConduit):
-+ def __init__(self, parent, base, conf, providers_dict={}, reqpo=None):
-+ MainPluginConduit.__init__(self, parent, base, conf)
-+ self.packages = providers_dict
-+ self.reqpo = reqpo
-+
-+class HistoryPluginConduit(MainPluginConduit):
-+ def __init__(self, parent, base, conf, rescode=None, restring=[]):
-+ MainPluginConduit.__init__(self, parent, base, conf)
-+ self.history = self._base.history
-+
-+class VerifyPluginConduit(MainPluginConduit):
-+ def __init__(self, parent, base, conf, verify_package):
-+ MainPluginConduit.__init__(self, parent, base, conf)
-+ self.verify_package = verify_package
-
- def parsever(apiver):
- maj, min = apiver.split('.')
-diff --git a/yum/repoMDObject.py b/yum/repoMDObject.py
-index 0021d94..afc7947 100755
---- a/yum/repoMDObject.py
-+++ b/yum/repoMDObject.py
-@@ -14,16 +14,12 @@
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- # Copyright 2006 Duke University
-
--try:
-- from xml.etree import cElementTree
--except ImportError:
-- import cElementTree
--iterparse = cElementTree.iterparse
-+from yum.misc import cElementTree_iterparse as iterparse
- from Errors import RepoMDError
-
- import sys
- import types
--from misc import AutoFileChecksums
-+from misc import AutoFileChecksums, to_xml
-
- def ns_cleanup(qn):
- if qn.find('}') == -1: return qn
-@@ -31,8 +27,10 @@ def ns_cleanup(qn):
-
- class RepoData:
- """represents anything beneath a <data> tag"""
-- def __init__(self, elem):
-- self.type = elem.attrib.get('type')
-+ def __init__(self, elem=None):
-+ self.type = None
-+ if elem:
-+ self.type = elem.attrib.get('type')
- self.location = (None, None)
- self.checksum = (None,None) # type,value
- self.openchecksum = (None,None) # type,value
-@@ -40,8 +38,9 @@ class RepoData:
- self.dbversion = None
- self.size = None
- self.opensize = None
--
-- self.parse(elem)
-+
-+ if elem:
-+ self.parse(elem)
-
- def parse(self, elem):
-
-@@ -70,11 +69,47 @@ class RepoData:
- self.size = child.text
- elif child_name == 'open-size':
- self.opensize = child.text
-+
-+ def dump_xml(self):
-+ msg = ""
-+ top = """<data type="%s">\n""" % to_xml(self.type, attrib=True)
-+ msg += top
-+
-+ for (data, xmlname) in [('checksum', 'checksum'),('openchecksum', 'open-checksum')]:
-+ if hasattr(self, data):
-+ val = getattr(self, data)
-+ if val[0]:
-+ d_xml = """ <%s type="%s">%s</%s>\n""" % (xmlname,
-+ to_xml(val[0], attrib=True),
-+ to_xml(val[1]), xmlname)
-+ msg += d_xml
-+
-+ if hasattr(self, 'location'):
-+ val = getattr(self, 'location')
-+ if val[1]:
-+ loc = """ <location href="%s"/>\n""" % to_xml(val[1], attrib=True)
-+ if val[0]:
-+ loc = """ <location xml:base="%s" href="%s"/>\n""" % (
-+ to_xml(val[0], attrib=True), to_xml(val[1], attrib=True))
-+ msg += loc
-+
-+ for (data,xmlname) in [('timestamp', 'timestamp'),
-+ ('dbversion', 'database_version'),
-+ ('size','size'), ('opensize', 'open-size')]:
-+ val = getattr(self, data)
-+ if val:
-+ d_xml = """ <%s>%s</%s>\n""" % (xmlname, to_xml(val),
-+ xmlname)
-+ msg += d_xml
-+
-+ bottom = """</data>\n"""
-+ msg += bottom
-+ return msg
-
- class RepoMD:
- """represents the repomd xml file"""
-
-- def __init__(self, repoid, srcfile):
-+ def __init__(self, repoid, srcfile=None):
- """takes a repoid and a filename for the repomd.xml"""
-
- self.timestamp = 0
-@@ -83,8 +118,12 @@ class RepoMD:
- self.checksums = {}
- self.length = 0
- self.revision = None
-- self.tags = {'content' : set(), 'distro' : {}}
--
-+ self.tags = {'content' : set(), 'distro' : {}, 'repo': set()}
-+
-+ if srcfile:
-+ self.parse(srcfile)
-+
-+ def parse(self, srcfile):
- if type(srcfile) in types.StringTypes:
- # srcfile is a filename string
- try:
-@@ -168,6 +207,41 @@ class RepoMD:
- print ' open checksum: %s - %s' % thisdata.openchecksum
- print ' dbversion : %s' % thisdata.dbversion
- print ''
-+ def dump_xml(self):
-+ msg = ""
-+
-+ top = """<?xml version="1.0" encoding="UTF-8"?>
-+<repomd xmlns="http://linux.duke.edu/metadata/repo" xmlns:rpm="http://linux.duke.edu/metadata/rpm">\n"""
-+ msg += top
-+ if self.revision:
-+ rev = """ <revision>%s</revision>\n""" % to_xml(self.revision)
-+ msg += rev
-+
-+ if self.tags['content'] or self.tags['distro'] or self.tags['repo']:
-+ tags = """ <tags>\n"""
-+ for item in self.tags['content']:
-+ tag = """ <content>%s</content>\n""" % (to_xml(item))
-+ tags += tag
-+ for item in self.tags['repo']:
-+ tag = """ <repo>%s</repo>\n""" % (to_xml(item))
-+ tags += tag
-+ for (cpeid, item) in self.tags['distro'].items():
-+ itemlist = list(item) # frellingsets.
-+ if cpeid:
-+ tag = """ <distro cpeid="%s">%s</distro>\n""" % (
-+ to_xml(cpeid, attrib=True), to_xml(itemlist[0]))
-+ else:
-+ tag = """ <distro>%s</distro>\n""" % (to_xml(itemlist[0]))
-+ tags += tag
-+ tags += """ </tags>\n"""
-+ msg += tags
-+
-+ for md in self.repoData.values():
-+ msg += md.dump_xml()
-+
-+ msg += """</repomd>\n"""
-+
-+ return msg
-
- def main():
-
-diff --git a/yum/repos.py b/yum/repos.py
-index cd477ba..4b74ac6 100644
---- a/yum/repos.py
-+++ b/yum/repos.py
-@@ -78,7 +78,11 @@ 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)
--
-+ # if we come back from setup NOT enabled then mark as disabled
-+ # so nothing else touches us
-+ if not repo.enabled:
-+ self.disableRepo(repo.id)
-+
- self._setup = True
- self.ayum.plugins.run('postreposetup')
-
-@@ -103,7 +107,7 @@ class RepoStorage:
- self._cache_enabled_repos = None
-
- def delete(self, repoid):
-- if self.repos.has_key(repoid):
-+ if repoid in self.repos:
- thisrepo = self.repos[repoid]
- thisrepo.close()
- del self.repos[repoid]
-diff --git a/yum/rpmsack.py b/yum/rpmsack.py
-index 8289cd2..ae73c32 100644
---- a/yum/rpmsack.py
-+++ b/yum/rpmsack.py
-@@ -114,6 +114,23 @@ class RPMDBProblemDuplicate(RPMDBProblem):
- return _("%s is a duplicate with %s") % (self.pkg, self.duplicate)
-
-
-+class RPMDBProblemObsoleted(RPMDBProblem):
-+ def __init__(self, pkg, **kwargs):
-+ RPMDBProblem.__init__(self, pkg, "obsoleted", **kwargs)
-+
-+ def __str__(self):
-+ return _("%s is obsoleted by %s") % (self.pkg, self.obsoleter)
-+
-+
-+class RPMDBProblemProvides(RPMDBProblem):
-+ def __init__(self, pkg, **kwargs):
-+ RPMDBProblem.__init__(self, pkg, "provides", **kwargs)
-+
-+ def __str__(self):
-+ return _("%s provides %s but it cannot be found") % (self.pkg,
-+ self.provide)
-+
-+
- class RPMDBPackageSack(PackageSackBase):
- '''
- Represent rpmdb as a packagesack
-@@ -142,16 +159,23 @@ class RPMDBPackageSack(PackageSackBase):
- self.root = root
- self._idx2pkg = {}
- self._name2pkg = {}
-+ self._pkgnames_loaded = set()
- self._tup2pkg = {}
- self._completely_loaded = False
-+ self._pkgname_fails = set()
-+ self._pkgmatch_fails = set()
-+ self._provmatch_fails = set()
- self._simple_pkgtup_list = []
- self._get_pro_cache = {}
- self._get_req_cache = {}
- self._loaded_gpg_keys = False
- if cachedir is None:
-- cachedir = misc.getCacheDir()
-+ cachedir = persistdir + "/rpmdb-indexes"
- self.setCacheDir(cachedir)
-- self._persistdir = root + '/' + persistdir
-+ if not os.path.normpath(persistdir).startswith(self.root):
-+ self._persistdir = root + '/' + persistdir
-+ else:
-+ self._persistdir = persistdir
- self._have_cached_rpmdbv_data = None
- self._cached_conflicts_data = None
- # Store the result of what happens, if a transaction completes.
-@@ -161,6 +185,7 @@ class RPMDBPackageSack(PackageSackBase):
- self.auto_close = False # this forces a self.ts.close() after
- # most operations so it doesn't leave
- # any lingering locks.
-+ self._cached_rpmdb_mtime = None
-
- self._cache = {
- 'provides' : { },
-@@ -187,8 +212,12 @@ class RPMDBPackageSack(PackageSackBase):
- def dropCachedData(self):
- self._idx2pkg = {}
- self._name2pkg = {}
-+ self._pkgnames_loaded = set()
- self._tup2pkg = {}
- self._completely_loaded = False
-+ self._pkgmatch_fails = set()
-+ self._pkgname_fails = set()
-+ self._provmatch_fails = set()
- self._simple_pkgtup_list = []
- self._get_pro_cache = {}
- self._get_req_cache = {}
-@@ -204,11 +233,16 @@ class RPMDBPackageSack(PackageSackBase):
- }
- self._have_cached_rpmdbv_data = None
- self._cached_conflicts_data = None
-+ self.transactionReset() # Should do nothing, but meh...
-+ self._cached_rpmdb_mtime = None
-
- def setCacheDir(self, cachedir):
- """ Sets the internal cachedir value for the rpmdb, to be the
-- "installed" directory from this parent. """
-- self._cachedir = self.root + '/' + cachedir + "/installed/"
-+ "rpmdb-indexes" directory in the persisent yum storage. """
-+ if not os.path.normpath(cachedir).startswith(self.root):
-+ self._cachedir = self.root + '/' + cachedir
-+ else:
-+ self._cachedir = '/' + cachedir
-
- def readOnlyTS(self):
- if not self.ts:
-@@ -241,14 +275,12 @@ class RPMDBPackageSack(PackageSackBase):
- if hdr['name'] == 'gpg-pubkey':
- continue
- pkg = self._makePackageObject(hdr, mi.instance())
-- if not result.has_key(pkg.pkgid):
-- result[pkg.pkgid] = pkg
-+ result.setdefault(pkg.pkgid, pkg)
- del mi
-
- fileresults = self.searchFiles(name)
- for pkg in fileresults:
-- if not result.has_key(pkg.pkgid):
-- result[pkg.pkgid] = pkg
-+ result.setdefault(pkg.pkgid, pkg)
-
- if self.auto_close:
- self.ts.close()
-@@ -266,8 +298,7 @@ class RPMDBPackageSack(PackageSackBase):
- if hdr['name'] == 'gpg-pubkey':
- continue
- pkg = self._makePackageObject(hdr, mi.instance())
-- if not result.has_key(pkg.pkgid):
-- result[pkg.pkgid] = pkg
-+ result.setdefault(pkg.pkgid, pkg)
- del mi
-
- result = result.values()
-@@ -299,8 +330,8 @@ class RPMDBPackageSack(PackageSackBase):
- if not glob:
- if po.checkPrco(prcotype, (n, f, (e,v,r))):
- result[po.pkgid] = po
-- else:
-- result[po.pkgid] = po
-+ else:
-+ result[po.pkgid] = po
- del mi
-
-
-@@ -319,7 +350,12 @@ class RPMDBPackageSack(PackageSackBase):
- return result
-
- def searchProvides(self, name):
-- return self.searchPrco(name, 'provides')
-+ if name in self._provmatch_fails:
-+ return []
-+ ret = self.searchPrco(name, 'provides')
-+ if not ret:
-+ self._provmatch_fails.add(name)
-+ return ret
+diff --git a/docs/yum.conf.5 b/docs/yum.conf.5
+index 49d98c6..25b2c7d 100644
+--- a/docs/yum.conf.5
++++ b/docs/yum.conf.5
+@@ -134,9 +134,13 @@ an i686 package to update an i386 package. Default is `1'.
- def searchRequires(self, name):
- return self.searchPrco(name, 'requires')
-@@ -369,8 +405,9 @@ class RPMDBPackageSack(PackageSackBase):
- for pat in patterns:
- if not pat:
- continue
-+
- qpat = pat[0]
-- if qpat in ('?', '*'):
-+ if qpat in ('?', '*', '['):
- qpat = None
- if ignore_case:
- if qpat is not None:
-@@ -381,6 +418,7 @@ class RPMDBPackageSack(PackageSackBase):
- return ret
- @staticmethod
- def _match_repattern(repatterns, hdr, ignore_case):
-+ """ This is basically parsePackages() but for rpm hdr objects. """
- if repatterns is None:
- return True
+ .IP
+ \fBinstallonlypkgs \fR
+-List of packages that should only ever be installed, never updated. Kernels
+-in particular fall into this category. Defaults to kernel, kernel-smp,
+-kernel-bigmem, kernel-enterprise, kernel-debug, kernel-unsupported.
++List of package provides that should only ever be installed, never updated.
++Kernels in particular fall into this category. Defaults to kernel,
++kernel-bigmem, kernel-enterprise, kernel-smp, kernel-modules, kernel-debug,
++kernel-unsupported, kernel-source, kernel-devel, kernel-PAE, kernel-PAE-debug.
++
++Note that because these are provides, and not just package names, kernel-devel
++will also apply to kernel-debug-devel, etc.
-@@ -417,6 +455,37 @@ class RPMDBPackageSack(PackageSackBase):
- """Returns a list of packages. Note that the packages are
- always filtered to those matching the patterns/case. repoid is
- ignored, and is just here for compatibility with non-rpmdb sacks. """
-+
-+ # See if we can load the "patterns" via. dbMatch('name', ...) because
-+ # that's basically instant and walking the entire rpmdb isn't.
-+ # We assume that if we get "Yum" and _something_ matches, that we have
-+ # _all_ the matches. IOW there can be either Yum or yum, but not BOTH.
-+ if not self._completely_loaded and patterns:
-+ ret = []
-+ for pat in patterns:
-+ # We aren't wasting anything here, because the next bit
-+ # will pick up any loads :)
-+ pkgs = self.searchNames([pat])
-+ if not pkgs:
-+ break
-+ ret.extend(pkgs)
-+ else:
-+ return ret
-+
-+ ret = []
-+ if patterns and not ignore_case:
-+ tpats = []
-+ for pat in patterns:
-+ if pat in self._pkgmatch_fails:
-+ continue
-+ if pat in self._pkgnames_loaded:
-+ ret.extend(self._name2pkg[pat])
-+ continue
-+ tpats.append(pat)
-+ patterns = tpats
-+ if not patterns:
-+ return ret
-+
- if not self._completely_loaded:
- rpats = self._compile_patterns(patterns, ignore_case)
- for hdr, idx in self._all_packages():
-@@ -430,7 +499,15 @@ class RPMDBPackageSack(PackageSackBase):
- pkgobjlist = [pkg for pkg in pkgobjlist if pkg.name != 'gpg-pubkey']
- if patterns:
- pkgobjlist = parsePackages(pkgobjlist, patterns, not ignore_case)
-- pkgobjlist = pkgobjlist[0] + pkgobjlist[1]
-+ self._pkgmatch_fails.update(pkgobjlist[2])
-+ if ret:
-+ pkgobjlist = pkgobjlist[0] + pkgobjlist[1] + ret
+ .IP
+ \fBinstallonly_limit \fR
+diff --git a/yum/__init__.py b/yum/__init__.py
+index 2ea9f20..0304fea 100644
+--- a/yum/__init__.py
++++ b/yum/__init__.py
+@@ -294,6 +294,11 @@ class YumBase(depsolve.Depsolve):
+ startupconf.syslog_facility = syslog_facility
+ if syslog_device != None:
+ startupconf.syslog_device = syslog_device
++ if releasever == '/':
++ if startupconf.installroot == '/':
++ releasever = None
+ else:
-+ pkgobjlist = pkgobjlist[0] + pkgobjlist[1]
-+ for pkg in pkgobjlist:
-+ for pat in patterns:
-+ if pkg.name == pat:
-+ self._pkgnames_loaded.add(pkg.name)
- return pkgobjlist
-
- def _uncached_returnConflictPackages(self):
-@@ -460,6 +537,27 @@ class RPMDBPackageSack(PackageSackBase):
- rpmdbv = self.simpleVersion(main_only=True)[0]
- self._write_conflicts_new(pkgs, rpmdbv)
-
-+ def _deal_with_bad_rpmdbcache(self, caller):
-+ """ This shouldn't be called, but people are hitting weird stuff so
-+ we want to deal with it so it doesn't stay broken "forever". """
-+ misc.unlink_f(self._cachedir + "/version")
-+ misc.unlink_f(self._cachedir + '/conflicts')
-+ misc.unlink_f(self._cachedir + '/file-requires')
-+ misc.unlink_f(self._cachedir + '/yumdb-package-checksums')
-+ # We have a couple of options here, we can:
-+ #
-+ # . Ignore it and continue - least invasive, least likely to get any
-+ # bugs fixed.
-+ #
-+ # . Ignore it and continue, when not in debug mode - Helps users doing
-+ # weird things (and we won't know), but normal bugs will be seen by
-+ # anyone not running directly from a package.
-+ #
-+ # . Always throw - but at least it shouldn't happen again.
-+ #
-+ if __debug__:
-+ raise Errors.PackageSackError, 'Rpmdb checksum is invalid: %s' % caller
-+
- def _read_conflicts(self):
- if not self.__cache_rpmdb__:
- return None
-@@ -492,6 +590,7 @@ class RPMDBPackageSack(PackageSackBase):
- if fo.readline() != '': # Should be EOF
- return None
- except ValueError:
-+ self._deal_with_bad_rpmdbcache("conflicts")
- return None
-
- self._cached_conflicts_data = ret
-@@ -605,6 +704,7 @@ class RPMDBPackageSack(PackageSackBase):
- if fo.readline() != '': # Should be EOF
- return None, None
- except ValueError:
-+ self._deal_with_bad_rpmdbcache("file requires")
- return None, None
-
- return iFR, iFP
-@@ -742,11 +842,16 @@ class RPMDBPackageSack(PackageSackBase):
- if fo.readline() != '': # Should be EOF
- return
- except ValueError:
-+ self._deal_with_bad_rpmdbcache("pkg checksums")
- return
-
- for pkgtup in checksum_data:
- (n, a, e, v, r) = pkgtup
-- pkg = self.searchNevra(n, e, v, r, a)[0]
-+ pkg = self.searchNevra(n, e, v, r, a)
-+ if not pkg:
-+ self._deal_with_bad_rpmdbcache("pkg checksums")
-+ continue
-+ pkg = pkg[0]
- (T, D) = checksum_data[pkgtup]
- if ('checksum_type' in pkg.yumdb_info._read_cached_data or
- 'checksum_data' in pkg.yumdb_info._read_cached_data):
-@@ -806,6 +911,19 @@ class RPMDBPackageSack(PackageSackBase):
- if not self.__cache_rpmdb__:
- return
-
-+ if self._cached_rpmdb_mtime is None:
-+ return # We haven't loaded any packages!!!
-+
-+ rpmdbfname = self.root + "/var/lib/rpm/Packages"
-+ if not os.path.exists(rpmdbfname):
-+ return # haha
-+
-+ _cached_rpmdb_mtime = os.path.getmtime(rpmdbfname)
-+ if self._cached_rpmdb_mtime != _cached_rpmdb_mtime:
-+ # Something altered the rpmdb since we loaded our first package,
-+ # so don't save the rpmdb version as who knows what happened.
-+ return
-+
- rpmdbvfname = self._cachedir + "/version"
- if not os.access(self._cachedir, os.W_OK):
- if os.path.exists(self._cachedir):
-@@ -953,6 +1071,9 @@ class RPMDBPackageSack(PackageSackBase):
-
- def _search(self, name=None, epoch=None, ver=None, rel=None, arch=None):
- '''List of matching packages, to zero or more of NEVRA.'''
-+ if name is not None and name in self._pkgname_fails:
-+ return []
-+
- pkgtup = (name, arch, epoch, ver, rel)
- if pkgtup in self._tup2pkg:
- return [self._tup2pkg[pkgtup]]
-@@ -960,9 +1081,11 @@ class RPMDBPackageSack(PackageSackBase):
- loc = locals()
- ret = []
-
-- if self._completely_loaded:
-+ if self._completely_loaded or name in self._pkgnames_loaded:
- if name is not None:
- pkgs = self._name2pkg.get(name, [])
-+ if not pkgs:
-+ self._pkgname_fails.add(name)
- else:
- pkgs = self.returnPkgs()
- for po in pkgs:
-@@ -982,10 +1105,16 @@ class RPMDBPackageSack(PackageSackBase):
- mi = ts.dbMatch()
- self._completely_loaded = True
-
-+ done = False
- for hdr in mi:
- if hdr['name'] == 'gpg-pubkey':
- continue
- po = self._makePackageObject(hdr, mi.instance())
-+ # We create POs out of all matching names, even if we don't return
-+ # them.
-+ self._pkgnames_loaded.add(po.name)
-+ done = True
-+
- for tag in ('arch', 'rel', 'ver', 'epoch'):
- if loc[tag] is not None and loc[tag] != getattr(po, tag):
- break
-@@ -995,6 +1124,9 @@ class RPMDBPackageSack(PackageSackBase):
- if self.auto_close:
- self.ts.close()
-
-+ if not done and name is not None:
-+ self._pkgname_fails.add(name)
-+
- return ret
-
- def _makePackageObject(self, hdr, index):
-@@ -1004,6 +1136,10 @@ class RPMDBPackageSack(PackageSackBase):
- self._idx2pkg[index] = po
- self._name2pkg.setdefault(po.name, []).append(po)
- self._tup2pkg[po.pkgtup] = po
-+ if self.__cache_rpmdb__ and self._cached_rpmdb_mtime is None:
-+ rpmdbfname = self.root + "/var/lib/rpm/Packages"
-+ self._cached_rpmdb_mtime = os.path.getmtime(rpmdbfname)
-+
- return po
-
- def _hdr2pkgTuple(self, hdr):
-@@ -1249,6 +1385,30 @@ class RPMDBPackageSack(PackageSackBase):
- problems.append(RPMDBProblemDuplicate(pkg, duplicate=last))
- return problems
-
-+ def check_obsoleted(self):
-+ """ Checks for any packages which are obsoleted by other packages. """
-+ obsoleters = []
-+ problems = []
-+ for pkg in sorted(self.returnPackages()):
-+ if not pkg.obsoletes:
-+ continue
-+ obsoleters.append(pkg)
-+ for pkg in sorted(self.returnPackages()):
-+ for obspo in pkg.obsoletedBy(obsoleters):
-+ problems.append(RPMDBProblemObsoleted(pkg, obsoleter=obspo))
-+ return problems
-+
-+ def check_provides(self):
-+ """ For each package, check that a provides search for it's name (and
-+ everything it provides) finds it. """
-+ problems = []
-+ for pkg in sorted(self.returnPackages()):
-+ for provtup in pkg.provides:
-+ name, flags, version = provtup
-+ if pkg not in self.getProvides(name, flags, version):
-+ problems.append(RPMDBProblemProvides(pkg, provide=provtup))
-+ break
-+ return problems
-
- def _sanitize(path):
- return path.replace('/', '').replace('~', '')
-@@ -1280,7 +1440,8 @@ class RPMDBAdditionalData(object):
- self.conf.writable = True
- # Don't call _load_all_package_paths to preload, as it's expensive
- # if the dirs. aren't in cache.
--
-+ self.yumdb_cache = {'attr' : {}}
-+
- def _load_all_package_paths(self):
- # glob the path and get a dict of pkgs to their subdir
- glb = '%s/*/*/' % self.conf.db_path
-@@ -1308,7 +1469,8 @@ class RPMDBAdditionalData(object):
- else:
- raise ValueError,"Pass something to RPMDBAdditionalData.get_package"
-
-- return RPMDBAdditionalDataPackage(self.conf, thisdir)
-+ return RPMDBAdditionalDataPackage(self.conf, thisdir,
-+ yumdb_cache=self.yumdb_cache)
-
- def sync_with_rpmdb(self, rpmdbobj):
- """populate out the dirs and remove all the items no longer in the rpmd
-@@ -1322,12 +1484,96 @@ class RPMDBAdditionalData(object):
- pass
-
- class RPMDBAdditionalDataPackage(object):
-- def __init__(self, conf, pkgdir):
-+
-+ # We do auto hardlink on these attributes
-+ _auto_hardlink_attrs = set(['checksum_type', 'reason',
-+ 'installed_by', 'changed_by',
-+ 'from_repo', 'from_repo_revision',
-+ 'from_repo_timestamp', 'releasever',
-+ 'command_line'])
-+
-+ def __init__(self, conf, pkgdir, yumdb_cache=None):
- self._conf = conf
- self._mydir = pkgdir
-- # FIXME needs some intelligent caching beyond the FS cache
-+
- self._read_cached_data = {}
++ releasever = yum.config._getsysver("/",startupconf.distroverpkg)
+ if releasever != None:
+ startupconf.releasever = releasever
-+ # 'from_repo' is the most often requested piece of data, and is often
-+ # the same for a huge number of packages. So we use hardlinks to share
-+ # data, and try to optimize for that.
-+ # It's useful for other keys too (installed_by/changed_by/reason/etc.)
-+ # so we make it generic.
-+ self._yumdb_cache = yumdb_cache
-+
-+ def _auto_cache(self, attr, value, fn, info=None):
-+ """ Create caches for the attr. We have a per. object read cache so at
-+ worst we only have to read a single attr once. Then we expand that
-+ with (dev, ino) cache, so hardlink data can be read once for
-+ multiple packages. """
-+ self._read_cached_data[attr] = value
-+ if self._yumdb_cache is None:
-+ return
-+
-+ nlinks = 1
-+ if info is not None:
-+ nlinks = info.st_nlink
-+ if nlinks <= 1 and attr not in self._auto_hardlink_attrs:
-+ return
-+
-+ if value in self._yumdb_cache['attr']:
-+ sinfo = self._yumdb_cache['attr'][value][1]
-+ if info is not None and sinfo is not None:
-+ if (info.st_dev, info.st_ino) == (sinfo.st_dev, sinfo.st_ino):
-+ self._yumdb_cache['attr'][value][2].add(fn)
-+ self._yumdb_cache[fn] = value
-+ return
-+ if self._yumdb_cache['attr'][value][0] >= nlinks:
-+ # We already have a better cache file.
-+ return
-+
-+ self._yumdb_cache['attr'][value] = (nlinks, info, set([fn]))
-+ self._yumdb_cache[fn] = value
-+
-+ def _unlink_yumdb_cache(self, fn):
-+ """ Remove old values from the link cache. """
-+ if fn in self._yumdb_cache:
-+ ovalue = self._yumdb_cache[fn]
-+ if ovalue in self._yumdb_cache['attr']:
-+ self._yumdb_cache['attr'][ovalue][2].discard(fn)
-+ if not self._yumdb_cache['attr'][ovalue][2]:
-+ del self._yumdb_cache['attr'][ovalue]
-+ del self._yumdb_cache[fn]
-+
-+ def _link_yumdb_cache(self, fn, value):
-+ """ If we have a matching yumdb cache, link() to it instead of having
-+ to open()+write(). """
-+ if self._yumdb_cache is None:
-+ return False
-+
-+ self._unlink_yumdb_cache(fn)
-+
-+ if value not in self._yumdb_cache['attr']:
-+ return False
-+
-+ assert self._yumdb_cache['attr'][value][2]
+@@ -442,7 +447,11 @@ class YumBase(depsolve.Depsolve):
+ @return: YumRepository instance.
+ '''
+ repo = yumRepo.YumRepository(section)
+- repo.populate(parser, section, self.conf)
+ try:
-+ lfn = iter(self._yumdb_cache['attr'][value][2]).next()
-+ misc.unlink_f(fn + '.tmp')
-+ os.link(lfn, fn + '.tmp')
-+ os.rename(fn + '.tmp', fn)
-+ except:
-+ return False
-+
-+ self._yumdb_cache['attr'][value][2].add(fn)
-+ self._yumdb_cache[fn] = value
-+ self._read_cached_data['attr'] = value
-+
-+ return True
-+
-+ def _attr2fn(self, attr):
-+ """ Given an attribute, return the filename. """
-+ return os.path.normpath(self._mydir + '/' + attr)
-+
- def _write(self, attr, value):
- # check for self._conf.writable before going on?
- if not os.path.exists(self._mydir):
-@@ -1336,8 +1582,17 @@ class RPMDBAdditionalDataPackage(object):
- attr = _sanitize(attr)
- if attr in self._read_cached_data:
- del self._read_cached_data[attr]
-- fn = self._mydir + '/' + attr
-- fn = os.path.normpath(fn)
-+ fn = self._attr2fn(attr)
-+
-+ if attr.endswith('.tmp'):
-+ raise AttributeError, "Cannot set attribute %s on %s" % (attr, self)
-+
-+ # Auto hardlink some of the attrs...
-+ if self._link_yumdb_cache(fn, value):
-+ return
-+
-+ # Default write()+rename()... hardlink -c can still help.
-+ misc.unlink_f(fn + '.tmp')
- fo = open(fn + '.tmp', 'w')
- try:
- fo.write(value)
-@@ -1348,39 +1603,53 @@ class RPMDBAdditionalDataPackage(object):
- fo.close()
- del fo
- os.rename(fn + '.tmp', fn) # even works on ext4 now!:o
-- self._read_cached_data[attr] = value
-+
-+ self._auto_cache(attr, value, fn)
-
- def _read(self, attr):
- attr = _sanitize(attr)
-
-- if attr.endswith('.tmp'):
-- raise AttributeError, "%s has no attribute %s" % (self, attr)
++ repo.populate(parser, section, self.conf)
++ except ValueError, e:
++ msg = _('Repository %r: Error parsing config: %s' % (section,e))
++ raise Errors.ConfigError, msg
+
+ # Ensure that the repo name is set
+ if not repo.name:
+@@ -1403,7 +1412,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
-
- if attr in self._read_cached_data:
- return self._read_cached_data[attr]
-+ fn = self._attr2fn(attr)
-
-- fn = self._mydir + '/' + attr
-- if not os.path.exists(fn):
-+ if attr.endswith('.tmp'):
- raise AttributeError, "%s has no attribute %s" % (self, attr)
-
-+ info = misc.stat_f(fn)
-+ if info is None:
-+ raise AttributeError, "%s has no attribute %s" % (self, attr)
-+
-+ if info.st_nlink > 1 and self._yumdb_cache is not None:
-+ key = (info.st_dev, info.st_ino)
-+ if key in self._yumdb_cache:
-+ self._auto_cache(attr, self._yumdb_cache[key], fn, info)
-+ return self._read_cached_data[attr]
-+
- fo = open(fn, 'r')
-- self._read_cached_data[attr] = fo.read()
-+ value = fo.read()
- fo.close()
- del fo
-- return self._read_cached_data[attr]
-+
-+ if info.st_nlink > 1 and self._yumdb_cache is not None:
-+ self._yumdb_cache[key] = value
-+ self._auto_cache(attr, value, fn, info)
-+
-+ return value
-
- def _delete(self, attr):
- """remove the attribute file"""
-
- attr = _sanitize(attr)
-- fn = self._mydir + '/' + attr
-+ fn = self._attr2fn(attr)
- if attr in self._read_cached_data:
- del self._read_cached_data[attr]
-+ self._unlink_yumdb_cache(fn)
- if os.path.exists(fn):
- try:
- os.unlink(fn)
- except (IOError, OSError):
-- raise AttributeError, "Cannot delete attribute %s on " % (attr, self)
-+ raise AttributeError, "Cannot delete attribute %s on %s " % (attr, self)
-
- def __getattr__(self, attr):
- return self._read(attr)
-@@ -1397,6 +1666,12 @@ class RPMDBAdditionalDataPackage(object):
- else:
- object.__delattr__(self, attr)
-
-+ def __contains__(self, attr):
-+ # This is faster than __iter__ and it makes things fail in a much more
-+ # obvious way in weird FS corruption cases like: BZ 593436
-+ x = self.get(attr)
-+ return x is not None
-+
- def __iter__(self, show_hidden=False):
- for item in self._read_cached_data:
- yield item
-diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
-index 1d6c764..820f003 100644
---- a/yum/sqlitesack.py
-+++ b/yum/sqlitesack.py
-@@ -259,9 +259,7 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
- if varname.startswith('__') and varname.endswith('__'):
- raise AttributeError, varname
-
-- dbname = varname
-- if db2simplemap.has_key(varname):
-- dbname = db2simplemap[varname]
-+ dbname = db2simplemap.get(varname, varname)
- try:
- r = self._sql_MD('primary',
- "SELECT %s FROM packages WHERE pkgId = ?" % dbname,
-@@ -353,6 +351,8 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
- return self._changelog
-
- def returnFileEntries(self, ftype='file', primary_only=False):
-+ """return list of files based on type, you can pass primary_only=True
-+ to limit to those files in the primary repodata"""
- if primary_only and not self._loadedfiles:
- sql = "SELECT name as fname FROM files WHERE pkgKey = ? and type = ?"
- cur = self._sql_MD('primary', sql, (self.pkgKey, ftype))
-@@ -361,7 +361,14 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
- self._loadFiles()
- return RpmBase.returnFileEntries(self,ftype,primary_only)
-
-- def returnFileTypes(self):
-+ def returnFileTypes(self, primary_only=False):
-+ """return list of types of files in the package, you can pass
-+ primary_only=True to limit to those files in the primary repodata"""
-+ if primary_only and not self._loadedfiles:
-+ sql = "SELECT DISTINCT type as ftype FROM files WHERE pkgKey = ?"
-+ cur = self._sql_MD('primary', sql, (self.pkgKey,))
-+ return map(lambda x: x['ftype'], cur)
-+
- self._loadFiles()
- return RpmBase.returnFileTypes(self)
++
++ vt_st = time.time()
+ self.rpmdb.dropCachedData()
+ self.plugins.run('preverifytrans')
+ for txmbr in self.tsInfo:
+@@ -1489,6 +1499,7 @@ class YumBase(depsolve.Depsolve):
+ self.plugins.run('historyend')
+ self.history.end(self.rpmdb.simpleVersion(main_only=True)[0], ret)
+ self.rpmdb.dropCachedData()
++ self.verbose_logger.debug('VerifyTransaction time: %0.3f' % (time.time() - vt_st))
-@@ -381,6 +388,8 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
- cur = self._sql_MD('primary', sql, (self.pkgKey,))
- self.prco[prcotype] = [ ]
- for ob in cur:
-+ if not ob['name']:
-+ continue
- prco_set = (_share_data(ob['name']), _share_data(ob['flags']),
- (_share_data(ob['epoch']),
- _share_data(ob['version']),
-@@ -428,6 +437,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- self._pkgname2pkgkeys = {}
- self._pkgtup2pkgs = {}
- self._pkgnames_loaded = set()
-+ self._pkgmatch_fails = set()
-+ self._provmatch_fails = set()
- self._arch_allowed = None
- self._pkgExcluder = []
- self._pkgExcludeIds = {}
-@@ -491,6 +502,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- self._key2pkg = {}
- self._pkgname2pkgkeys = {}
- self._pkgnames_loaded = set()
-+ self._pkgmatch_fails = set()
-+ self._provmatch_fails = set()
- self._pkgtup2pkgs = {}
- self._search_cache = {
- 'provides' : { },
-@@ -543,7 +556,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- # Because we don't want to remove a package from the database we just
- # add it to the exclude list
- def delPackage(self, obj):
-- if not self.excludes.has_key(obj.repo):
-+ if obj.repo not in self.excludes:
- self.excludes[obj.repo] = {}
- self.excludes[obj.repo][obj.pkgId] = 1
- if (obj.repo, obj.pkgKey) in self._exclude_whitelist:
-@@ -697,9 +710,13 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- if excluderid is not None:
- self._pkgExcludeIds[excluderid] = len(self._pkgExcluder)
+ def costExcludePackages(self):
+ """ Create an excluder for repos. with higher cost. Eg.
+@@ -3669,6 +3680,7 @@ class YumBase(depsolve.Depsolve):
+ self.logger.critical(_('%s') % e)
+
+ if not depmatches:
++ arg = to_unicode(arg)
+ self.logger.critical(_('No Match for argument: %s') % arg)
+ else:
+ pkgs.extend(depmatches)
+diff --git a/yum/history.py b/yum/history.py
+index 502b908..6bc767a 100644
+--- a/yum/history.py
++++ b/yum/history.py
+@@ -27,7 +27,7 @@ import yum.misc as misc
+ import yum.constants
+ from yum.constants import *
+ from yum.packages import YumInstalledPackage, YumAvailablePackage, PackageObject
+-from yum.i18n import to_unicode
++from yum.i18n import to_unicode, to_utf8
-+ self._exclude_whitelist = set()
-+ self._pkgobjlist_dirty = True
-+
- def _packageByKey(self, repo, pkgKey, exclude=True):
- """ Lookup a pkg by it's pkgKey, if we don't have it load it """
- # Speed hack, so we don't load the pkg. if the pkgKey is dead.
-+ assert exclude
- if exclude and self._pkgKeyExcluded(repo, pkgKey):
- return None
-@@ -720,10 +737,14 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- self._pkgtup2pkgs.setdefault(po.pkgtup, []).append(po)
- pkgkeys = self._pkgname2pkgkeys[repo].setdefault(data['name'], [])
- pkgkeys.append(pkgKey)
-+ elif exclude and self._pkgExcluded(self._key2pkg[repo][pkgKey]):
-+ self._delPackageRK(repo, pkgKey)
-+ return None
- return self._key2pkg[repo][pkgKey]
-
- def _packageByKeyData(self, repo, pkgKey, data, exclude=True):
- """ Like _packageByKey() but we already have the data for .pc() """
-+ assert exclude
- if exclude and self._pkgExcludedRKD(repo, pkgKey, data):
+ _history_dir = '/var/lib/yum/history'
+@@ -425,12 +425,15 @@ class YumHistory:
+ cur = self._get_cursor()
+ if cur is None or not self._update_db_file_2():
return None
- if repo not in self._key2pkg:
-@@ -767,13 +788,13 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- return ret
-
- def addDict(self, repo, datatype, dataobj, callback=None):
-- if self.added.has_key(repo):
-+ if repo in self.added:
- if datatype in self.added[repo]:
- return
- else:
- self.added[repo] = []
-
-- if not self.excludes.has_key(repo):
-+ if repo not in self.excludes:
- self.excludes[repo] = {}
++ # str(problem) doesn't work if problem contains unicode(),
++ # unicode(problem) doesn't work in python 2.4.x ... *sigh*.
++ uproblem = to_unicode(problem.__str__())
+ res = executeSQL(cur,
+ """INSERT INTO trans_rpmdb_problems
+ (tid, problem, msg)
+ VALUES (?, ?, ?)""", (self._tid,
+ problem.problem,
+- to_unicode(str(problem))))
++ uproblem))
+ rpid = cur.lastrowid
+
+ if not rpid:
+@@ -610,7 +613,7 @@ class YumHistory:
+ # open file in append
+ fo = open(data_fn, 'w+')
+ # write data
+- fo.write(data)
++ fo.write(to_utf8(data))
+ # flush data
+ fo.flush()
+ fo.close()
+@@ -914,17 +917,19 @@ class YumHistory:
+ version || '-' || release || '.' || arch AS nevra
+ FROM trans_skip_pkgs JOIN pkgtups USING(pkgtupid)
+ ORDER BY name;
+-''', # NOTE: Old versions of sqlite don't like this next view, they are only
+- # there for debugging anyway ... but it's worth remembering.
++''', # NOTE: Old versions of sqlite don't like the normal way to do the next
++ # view. So we do it with the select. It's for debugging only, so
++ # no big deal.
+ '''\
+ \
+- CREATE VIEW vtrans_prob_pkgs AS
++ CREATE VIEW vtrans_prob_pkgs2 AS
+ SELECT tid,rpid,name,epoch,version,release,arch,pkgtups.pkgtupid,
+- main,
++ main,problem,msg,
+ name || '-' || epoch || ':' ||
+ version || '-' || release || '.' || arch AS nevra
+- FROM (trans_prob_pkgs JOIN trans_rpmdb_problems USING(rpid))
+- JOIN pkgtups USING(pkgtupid)
++ FROM (SELECT * FROM trans_prob_pkgs,trans_rpmdb_problems WHERE
++ trans_prob_pkgs.rpid=trans_rpmdb_problems.rpid)
++ JOIN pkgtups USING(pkgtupid)
+ ORDER BY name;
+ ''']
- if dataobj is None:
-@@ -838,6 +859,32 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- return misc.unique(results)
-
- @catchSqliteException
-+ def _have_fastReturnFileEntries(self):
-+ """ Return true if pkg.returnFileEntries(primary_only=True) is fast.
-+ basically does "CREATE INDEX pkgfiles ON files (pkgKey);" exist. """
-+
-+ for (rep,cache) in self.primarydb.items():
-+ if rep in self._all_excludes:
-+ continue
-+ cur = cache.cursor()
-+ executeSQL(cur, "PRAGMA index_info(pkgfiles)")
-+ # If we get anything, we're fine. There might be a better way of
-+ # saying "anything" but this works.
-+ for ob in cur:
-+ break
-+ else:
-+ return False
-+
-+ return True
-+
-+ def have_fastReturnFileEntries(self):
-+ """ Is calling pkg.returnFileEntries(primary_only=True) faster than
-+ using searchFiles(). """
-+ if not hasattr(self, '_cached_fRFE'):
-+ self._cached_fRFE = self._have_fastReturnFileEntries()
-+ return self._cached_fRFE
-+
-+ @catchSqliteException
- def searchFiles(self, name, strict=False):
- """search primary if file will be in there, if not, search filelists, use globs, if possible"""
-
-@@ -1194,7 +1241,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- return result
+diff --git a/yum/pgpmsg.py b/yum/pgpmsg.py
+index 9cf8217..9f58fad 100644
+--- a/yum/pgpmsg.py
++++ b/yum/pgpmsg.py
+@@ -1186,7 +1186,7 @@ def decode(msg) :
+ idx = idx + pkt_len
+ return pkt_list
+
+-def decode_msg(msg) :
++def decode_msg(msg, multi=False) :
+ """decode_msg(msg) ==> list of OpenPGP "packet" objects
+ Takes an ascii-armored PGP block and returns a list of objects each of which
+ corresponds to a PGP "packets".
+@@ -1242,11 +1242,17 @@ a PGP "certificate" includes a public key, user id(s), and signature.
+ pkt_idx = cert.load(pkt_list)
+ cert_list.append(cert)
+ pkt_list[0:pkt_idx] = []
++ if not multi:
++ if not cert_list:
++ return None
++ return cert_list[0]
+ return cert_list
+
+ # add the data to our buffer then
+ block_buf.write(l)
+
++ if not multi:
++ return None
+ return []
- if not misc.re_primary_filename(name):
-- # if its not in the primary.xml files
-+ # If it is not in the primary.xml files
- # search the files.xml file info
- for pkg in self.searchFiles(name, strict=True):
- result[pkg] = [(name, None, None)]
-@@ -1228,6 +1275,9 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- user_names = set(names)
- names = []
- for pkgname in user_names:
-+ if pkgname in self._pkgmatch_fails:
-+ continue
-+
- if loaded_all_names or pkgname in self._pkgnames_loaded:
- returnList.extend(self._packagesByName(pkgname))
- else:
-@@ -1274,8 +1324,14 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- (n,f,(e,v,r)) = misc.string_to_prco_tuple(name)
- except Errors.MiscError, e:
- raise Errors.PackageSackError, to_unicode(e)
--
-- n = to_unicode(n)
-+
-+ # The _b means this is a byte string
-+ # The _u means this is a unicode string
-+ # A bare n is used when, it's unicode but hasn't been evaluated
-+ # whether that's actually the right thing to do
-+ n_b = n
-+ n_u = to_unicode(n)
-+ n = n_u
+ def decode_multiple_keys(msg):
+diff --git a/yumcommands.py b/yumcommands.py
+index a7f5d9e..9c6fc75 100644
+--- a/yumcommands.py
++++ b/yumcommands.py
+@@ -122,6 +122,25 @@ def checkShellArg(base, basecmd, extcmds):
+ base.usage()
+ raise cli.CliError
- glob = True
- querytype = 'glob'
-@@ -1296,9 +1352,9 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- # file dep add all matches to the results
- results.append(po)
- continue
--
++def checkEnabledRepo(base, possible_local_files=[]):
++ """
++ Verify that there is at least one enabled repo.
+
- if not glob:
-- if po.checkPrco(prcotype, (n, f, (e,v,r))):
-+ if po.checkPrco(prcotype, (n_b, f, (e,v,r))):
- results.append(po)
- else:
- # if it is a glob we can't really get any closer to checking it
-@@ -1312,64 +1368,22 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- # If it is a filename, search the primary.xml file info
- results.extend(self._search_primary_files(n))
-
-- # if its in the primary.xml files then skip the other check
-+ # If it is in the primary.xml files then skip the other check
- if misc.re_primary_filename(n) and not glob:
- return misc.unique(results)
-
- # If it is a filename, search the files.xml file info
- results.extend(self.searchFiles(n))
- return misc.unique(results)
--
--
-- #~ #FIXME - comment this all out below here
-- #~ for (rep,cache) in self.filelistsdb.items():
-- #~ cur = cache.cursor()
-- #~ (dirname,filename) = os.path.split(name)
-- #~ # FIXME: why doesn't this work???
-- #~ if 0: # name.find('%') == -1: # no %'s in the thing safe to LIKE
-- #~ executeSQL(cur, "select packages.pkgId as pkgId,\
-- #~ filelist.dirname as dirname,\
-- #~ filelist.filetypes as filetypes,\
-- #~ filelist.filenames as filenames \
-- #~ from packages,filelist where \
-- #~ (filelist.dirname LIKE ? \
-- #~ OR (filelist.dirname LIKE ? AND\
-- #~ filelist.filenames LIKE ?))\
-- #~ AND (filelist.pkgKey = packages.pkgKey)", (name,dirname,filename))
-- #~ else:
-- #~ executeSQL(cur, "select packages.pkgId as pkgId,\
-- #~ filelist.dirname as dirname,\
-- #~ filelist.filetypes as filetypes,\
-- #~ filelist.filenames as filenames \
-- #~ from filelist,packages where dirname = ? AND filelist.pkgKey = packages.pkgKey" , (dirname,))
--
-- #~ matching_ids = []
-- #~ for res in cur:
-- #~ if self._excluded(rep, res['pkgId']):
-- #~ continue
--
-- #~ #FIXME - optimize the look up here by checking for single-entry filenames
-- #~ quicklookup = {}
-- #~ for fn in decodefilenamelist(res['filenames']):
-- #~ quicklookup[fn] = 1
--
-- #~ # If it matches the dirname, that doesnt mean it matches
-- #~ # the filename, check if it does
-- #~ if filename and filename not in quicklookup:
-- #~ continue
--
-- #~ matching_ids.append(str(res['pkgId']))
--
--
-- #~ pkgs = self._getListofPackageDetails(matching_ids)
-- #~ for pkg in pkgs:
-- #~ results.append(self.pc(rep,pkg))
--
-- #~ return results
-
- def searchProvides(self, name):
- """return list of packages providing name (any evr and flag)"""
-- return self.searchPrco(name, "provides")
-+ if name in self._provmatch_fails:
-+ return []
-+ ret = self.searchPrco(name, "provides")
-+ if not ret:
-+ self._provmatch_fails.add(name)
-+ return ret
-
- def searchRequires(self, name):
- """return list of packages requiring name (any evr and flag)"""
-@@ -1502,7 +1516,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- 'sql_envra', 'sql_nevra']
- need_full = False
- for pat in patterns:
-- if misc.re_full_search_needed(pat):
-+ if (misc.re_full_search_needed(pat) and
-+ (ignore_case or pat not in self._pkgnames_loaded)):
- need_full = True
- break
-
-@@ -1536,12 +1551,18 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- pat_sqls = []
- pat_data = []
- for (pattern, rest) in patterns:
-+ if not ignore_case and pattern in self._pkgmatch_fails:
-+ continue
++ @param base: a YumBase object.
++ """
++ if base.repos.listEnabled():
++ return
+
- for field in fields:
- if ignore_case:
- pat_sqls.append("%s LIKE ?%s" % (field, rest))
- else:
- pat_sqls.append("%s %s ?" % (field, rest))
- pat_data.append(pattern)
-+ if patterns and not pat_sqls:
++ for lfile in possible_local_files:
++ if lfile.endswith(".rpm") and os.path.exists(lfile):
+ return
+
- if pat_sqls:
- qsql = _FULL_PARSE_QUERY_BEG + " OR ".join(pat_sqls)
- else:
-@@ -1568,6 +1589,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
-
- for (repo, x) in self._yieldSQLDataList(repoid, patterns, fields,
- ignore_case):
-+ # Can't use: _sql_pkgKey2po because we change repos.
- po = self._packageByKeyData(repo, x['pkgKey'], x)
- if po is None:
- continue
-@@ -1578,6 +1600,17 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
- if not need_full and repoid is None:
- # Mark all the processed pkgnames as fully loaded
- self._pkgnames_loaded.update([po.name for po in returnList])
-+ if need_full:
-+ for (pat, rest) in patterns:
-+ if rest not in ('=', ''): # Wildcards: 'glob' or ' ESCAPE "!"'
-+ continue
-+ for pkg in returnList:
-+ if pkg.name == pat:
-+ self._pkgnames_loaded.add(pkg.name)
-+ break
-+ if not returnList:
-+ for (pat, rest) in patterns:
-+ self._pkgmatch_fails.add(pat)
-
- return returnList
-
-diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
-index e7b60de..31d3569 100644
---- a/yum/transactioninfo.py
-+++ b/yum/transactioninfo.py
-@@ -39,7 +39,7 @@ class GetProvReqOnlyPackageSack(PackageSack):
- self._need_index_files = need_files
-
- def __addPackageToIndex_primary_files(self, obj):
-- for ftype in obj.returnFileTypes():
-+ for ftype in obj.returnFileTypes(primary_only=True):
- for file in obj.returnFileEntries(ftype, primary_only=True):
- self._addToDictAsList(self.filenames, file, obj)
- def __addPackageToIndex_files(self, obj):
-@@ -89,9 +89,7 @@ class TransactionData:
- self.pkgSack = None
- self.pkgSackPackages = 0
- self.localSack = PackageSack()
-- # FIXME: This is turned off atm. ... it'll be turned on when
-- # the new yum-metadata-parser with the "pkgfiles" index is std.
-- self._inSack = None # GetProvReqOnlyPackageSack()
-+ self._inSack = GetProvReqOnlyPackageSack()
-
- # lists of txmbrs in their states - just placeholders
- self.instgroups = []
-@@ -132,7 +130,7 @@ class TransactionData:
- if pkgtup is None:
- for members in self.pkgdict.itervalues():
- returnlist.extend(members)
-- elif self.pkgdict.has_key(pkgtup):
-+ elif pkgtup in self.pkgdict:
- returnlist.extend(self.pkgdict[pkgtup])
- return returnlist
-
-@@ -195,6 +193,39 @@ class TransactionData:
-
- return result
-
-+ def deselect(self, pattern):
-+ """ Remove these packages from the transaction. This is more user
-+ orientated than .remove(). Used from kickstart/install -blah. """
-+
-+ # We don't have a returnPackages() here, so just try the "simple"
-+ # specifications. Pretty much 100% hit rate on kickstart.
-+ txmbrs = self.matchNaevr(pattern)
-+ if not txmbrs:
-+ na = pattern.rsplit('.', 2)
-+ if len(na) == 2:
-+ txmbrs = self.matchNaevr(na[0], na[1])
-+
-+ if not txmbrs:
-+ if self.pkgSack is None:
-+ pkgs = []
-+ else:
-+ pkgs = self.pkgSack.returnPackages(patterns=[pattern])
-+ if not pkgs:
-+ pkgs = self.rpmdb.returnPackages(patterns=[pattern])
-+
-+ for pkg in pkgs:
-+ txmbrs.extend(self.getMembers(pkg.pkgtup))
-+ # Now we need to do conditional group packages, so they don't
-+ # get added later on. This is hacky :(
-+ for req, cpkgs in self.conditionals.iteritems():
-+ if pkg in cpkgs:
-+ cpkgs.remove(pkg)
-+ self.conditionals[req] = cpkgs
++ msg = _('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>')
++ base.logger.critical(msg)
++ raise cli.CliError
+
-+ for txmbr in txmbrs:
-+ self.remove(txmbr.pkgtup)
-+ return txmbrs
-+
- def _isLocalPackage(self, txmember):
- # Is this the right criteria?
- # FIXME: This is kinda weird, we really want all local pkgs to be in a
-@@ -239,9 +270,13 @@ class TransactionData:
- elif isinstance(txmember.po, YumAvailablePackageSqlite):
- self.pkgSackPackages += 1
- if self._inSack is not None and txmember.output_state in TS_INSTALL_STATES:
-- self._inSack.addPackage(txmember.po)
-+ if not txmember.po.have_fastReturnFileEntries():
-+ # In theory we could keep this on if a "small" repo. fails
-+ self._inSack = None
-+ else:
-+ self._inSack.addPackage(txmember.po)
-
-- if self.conditionals.has_key(txmember.name):
-+ if txmember.name in self.conditionals:
- for pkg in self.conditionals[txmember.name]:
- if self.rpmdb.contains(po=pkg):
- continue
-@@ -273,7 +308,7 @@ class TransactionData:
-
- def exists(self, pkgtup):
- """tells if the pkg is in the class"""
-- if self.pkgdict.has_key(pkgtup):
-+ if pkgtup in self.pkgdict:
- if len(self.pkgdict[pkgtup]) != 0:
- return 1
+ class YumCommand:
-@@ -314,8 +349,7 @@ class TransactionData:
- self.updated.append(txmbr)
-
- elif txmbr.output_state in (TS_INSTALL, TS_TRUEINSTALL):
-- if include_reinstall and self.rpmdb.contains(po=txmbr.po):
-- txmbr.reinstall = True
-+ if include_reinstall and txmbr.reinstall:
- self.reinstalled.append(txmbr)
- continue
+ def __init__(self):
+@@ -176,6 +195,7 @@ class InstallCommand(YumCommand):
+ checkRootUID(base)
+ checkGPGKey(base)
+ checkPackageArg(base, basecmd, extcmds)
++ checkEnabledRepo(base, extcmds)
-@@ -368,7 +402,6 @@ class TransactionData:
- self.downgraded.sort()
- self.failed.sort()
+ def doCommand(self, base, basecmd, extcmds):
+ self.doneCommand(base, _("Setting up Install Process"))
+@@ -197,6 +217,7 @@ class UpdateCommand(YumCommand):
+ def doCheck(self, base, basecmd, extcmds):
+ checkRootUID(base)
+ checkGPGKey(base)
++ checkEnabledRepo(base, extcmds)
--
- def addInstall(self, po):
- """adds a package as an install but in mode 'u' to the ts
- takes a packages object and returns a TransactionMember Object"""
-@@ -382,6 +415,10 @@ class TransactionData:
- txmbr.po.state = TS_INSTALL
- txmbr.ts_state = 'u'
- txmbr.reason = 'user'
-+
-+ if self.rpmdb.contains(po=txmbr.po):
-+ txmbr.reinstall = True
-+
- self.add(txmbr)
- return txmbr
+ def doCommand(self, base, basecmd, extcmds):
+ self.doneCommand(base, _("Setting up Update Process"))
+@@ -218,6 +239,7 @@ class DistroSyncCommand(YumCommand):
+ def doCheck(self, base, basecmd, extcmds):
+ checkRootUID(base)
+ checkGPGKey(base)
++ checkEnabledRepo(base, extcmds)
-@@ -395,6 +432,10 @@ class TransactionData:
- txmbr.po.state = TS_INSTALL
- txmbr.ts_state = 'i'
- txmbr.reason = 'user'
-+
-+ if self.rpmdb.contains(po=txmbr.po):
-+ txmbr.reinstall = True
-+
- self.add(txmbr)
- return txmbr
+ def doCommand(self, base, basecmd, extcmds):
+ self.doneCommand(base, _("Setting up Distribution Synchronization Process"))
+@@ -420,6 +442,9 @@ class GroupListCommand(GroupCommand):
+ def getSummary(self):
+ return _("List available package groups")
-@@ -472,6 +513,10 @@ class TransactionData:
- txmbr.ts_state = 'u'
- txmbr.relatedto.append((oldpo, 'obsoletes'))
- txmbr.obsoletes.append(oldpo)
-+
-+ if self.rpmdb.contains(po=txmbr.po):
-+ txmbr.reinstall = True
-+
- self.add(txmbr)
- return txmbr
-
-@@ -573,7 +618,7 @@ class TransactionData:
- for txmbr in self.getMembersWithState(None, TS_INSTALL_STATES):
- # reinstalls have to use their "new" checksum data, in case it's
- # different.
-- if hasattr(txmbr, 'reinstall') and txmbr.reinstall:
-+ if txmbr.reinstall:
- _reinstalled_pkgtups[txmbr.po.pkgtup] = txmbr.po
- pkgs.append(txmbr.po)
-
-@@ -686,6 +731,7 @@ class TransactionMember:
- self.updated_by = []
- self.downgrades = []
- self.downgraded_by = []
-+ self.reinstall = False
- self.groups = [] # groups it's in
- self._poattr = ['pkgtup', 'repoid', 'name', 'arch', 'epoch', 'version',
- 'release']
-@@ -694,6 +740,14 @@ class TransactionMember:
- val = getattr(self.po, attr)
- setattr(self, attr, val)
-
-+ if po.repoid == 'installed':
-+ # We want to load these so that we can auto hardlink in the same
-+ # new values. Because of the hardlinks it should be really cheap
-+ # to load them ... although it's still a minor hack.
-+ po.yumdb_info.get('from_repo')
-+ po.yumdb_info.get('releasever')
-+ po.yumdb_info.get('changed_by')
-+
- def setAsDep(self, po=None):
- """sets the transaction member as a dependency and maps the dep into the
- relationship list attribute"""
-diff --git a/yum/update_md.py b/yum/update_md.py
-index 54d4cd7..9e492ba 100644
---- a/yum/update_md.py
-+++ b/yum/update_md.py
-@@ -22,23 +22,16 @@ Update metadata (updateinfo.xml) parsing.
- """
-
- import sys
--import gzip
-
- from yum.i18n import utf8_text_wrap, to_utf8
- from yum.yumRepo import YumRepository
- from yum.packages import FakeRepository
--from yum.misc import to_xml
-+from yum.misc import to_xml, decompress
-+from yum.misc import cElementTree_iterparse as iterparse
- import Errors
-
- import rpmUtils.miscutils
-
--try:
-- from xml.etree import cElementTree
--except ImportError:
-- import cElementTree
--iterparse = cElementTree.iterparse
--
--
- class UpdateNoticeException(Exception):
- """ An exception thrown for bad UpdateNotice data. """
- pass
-@@ -73,10 +66,10 @@ class UpdateNotice(object):
-
- def __getitem__(self, item):
- """ Allows scriptable metadata access (ie: un['update_id']). """
-- return self._md.has_key(item) and self._md[item] or None
-+ return self._md.get(item) or None
-
- def __setitem__(self, item, val):
-- self._md[item] = val
-+ self._md[item] = val
-
- def __str__(self):
- head = """
-@@ -328,20 +321,22 @@ class UpdateMetadata(object):
- """
- if type(nvr) in (type([]), type(())):
- nvr = '-'.join(nvr)
-- return self._cache.has_key(nvr) and self._cache[nvr] or None
-+ return self._cache.get(nvr) or None
-
- # The problem with the above "get_notice" is that not everyone updates
- # daily. So if you are at pkg-1, pkg-2 has a security notice, and pkg-3
- # has a BZ fix notice. All you can see is the BZ notice for the new "pkg-3"
- # with the above.
- # So now instead you lookup based on the _installed_ pkg.pkgtup, and get
-- # two notices, in order: [(pkg-3, notice), (pkg-2, notice)]
-+ # two notices, in order: [(pkgtup-3, notice), (pkgtup-2, notice)]
- # the reason for the sorting order is that the first match will give you
- # the minimum pkg you need to move to.
- def get_applicable_notices(self, pkgtup):
- """
- Retrieve any update notices which are newer than a
- given std. pkgtup (name, arch, epoch, version, release) tuple.
-+ Returns: list of (pkgtup, notice) that are newer than the given pkgtup,
-+ in the order of newest pkgtups first.
- """
- oldpkgtup = pkgtup
- name = oldpkgtup[0]
-@@ -380,14 +375,17 @@ class UpdateMetadata(object):
- if not obj:
- raise UpdateNoticeException
- if type(obj) in (type(''), type(u'')):
-- infile = obj.endswith('.gz') and gzip.open(obj) or open(obj, 'rt')
-+ unfile = decompress(obj)
-+ infile = open(unfile, 'rt')
++ def doCheck(self, base, basecmd, extcmds):
++ checkEnabledRepo(base)
+
- elif isinstance(obj, YumRepository):
- if obj.id not in self._repos:
- self._repos.append(obj.id)
- md = obj.retrieveMD(mdtype)
- if not md:
- raise UpdateNoticeException()
-- infile = gzip.open(md)
-+ unfile = decompress(md)
-+ infile = open(unfile, 'rt')
- elif isinstance(obj, FakeRepository):
- raise Errors.RepoMDError, "No updateinfo for local pkg"
- else: # obj is a file object
-diff --git a/yum/yumRepo.py b/yum/yumRepo.py
-index 8d7617e..dd595f0 100644
---- a/yum/yumRepo.py
-+++ b/yum/yumRepo.py
-@@ -19,7 +19,6 @@ import time
- import types
- import urlparse
- urlparse.uses_fragment.append("media")
--import gzip
-
- import Errors
- from urlgrabber.grabber import URLGrabber
-@@ -78,7 +77,7 @@ class YumPackageSack(packageSack.PackageSack):
- self.added = {}
-
- def addDict(self, repo, datatype, dataobj, callback=None):
-- if self.added.has_key(repo):
-+ if repo in self.added:
- if datatype in self.added[repo]:
- return
-
-@@ -94,14 +93,14 @@ class YumPackageSack(packageSack.PackageSack):
- self._addToDictAsList(self.pkgsByID, pkgid, po)
- self.addPackage(po)
-
-- if not self.added.has_key(repo):
-+ if repo not in self.added:
- self.added[repo] = []
- self.added[repo].append('metadata')
- # indexes will need to be rebuilt
- self.indexesBuilt = 0
-
- elif datatype in ['filelists', 'otherdata']:
-- if self.added.has_key(repo):
-+ if repo in self.added:
- if 'metadata' not in self.added[repo]:
- raise Errors.RepoError, '%s md for %s imported before primary' \
- % (datatype, repo.id)
-@@ -110,7 +109,7 @@ class YumPackageSack(packageSack.PackageSack):
- current += 1
- if callback: callback.progressbar(current, total, repo)
- pkgdict = dataobj[pkgid]
-- if self.pkgsByID.has_key(pkgid):
-+ if pkgid in self.pkgsByID:
- for po in self.pkgsByID[pkgid]:
- po.importFromDict(pkgdict)
-
-@@ -134,7 +133,7 @@ class YumPackageSack(packageSack.PackageSack):
- callback=callback,
- )
- for item in data:
-- if self.added.has_key(repo):
-+ if repo in self.added:
- if item in self.added[repo]:
- continue
-
-@@ -163,7 +162,7 @@ class YumPackageSack(packageSack.PackageSack):
-
- if self._check_db_version(repo, mydbtype):
- # see if we have the uncompressed db and check it's checksum vs the openchecksum
-- # if not download the bz2 file
-+ # if not download the compressed file
- # decompress it
- # unlink it
-
-@@ -171,9 +170,8 @@ class YumPackageSack(packageSack.PackageSack):
- if not db_un_fn:
- db_fn = repo._retrieveMD(mydbtype)
- if db_fn:
-- db_un_fn = db_fn.replace('.bz2', '')
- if not repo.cache:
-- misc.bunzipFile(db_fn, db_un_fn)
-+ db_un_fn = misc.decompress(db_fn)
- misc.unlink_f(db_fn)
- db_un_fn = self._check_uncompressed_db(repo, mydbtype)
-
-@@ -199,8 +197,8 @@ class YumPackageSack(packageSack.PackageSack):
- mydbdata = repo.repoXML.getData(mdtype)
- (r_base, remote) = mydbdata.location
- fname = os.path.basename(remote)
-- bz2_fn = repo.cachedir + '/' + fname
-- db_un_fn = bz2_fn.replace('.bz2', '')
-+ compressed_fn = repo.cachedir + '/' + fname
-+ db_un_fn = misc.decompress(compressed_fn, fn_only=True)
-
- result = None
-
-@@ -385,7 +383,7 @@ class YumRepository(Repository, config.RepoConf):
- if isinstance(getattr(self, attr), types.MethodType):
- continue
- res = getattr(self, attr)
-- if not res:
-+ if not res and type(res) not in (type(False), type(0)):
- res = ''
- if type(res) == types.ListType:
- res = ',\n '.join(res)
-@@ -957,6 +955,7 @@ class YumRepository(Repository, config.RepoConf):
- if not self.mediafunc and self.mediaid and not self.mirrorlist and not self.baseurl:
- verbose_logger.log(logginglevels.DEBUG_2, "Disabling media repo for non-media-aware frontend")
- self.enabled = False
-+ self.skip_if_unavailable = True
-
- def _cachingRepoXML(self, local):
- """ Should we cache the current repomd.xml """
-@@ -1082,16 +1081,14 @@ class YumRepository(Repository, config.RepoConf):
- self._check_db_version(mdtype + '_db', repoXML=repoXML)):
- mdtype += '_db'
-
-- if repoXML.repoData.has_key(mdtype):
-- return (mdtype, repoXML.getData(mdtype))
-- return (mdtype, None)
-+ return (mdtype, repoXML.repoData.get(mdtype))
-
- def _get_mdtype_fname(self, data, compressed=False):
- (r_base, remote) = data.location
- local = self.cachedir + '/' + os.path.basename(remote)
-
- if compressed: # DB file, we need the uncompressed version
-- local = local.replace('.bz2', '')
-+ local = misc.decompress(local, fn_only=True)
- return local
-
- def _groupCheckDataMDNewer(self):
-@@ -1246,7 +1243,7 @@ class YumRepository(Repository, config.RepoConf):
- compressed = False
- local = self._get_mdtype_fname(data, False)
- if not os.path.exists(local):
-- local = local.replace('.bz2', '')
-+ local = misc.decompress(local, fn_only=True)
- compressed = True
- # If we can, make a copy of the system-wide-cache version of this file,
- # note that we often don't get here. So we also do this in
-@@ -1353,10 +1350,9 @@ class YumRepository(Repository, config.RepoConf):
+ def doCommand(self, base, basecmd, extcmds):
+ GroupCommand.doCommand(self, base, basecmd, extcmds)
+ return base.returnGroupLists(extcmds)
+@@ -441,6 +466,7 @@ class GroupInstallCommand(GroupCommand):
+ checkRootUID(base)
+ checkGPGKey(base)
+ checkGroupArg(base, basecmd, extcmds)
++ checkEnabledRepo(base)
- for (ndata, nmdtype) in downloading_with_size + downloading_no_size:
- local = self._get_mdtype_fname(ndata, False)
-- if nmdtype.endswith("_db"): # Uncompress any .sqlite.bz2 files
-+ if nmdtype.endswith("_db"): # Uncompress any compressed files
- dl_local = local
-- local = local.replace('.bz2', '')
-- misc.bunzipFile(dl_local, local)
-+ local = misc.decompress(dl_local)
- misc.unlink_f(dl_local)
- self._oldRepoMDData['new_MD_files'].append(local)
+ def doCommand(self, base, basecmd, extcmds):
+ GroupCommand.doCommand(self, base, basecmd, extcmds)
+@@ -462,6 +488,7 @@ class GroupRemoveCommand(GroupCommand):
+ def doCheck(self, base, basecmd, extcmds):
+ checkRootUID(base)
+ checkGroupArg(base, basecmd, extcmds)
++ checkEnabledRepo(base)
-@@ -1518,15 +1514,17 @@ class YumRepository(Repository, config.RepoConf):
- """ Internal function, use .retrieveMD() from outside yum. """
- # Note that this can raise Errors.RepoMDError if mdtype doesn't exist
- # for this repo.
-+ # FIXME - maybe retrieveMD should call decompress() after we've checked
-+ # the checksum by default? since we're never acting on compressed MD
- thisdata = self.repoXML.getData(mdtype)
+ def doCommand(self, base, basecmd, extcmds):
+ GroupCommand.doCommand(self, base, basecmd, extcmds)
+@@ -488,6 +515,7 @@ class GroupInfoCommand(GroupCommand):
- (r_base, remote) = thisdata.location
- fname = os.path.basename(remote)
- local = self.cachedir + '/' + fname
+ def doCheck(self, base, basecmd, extcmds):
+ checkGroupArg(base, basecmd, extcmds)
++ checkEnabledRepo(base)
-- if self.retrieved.has_key(mdtype):
-- if self.retrieved[mdtype]: # got it, move along
-- return local
-+ if self.retrieved.get(mdtype):
-+ # got it, move along
-+ return local
+ def doCommand(self, base, basecmd, extcmds):
+ GroupCommand.doCommand(self, base, basecmd, extcmds)
+@@ -511,7 +539,7 @@ class MakeCacheCommand(YumCommand):
+ return _("Generate the metadata cache")
- if self.cache == 1:
- if os.path.exists(local):
-@@ -1552,9 +1550,17 @@ class YumRepository(Repository, config.RepoConf):
- try:
- checkfunc = (self.checkMD, (mdtype,), {})
- text = "%s/%s" % (self.id, mdtype)
-+ if thisdata.size is None:
-+ reget = None
-+ else:
-+ reget = 'simple'
-+ if os.path.exists(local):
-+ if os.stat(local).st_size >= int(thisdata.size):
-+ misc.unlink_f(local)
- local = self._getFile(relative=remote,
- local=local,
- copy_local=1,
-+ reget=reget,
- checkfunc=checkfunc,
- text=text,
- cache=self.http_caching == 'all',
-@@ -1762,9 +1768,9 @@ class YumRepository(Repository, config.RepoConf):
+ def doCheck(self, base, basecmd, extcmds):
+- pass
++ checkEnabledRepo(base)
- grpfile = self.getGroups()
+ def doCommand(self, base, basecmd, extcmds):
+ base.logger.debug(_("Making cache files for all metadata files."))
+@@ -554,6 +582,7 @@ class CleanCommand(YumCommand):
-- # open it up as a file object so iterparse can cope with our gz file
-- if grpfile is not None and grpfile.endswith('.gz'):
-- grpfile = gzip.open(grpfile)
-+ # open it up as a file object so iterparse can cope with our compressed file
-+ if grpfile is not None:
-+ grpfile = misc.decompress(grpfile)
- try:
- c = comps.Comps()
- c.add(grpfile)
-diff --git a/yumcommands.py b/yumcommands.py
-index 35bd97c..a7f5d9e 100644
---- a/yumcommands.py
-+++ b/yumcommands.py
-@@ -205,6 +205,28 @@ class UpdateCommand(YumCommand):
- except yum.Errors.YumBaseError, e:
- return 1, [str(e)]
+ def doCheck(self, base, basecmd, extcmds):
+ checkCleanArg(base, basecmd, extcmds)
++ checkEnabledRepo(base)
+
+ def doCommand(self, base, basecmd, extcmds):
+ base.conf.cache = 1
+@@ -592,6 +621,9 @@ class CheckUpdateCommand(YumCommand):
+ def getSummary(self):
+ return _("Check for available package updates")
-+class DistroSyncCommand(YumCommand):
-+ def getNames(self):
-+ return ['distribution-synchronization', 'distro-sync']
-+
-+ def getUsage(self):
-+ return _("[PACKAGE...]")
-+
-+ def getSummary(self):
-+ return _("Synchronize installed packages to the latest available versions")
-+
+ def doCheck(self, base, basecmd, extcmds):
-+ checkRootUID(base)
-+ checkGPGKey(base)
-+
-+ def doCommand(self, base, basecmd, extcmds):
-+ self.doneCommand(base, _("Setting up Distribution Synchronization Process"))
-+ try:
-+ base.conf.obsoletes = 1
-+ return base.distroSyncPkgs(extcmds)
-+ except yum.Errors.YumBaseError, e:
-+ return 1, [str(e)]
++ checkEnabledRepo(base)
+
- def _add_pkg_simple_list_lens(data, pkg, indent=''):
- """ Get the length of each pkg's column. Add that to data.
- This "knows" about simpleList and printVer. """
-@@ -1207,7 +1229,7 @@ class VersionCommand(YumCommand):
- lastdbv = base.history.last()
- if lastdbv is not None:
- lastdbv = lastdbv.end_rpmdbversion
-- if lastdbv is None or data[0] != lastdbv:
-+ if lastdbv is not None and data[0] != lastdbv:
- base._rpmdb_warn_checks(warn=lastdbv is not None)
- if vcmd not in ('group-installed', 'group-all'):
- cols.append(("%s %s/%s" % (_("Installed:"), rel, ba),
-@@ -1215,6 +1237,9 @@ class VersionCommand(YumCommand):
- _append_repos(cols, data[1])
- if groups:
- for grp in sorted(data[2]):
-+ if (vcmd.startswith("group-") and
-+ len(extcmds) > 1 and grp not in extcmds[1:]):
-+ continue
- cols.append(("%s %s" % (_("Group-Installed:"), grp),
- str(data[2][grp])))
- _append_repos(cols, data[3][grp])
-@@ -1230,6 +1255,9 @@ class VersionCommand(YumCommand):
- _append_repos(cols, data[1])
- if groups:
- for grp in sorted(data[2]):
-+ if (vcmd.startswith("group-") and
-+ len(extcmds) > 1 and grp not in extcmds[1:]):
-+ continue
- cols.append(("%s %s" % (_("Group-Available:"), grp),
- str(data[2][grp])))
- if verbose:
-@@ -1295,7 +1323,7 @@ class HistoryCommand(YumCommand):
- base.history._create_db_file()
-
+ def doCommand(self, base, basecmd, extcmds):
+ base.extcmds.insert(0, 'updates')
+ result = 0
+@@ -668,6 +700,7 @@ class UpgradeCommand(YumCommand):
def doCheck(self, base, basecmd, extcmds):
-- cmds = ('list', 'info', 'summary', 'repeat', 'redo', 'undo', 'new')
-+ cmds = ('list', 'info', 'summary', 'repeat', 'redo', 'undo', 'new', 'addon-info')
- if extcmds and extcmds[0] not in cmds:
- base.logger.critical(_('Invalid history sub-command, use: %s.'),
- ", ".join(cmds))
-@@ -1303,6 +1331,9 @@ class HistoryCommand(YumCommand):
- if extcmds and extcmds[0] in ('repeat', 'redo', 'undo', 'new'):
- checkRootUID(base)
- checkGPGKey(base)
-+ elif not os.access(base.history._db_file, os.R_OK):
-+ base.logger.critical(_("You don't have access to the history DB."))
-+ raise cli.CliError
+ checkRootUID(base)
+ checkGPGKey(base)
++ checkEnabledRepo(base, extcmds)
def doCommand(self, base, basecmd, extcmds):
- vcmd = 'list'
-@@ -1316,6 +1347,8 @@ class HistoryCommand(YumCommand):
- ret = base.historyInfoCmd(extcmds)
- elif vcmd == 'summary':
- ret = base.historySummaryCmd(extcmds)
-+ elif vcmd == 'addon-info':
-+ ret = base.historyAddonInfoCmd(extcmds)
- elif vcmd == 'undo':
- ret = self._hcmd_undo(base, extcmds)
- elif vcmd in ('redo', 'repeat'):
-@@ -1347,13 +1380,14 @@ class CheckRpmdbCommand(YumCommand):
- def doCommand(self, base, basecmd, extcmds):
- chkcmd = 'all'
- if extcmds:
-- chkcmd = extcmds[0]
-+ chkcmd = extcmds
-
- def _out(x):
- print x
+ base.conf.obsoletes = 1
+@@ -1104,6 +1137,7 @@ class ReInstallCommand(YumCommand):
+ checkRootUID(base)
+ checkGPGKey(base)
+ checkPackageArg(base, basecmd, extcmds)
++ checkEnabledRepo(base, extcmds)
- rc = 0
-- if base._rpmdb_warn_checks(_out, False, chkcmd):
-+ if base._rpmdb_warn_checks(out=_out, warn=False, chkcmd=chkcmd,
-+ header=lambda x: None):
- rc = 1
- return rc, ['%s %s' % (basecmd, chkcmd)]
-
-diff --git a/yummain.py b/yummain.py
-index 305e0c7..95c7462 100755
---- a/yummain.py
-+++ b/yummain.py
-@@ -99,9 +99,13 @@ def main(args):
- if "%s" %(e.msg,) != lockerr:
- lockerr = "%s" %(e.msg,)
- logger.critical(lockerr)
-- logger.critical(_("Another app is currently holding the yum lock; waiting for it to exit..."))
-- show_lock_owner(e.pid, logger)
-- time.sleep(2)
-+ if not base.conf.exit_on_lock:
-+ logger.critical(_("Another app is currently holding the yum lock; waiting for it to exit..."))
-+ show_lock_owner(e.pid, logger)
-+ time.sleep(2)
-+ else:
-+ logger.critical(_("Another app is currently holding the yum lock; exiting as configured by exit_on_lock"))
-+ return 1
- else:
- break
+ def doCommand(self, base, basecmd, extcmds):
+ self.doneCommand(base, _("Setting up Reinstall Process"))
+@@ -1130,6 +1164,7 @@ class DowngradeCommand(YumCommand):
+ checkRootUID(base)
+ checkGPGKey(base)
+ checkPackageArg(base, basecmd, extcmds)
++ checkEnabledRepo(base, extcmds)
+ def doCommand(self, base, basecmd, extcmds):
+ self.doneCommand(base, _("Setting up Downgrade Process"))
diff --git a/yum.spec b/yum.spec
index 51ed1ee..e5d6c1d 100644
--- a/yum.spec
+++ b/yum.spec
@@ -3,7 +3,7 @@
Summary: RPM installer/updater
Name: yum
Version: 3.2.28
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
Group: System Environment/Base
Source0: http://yum.baseurl.org/download/3.2/%{name}-%{version}.tar.gz
@@ -69,7 +69,7 @@ can notify you when they are available via email, syslog or dbus.
%patch3 -p0
%patch4 -p0
%patch5 -p1
-#%%%patch6 -p1
+%patch6 -p1
%patch20 -p1
%build
@@ -133,6 +133,12 @@ rm -rf $RPM_BUILD_ROOT
%dir /usr/lib/yum-plugins
%changelog
+* Mon Aug 9 2010 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-2
+- latest head
+- unicide fixes
+- sqlite history db conversion fixes
+
+
* Fri Jul 30 2010 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-1
- 3.2.28
More information about the scm-commits
mailing list