yum-3.4.3/0000755000076400007640000000000011602435133011321 5ustar jamesjamesyum-3.4.3/utils.py0000664000076400007640000003327211602434452013047 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import sys import time import exceptions 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 import yum.plugins as plugins from urlgrabber.progress import format_number def suppress_keyboard_interrupt_message(): old_excepthook = sys.excepthook def new_hook(type, value, traceback): if type != exceptions.KeyboardInterrupt: old_excepthook(type, value, traceback) else: pass sys.excepthook = new_hook def jiffies_to_seconds(jiffies): Hertz = 100 # FIXME: Hack, need to get this, AT_CLKTCK elf note *sigh* return int(jiffies) / Hertz def seconds_to_ui_time(seconds): if seconds >= 60 * 60 * 24: return "%d day(s) %d:%02d:%02d" % (seconds / (60 * 60 * 24), (seconds / (60 * 60)) % 24, (seconds / 60) % 60, seconds % 60) if seconds >= 60 * 60: return "%d:%02d:%02d" % (seconds / (60 * 60), (seconds / 60) % 60, (seconds % 60)) return "%02d:%02d" % ((seconds / 60), seconds % 60) def get_process_info(pid): if not pid: return try: pid = int(pid) except ValueError, e: return # Maybe true if /proc isn't mounted, or not Linux ... or something. if (not os.path.exists("/proc/%d/status" % pid) or not os.path.exists("/proc/stat") or not os.path.exists("/proc/%d/stat" % pid)): return ps = {} for line in open("/proc/%d/status" % pid): if line[-1] != '\n': continue data = line[:-1].split(':\t', 1) if len(data) < 2: continue if data[1].endswith(' kB'): data[1] = data[1][:-3] ps[data[0].strip().lower()] = data[1].strip() if 'vmrss' not in ps: return if 'vmsize' not in ps: return boot_time = None for line in open("/proc/stat"): if line.startswith("btime "): boot_time = int(line[len("btime "):-1]) break if boot_time is None: return ps_stat = open("/proc/%d/stat" % pid).read().split() ps['utime'] = jiffies_to_seconds(ps_stat[13]) ps['stime'] = jiffies_to_seconds(ps_stat[14]) ps['cutime'] = jiffies_to_seconds(ps_stat[15]) ps['cstime'] = jiffies_to_seconds(ps_stat[16]) ps['start_time'] = boot_time + jiffies_to_seconds(ps_stat[21]) ps['state'] = {'R' : _('Running'), 'S' : _('Sleeping'), 'D' : _('Uninterruptible'), 'Z' : _('Zombie'), 'T' : _('Traced/Stopped') }.get(ps_stat[2], _('Unknown')) return ps def show_lock_owner(pid, logger): ps = get_process_info(pid) if not ps: return None # This yumBackend isn't very friendly, so... if ps['name'] == 'yumBackend.py': nmsg = _(" The other application is: PackageKit") else: nmsg = _(" The other application is: %s") % ps['name'] logger.critical("%s", nmsg) logger.critical(_(" Memory : %5s RSS (%5sB VSZ)") % (format_number(int(ps['vmrss']) * 1024), format_number(int(ps['vmsize']) * 1024))) ago = seconds_to_ui_time(int(time.time()) - ps['start_time']) logger.critical(_(" Started: %s - %s ago") % (time.ctime(ps['start_time']), ago)) logger.critical(_(" State : %s, pid: %d") % (ps['state'], pid)) return ps def exception2msg(e): """ DIE python DIE! Which one works: to_unicode(e.value); unicode(e); str(e); Call this so you don't have to care. """ try: return to_unicode(e.value) except: pass try: return unicode(e) except: pass try: return str(e) except: pass return "" class YumUtilBase(YumBaseCli): def __init__(self,name,ver,usage): YumBaseCli.__init__(self) self._parser = YumOptionParser(base=self,utils=True,usage=usage) self._usage = usage self._utilName = name self._utilVer = ver self._option_group = OptionGroup(self._parser, "%s options" % self._utilName,"") self._parser.add_option_group(self._option_group) 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') % exception2msg(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 = exception2msg(e) if exitmsg: self.logger.warn('\n\n%s', exitmsg) if self.unlock(): return 200 return 1 def exFatal(self, e): self.logger.critical('\n\n%s', exception2msg(e)) 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): return self._parser def getOptionGroup(self): """ Get an option group to add non inherited options""" return self._option_group def waitForLock(self): lockerr = "" while True: try: self.doLock() except Errors.LockError, e: if exception2msg(e) != lockerr: lockerr = exception2msg(e) self.logger.critical(lockerr) if not self.conf.exit_on_lock: self.logger.critical("Another app is currently holding the yum lock; waiting for it to exit...") 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 def _printUtilVersion(self): print "%s - %s (yum - %s)" % (self._utilName,self._utilVer,yum.__version__) 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() sys.exit(0) # get the install root to use root = self._parser.getRoot(opts) if opts.quiet: opts.debuglevel = 0 if opts.verbose: opts.debuglevel = opts.errorlevel = 6 # Read up configuration options and initialise plugins try: pc = self.preconf pc.fn = opts.conffile pc.root = root pc.init_plugins = not opts.noplugins pc.plugin_types = pluginsTypes pc.optparser = self._parser pc.debuglevel = opts.debuglevel pc.errorlevel = opts.errorlevel if hasattr(opts, "disableplugins"): 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'), exception2msg(e)) sys.exit(1) except ValueError, e: self.logger.critical(_('Options Error: %s'), exception2msg(e)) sys.exit(1) except plugins.PluginYumExit, e: self.logger.critical(_('PluginExit Error: %s'), exception2msg(e)) sys.exit(1) except Errors.YumBaseError, e: self.logger.critical(_('Yum Error: %s'), exception2msg(e)) sys.exit(1) # update usage in case plugins have added commands self._parser.set_usage(self._usage) # Now parse the command line for real and # apply some of the options to self.conf (opts, self.cmds) = self._parser.setupYumConfig() if self.cmds: self.basecmd = self.cmds[0] # our base command else: self.basecmd = None self.extcmds = self.cmds[1:] # out extended arguments/commands return opts def doUtilYumSetup(self): """do a default setup for all the normal/necessary yum components, really just a shorthand for testing""" # FIXME - we need another way to do this, I think. try: self.waitForLock() self._getTs() self._getRpmDB() self._getRepos(doSetup = True) self._getSacks() except Errors.YumBaseError, msg: self.logger.critical(exception2msg(msg)) sys.exit(1) 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 = [exception2msg(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 self.verbose_logger.log(logginglevels.INFO_2, _('\nDependencies Resolved')) def doUtilTransaction(self): try: return_code = self.doTransaction() except plugins.PluginYumExit, e: return self.exPluginExit(e) except Errors.YumBaseError, e: return self.exFatal(e) except KeyboardInterrupt: return self.exUserCancel() except IOError, e: return self.exIOError(e,) self.verbose_logger.log(logginglevels.INFO_2, _('Complete!')) if self.unlock(): return 200 return return_code def main(): name = 'testutil' ver = '0.1' usage = 'testutil [options] [args]' util = YumUtilBase(name,ver,usage) parser = util.getOptionParser() parser.add_option("", "--myoption", dest="myoption", action="store_true", default=False, help="This is an util option") util.logger.info("Setup Yum Config") opts = util.doUtilConfigSetup() util.logger.info("Setup Yum") util.doUtilYumSetup() print "Command line args: %s" % " ".join(util.cmds) print "Command line options :" print opts util.logger.info("%s Completed" % name) if __name__ == '__main__': main() yum-3.4.3/yum.spec0000664000076400007640000003301711602435075013022 0ustar jamesjamesSummary: RPM installer/updater Name: yum Version: 3.4.2 Release: 0 License: GPLv2+ Group: System Environment/Base Source: %{name}-%{version}.tar.gz URL: http://yum.baseurl.org/ BuildRoot: %{_tmppath}/%{name}-%{version}root BuildArchitectures: noarch BuildRequires: python BuildRequires: gettext BuildRequires: intltool Requires: python >= 2.4 Requires: rpm-python, rpm >= 0:4.4.2 Requires: python-sqlite Requires: urlgrabber >= 3.9.2 Requires: yum-metadata-parser >= 1.1.0 Requires: python-iniparse Requires: pygpgme Conflicts: rpm >= 5-0 # Zif is a re-implementation of yum in C, however: # # 1. There is no co-operation/etc. with us. # 2. It touches our private data directly. # # ...both of which mean that even if there were _zero_ bugs in zif, we'd # never be able to change anything after the first user started using it. And # of course: # # 3. Users will never be able to tell that it isn't weird yum bugs, when they # hit them (and we'll probably never be able to debug them, without becoming # zif experts). # # ...so we have two sane choices: i) Conflict with it. 2) Stop developing yum. Conflicts: zif Obsoletes: yum-skip-broken <= 1.1.18 Obsoletes: yum-basearchonly <= 1.1.9 Obsoletes: yum-allow-downgrade < 1.1.20-0 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 for permission as necessary. %package updatesd Summary: Update notification daemon Group: Applications/System Requires: yum = %{version}-%{release} Requires: dbus-python Requires: pygobject2 Requires(preun): /sbin/chkconfig Requires(preun): /sbin/service Requires(postun): /sbin/chkconfig Requires(postun): /sbin/service %description updatesd yum-updatesd provides a daemon which checks for available updates and can notify you when they are available via email, syslog or dbus. %package cron Summary: Files needed to run yum updates as a cron job Group: System Environment/Base Requires: yum >= 3.0 vixie-cron crontabs yum-plugin-downloadonly findutils Requires(post): /sbin/chkconfig Requires(post): /sbin/service Requires(preun): /sbin/chkconfig Requires(preun): /sbin/service Requires(postun): /sbin/service %description cron These are the files needed to run yum updates as a cron job. Install this package if you want auto yum updates nightly via cron. %prep %setup -q %build make %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT 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 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT %post updatesd /sbin/chkconfig --add yum-updatesd /sbin/service yum-updatesd condrestart >/dev/null 2>&1 exit 0 %preun updatesd if [ $1 = 0 ]; then /sbin/chkconfig --del yum-updatesd /sbin/service yum-updatesd stop >/dev/null 2>&1 fi exit 0 %post cron # Make sure chkconfig knows about the service /sbin/chkconfig --add yum-cron # if an upgrade: if [ "$1" -ge "1" ]; then # if there's a /etc/rc.d/init.d/yum file left, assume that there was an # older instance of yum-cron which used this naming convention. Clean # it up, do a conditional restart if [ -f /etc/init.d/yum ]; then # was it on? /sbin/chkconfig yum RETVAL=$? if [ $RETVAL = 0 ]; then # if it was, stop it, then turn on new yum-cron /sbin/service yum stop 1> /dev/null 2>&1 /sbin/service yum-cron start 1> /dev/null 2>&1 /sbin/chkconfig yum-cron on fi # remove it from the service list /sbin/chkconfig --del yum fi fi exit 0 %preun cron # if this will be a complete removeal of yum-cron rather than an upgrade, # remove the service from chkconfig control if [ $1 = 0 ]; then /sbin/chkconfig --del yum-cron /sbin/service yum-cron stop 1> /dev/null 2>&1 fi exit 0 %postun cron # If there's a yum-cron package left after uninstalling one, do a # conditional restart of the service if [ "$1" -ge "1" ]; then /sbin/service yum-cron condrestart 1> /dev/null 2>&1 fi exit 0 %files -f %{name}.lang %defattr(-, root, root) %doc README AUTHORS COPYING TODO INSTALL ChangeLog PLUGINS %config(noreplace) %{_sysconfdir}/yum/yum.conf %config(noreplace) %{_sysconfdir}/yum/version-groups.conf %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/* %exclude %{_datadir}/yum-cli/yumupd.py* %{_bindir}/yum /usr/lib/python?.?/site-packages/yum /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* %files cron %defattr(-,root,root) %doc COPYING %{_sysconfdir}/cron.daily/0yum.cron %config(noreplace) %{_sysconfdir}/yum/yum-daily.yum %config(noreplace) %{_sysconfdir}/yum/yum-weekly.yum %{_sysconfdir}/rc.d/init.d/yum-cron %config(noreplace) %{_sysconfdir}/sysconfig/yum-cron %files updatesd %defattr(-, root, root) %config(noreplace) %{_sysconfdir}/yum/yum-updatesd.conf %config %{_sysconfdir}/rc.d/init.d/yum-updatesd %config %{_sysconfdir}/dbus-1/system.d/yum-updatesd.conf %{_datadir}/yum-cli/yumupd.py* %{_sbindir}/yum-updatesd %{_mandir}/man*/yum-updatesd* %changelog * Wed Apr 20 2011 James Antill - 3.4.1 - umask bug fix. * Thu Apr 14 2011 James Antill - 3.4.0 * Wed Jan 12 2011 Seth Vidal - put yum-cron back into yum and make the subpkg. Thanks To Alec Habig for maintaining this so well for so long. * Fri Jul 30 2010 Seth Vidal - 3.2.28 * Thu Mar 18 2010 Seth Vidal - 3.2.27 * Tue Feb 9 2010 Seth Vidal - 3.2.26 * Tue Oct 13 2009 Seth Vidal - 3.2.25 * Thu Sep 3 2009 Seth Vidal - 3.2.24 * Tue May 19 2009 Seth Vidal - 3.2.23 * Tue Mar 24 2009 Seth Vidal - 3.2.22 * Wed Jan 7 2009 Seth Vidal - 3.2.21 * Mon Oct 27 2008 Seth Vidal - 3.2.20 * Mon Aug 25 2008 Seth Vidal - 3.2.19 * Thu Aug 7 2008 Seth Vidal - 3.2.18 * Wed Jul 8 2008 Seth Vidal - 3.2.17 * Wed May 14 2008 Seth Vidal - 3.2.16 * Wed May 14 2008 Seth Vidal - 3.2.15 * Mon Apr 7 2008 Seth Vidal - 3.2.14 * Thu Mar 20 2008 Seth Vidal - 3.2.13 * Mon Mar 3 2008 Seth Vidal - 3.2.12 * Fri Feb 8 2008 Seth Vidal - 3.2.11 * Sun Jan 27 2008 James Bowes - Move the yumupd module to yum-updatesd * Sat Jan 26 2008 Tim Lauridsen - Added BuildRequires: intltool - Added -f %%{name}.lang to %%files - Added %%find_lang %%name to %%install * Thu Jan 24 2008 Seth Vidal - 3.2.10 * Thu Jan 24 2008 Seth Vidal - wee 3.2.9 * Wed Dec 12 2007 Seth Vidal - add pygpgme dep for new gpg key handling * Mon Dec 3 2007 Seth Vidal - 3.2.8 * Fri Oct 12 2007 Seth Vidal - 3.2.7 * Fri Oct 5 2007 Seth Vidal - 3.2.6 * Mon Sep 10 2007 Seth Vidal - 3.2.5 * Tue Aug 28 2007 Seth Vidal - 3.2.4 - add python-iniparse - it's a dep here but yum will run w/o it * Fri Jul 20 2007 Seth Vidal - 3.2.2 * Thu Jun 21 2007 Seth Vidal - 3.2.1 * Wed May 16 2007 Seth Vidal - 3.2.0 * Thu Apr 26 2007 Seth Vidal - 3.1.7 * Tue Apr 3 2007 Seth Vidal - 3.1.6 * Wed Mar 21 2007 Seth Vidal - 3.1.5 * Wed Mar 7 2007 Seth Vidal - 3.1.4 * Thu Mar 1 2007 Seth Vidal - 3.1.3 * Wed Feb 14 2007 Seth Vidal - 3.1.2 * Tue Feb 6 2007 Seth Vidal - 3.1.1 * Sun Jan 21 2007 Seth Vidal - 3.1.0 * Wed Oct 4 2006 Seth Vidal - 3.0 * Fri Sep 29 2006 Seth Vidal - 2.9.8 * Tue Sep 26 2006 Seth Vidal - 2.9.7 * Wed Sep 6 2006 Seth Vidal - 2.9.6 * Mon Aug 21 2006 Seth Vidal - 2.9.5 * Wed Aug 9 2006 Seth Vidal - 2.9.4 * Wed Jul 12 2006 Seth Vidal - 2.9.3 * Tue Jun 27 2006 Jeremy Katz - add bits for yum-updatesd subpackage * Tue Jun 27 2006 Seth Vidal - 2.9.2 * Wed Jun 21 2006 Seth Vidal - remove libxml2 dep * Sun Jun 18 2006 Seth Vidal - 2.9.1 * Tue Mar 7 2006 Seth Vidal - 2.9.0 - new dev cycle * Mon Mar 6 2006 Seth Vidal - 2.6.0 * Wed Feb 22 2006 Seth Vidal - 2.5.3 * Sun Jan 8 2006 Seth Vidal - 2.5.1 * Sun Aug 14 2005 Seth Vidal - 2.5.0 * Fri Aug 5 2005 Seth Vidal - back to libxml2-python req * Fri Jul 8 2005 Seth Vidal - 2.3.4 * Tue Jun 14 2005 Seth Vidal - 2.3.3 * Wed Apr 6 2005 Seth Vidal - added python-elementtree dep, remove libxml2 dep * Mon Apr 4 2005 Seth Vidal - 2.3.2 * Mon Mar 28 2005 Seth Vidal - add in the /etc/yum/*.yum yum shell files * Mon Mar 7 2005 Seth Vidal - 2.3.1 - get rid of old obsoletes * Fri Feb 25 2005 Gijs Hollestelle - Require python-sqlite * Fri Feb 25 2005 Seth Vidal - add yum.cron to weekly to clean packages * Mon Feb 21 2005 Seth Vidal - new devel branch - 2.3.0 * Tue Jan 25 2005 Seth Vidal - 2.1.13 * Sat Nov 27 2004 Seth Vidal - 2.1.12 * Wed Oct 27 2004 Seth Vidal - 2.1.11 * Tue Oct 19 2004 Seth Vidal - 2.1.10 * Mon Oct 18 2004 Seth Vidal - 2.1.9 - paper bag release * Mon Oct 18 2004 Seth Vidal - 2.1.8 * Wed Oct 13 2004 Seth Vidal - update to 2.1.7 - re-include yum-arch w/deprecation notice * Wed Oct 6 2004 Seth Vidal - mdcaching code and list changes - 2.1.6 * Mon Oct 4 2004 Seth Vidal - 2.1.5 - lots of minor bugfixes and corrections * Tue Sep 28 2004 Seth Vidal - 2.1.4 * Fri Sep 3 2004 Seth Vidal - big depsolver update * Wed Sep 1 2004 Seth Vidal - more changes * Tue Aug 31 2004 Seth Vidal - all new stuff for 2.1.X * Mon Sep 8 2003 Seth Vidal - brown paper-bag 2.0.3 * Sun Sep 7 2003 Seth Vidal - bump to 2.0.2 * Fri Aug 15 2003 Seth Vidal - bump to 2.0.1 * Sun Jul 13 2003 Seth Vidal - bump to 2.0 * Sat Jul 12 2003 Seth Vidal - made yum.cron config(noreplace) * Sat Jun 7 2003 Seth Vidal - add stubs to spec file for rebuilding easily with custom yum.conf and - yum.cron files * Sat May 31 2003 Seth Vidal - bump to 1.98 * Mon Apr 21 2003 Seth Vidal - bump to 1.97 * Wed Apr 16 2003 Seth Vidal - moved to fhs compliance - ver to 1.96 * Mon Apr 7 2003 Seth Vidal - updated for 1.95 betaish release - remove /sbin legacy - no longer starts up by default - do the find_lang thing * Sun Dec 22 2002 Seth Vidal - bumped ver to 0.9.4 - new spec file for rhl 8.0 * Sun Oct 20 2002 Seth Vidal - bumped ver to 0.9.3 * Mon Aug 26 2002 Seth Vidal - bumped ver to 0.9.2 * Thu Jul 11 2002 Seth Vidal - bumped ver to 0.9.1 * Thu Jul 11 2002 Seth Vidal - bumped ver to 0.9.0 * Thu Jul 11 2002 Seth Vidal - added rpm require * Sun Jun 30 2002 Seth Vidal - 0.8.9 * Fri Jun 14 2002 Seth Vidal - 0.8.7 * Thu Jun 13 2002 Seth Vidal - bumped to 0.8.5 * Thu Jun 13 2002 Seth Vidal - bumped to 0.8.4 * Sun Jun 9 2002 Seth Vidal - bumped to 0.8.2 * Thu Jun 6 2002 Seth Vidal - First packaging yum-3.4.3/yummain.py0000775000076400007640000002207611602434452013371 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University """ Entrance point for the yum command line interface. """ import os import os.path import sys import logging import time import errno from yum import Errors from yum import plugins from yum import logginglevels from yum import _ from yum.i18n import to_unicode, utf8_width import yum.misc import cli from utils import suppress_keyboard_interrupt_message, show_lock_owner, exception2msg def main(args): """This does all the real work""" yum.misc.setup_locale(override_time=True) def exUserCancel(): logger.critical(_('\n\nExiting on user cancel')) if unlock(): return 200 return 1 def exIOError(e): if e.errno == 32: logger.critical(_('\n\nExiting on Broken Pipe')) else: logger.critical(_('\n\n%s') % exception2msg(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 = exception2msg(e) if exitmsg: logger.warn('\n\n%s', exitmsg) if unlock(): return 200 return 1 def exFatal(e): logger.critical('\n\n%s', exception2msg(e.value)) if unlock(): return 200 return 1 def unlock(): try: base.closeRpmDB() base.doUnlock() except Errors.LockError, e: return 200 return 0 def rpmdb_warn_checks(): try: probs = base._rpmdb_warn_checks(out=verbose_logger.info, warn=False) except Errors.YumBaseError, e: # This is mainly for PackageSackError from rpmdb. verbose_logger.info(_(" Yum checks failed: %s"), exception2msg(e)) probs = [] if not probs: verbose_logger.info(_(" You could try running: rpm -Va --nofiles --nodigest")) logger = logging.getLogger("yum.main") verbose_logger = logging.getLogger("yum.verbose.main") # our core object for the cli base = cli.YumBaseCli() # do our cli parsing and config file setup # also sanity check the things being passed on the cli try: base.getOptionsConfig(args) except plugins.PluginYumExit, e: return exPluginExit(e) except Errors.YumBaseError, e: return exFatal(e) # Try to open the current directory to see if we have # read and write access. If not, chdir to / try: f = open(".") except IOError, e: if e.errno == errno.EACCES: logger.critical(_('No read/write access in current directory, moving to /')) os.chdir("/") else: close(f) lockerr = "" while True: try: base.doLock() except Errors.LockError, e: if exception2msg(e) != lockerr: lockerr = exception2msg(e) logger.critical(lockerr) if (e.errno not in (errno.EPERM, errno.EACCES) and not base.conf.exit_on_lock): logger.critical(_("Another app is currently holding the yum lock; waiting for it to exit...")) tm = 0.1 if show_lock_owner(e.pid, logger): tm = 2 time.sleep(tm) elif e.errno in (errno.EPERM, errno.EACCES): logger.critical(_("Can't create lock file; exiting")) return 1 else: logger.critical(_("Another app is currently holding the yum lock; exiting as configured by exit_on_lock")) return 1 else: break try: result, resultmsgs = base.doCommands() except plugins.PluginYumExit, e: return exPluginExit(e) except Errors.YumBaseError, e: result = 1 resultmsgs = [exception2msg(e)] except KeyboardInterrupt: return exUserCancel() except IOError, e: return exIOError(e) # Act on the command/shell result if result == 0: # Normal exit for msg in resultmsgs: verbose_logger.log(logginglevels.INFO_2, '%s', msg) if unlock(): return 200 return 0 elif result == 1: # Fatal error for msg in resultmsgs: logger.critical(_('Error: %s'), msg) if unlock(): return 200 return 1 elif result == 2: # Continue on pass elif result == 100: if unlock(): return 200 return 100 else: logger.critical(_('Unknown Error(s): Exit Code: %d:'), result) for msg in resultmsgs: logger.critical(msg) if unlock(): return 200 return 3 # Depsolve stage verbose_logger.log(logginglevels.INFO_2, _('Resolving Dependencies')) try: (result, resultmsgs) = base.buildTransaction() except plugins.PluginYumExit, e: return exPluginExit(e) except Errors.YumBaseError, e: result = 1 resultmsgs = [exception2msg(e)] except KeyboardInterrupt: return exUserCancel() except IOError, e: return exIOError(e) # Act on the depsolve result if result == 0: # Normal exit if unlock(): return 200 return 0 elif result == 1: # Fatal error for msg in resultmsgs: prefix = _('Error: %s') prefix2nd = (' ' * (utf8_width(prefix) - 2)) logger.critical(prefix, msg.replace('\n', '\n' + prefix2nd)) if base._depsolving_failed: if not base.conf.skip_broken: verbose_logger.info(_(" You could try using --skip-broken to work around the problem")) rpmdb_warn_checks() if unlock(): return 200 return 1 elif result == 2: # Continue on pass else: logger.critical(_('Unknown Error(s): Exit Code: %d:'), result) for msg in resultmsgs: logger.critical(msg) if unlock(): return 200 return 3 verbose_logger.log(logginglevels.INFO_2, _('\nDependencies Resolved')) # Run the transaction try: return_code = base.doTransaction() except plugins.PluginYumExit, e: return exPluginExit(e) except Errors.YumBaseError, e: return exFatal(e) except KeyboardInterrupt: return exUserCancel() except IOError, e: return exIOError(e) # rpm ts.check() failed. if type(return_code) == type((0,)) and len(return_code) == 2: (result, resultmsgs) = return_code for msg in resultmsgs: logger.critical("%s", msg) rpmdb_warn_checks() return_code = result if base._ts_save_file: verbose_logger.info(_("Your transaction was saved, rerun it with: yum load-transaction %s") % base._ts_save_file) elif return_code < 0: return_code = 1 # Means the pre-transaction checks failed... else: verbose_logger.log(logginglevels.INFO_2, _('Complete!')) if unlock(): return 200 return return_code def hotshot(func, *args, **kwargs): import hotshot.stats fn = os.path.expanduser("~/yum.prof") prof = hotshot.Profile(fn) rc = prof.runcall(func, *args, **kwargs) prof.close() print_stats(hotshot.stats.load(fn)) return rc def cprof(func, *args, **kwargs): import cProfile, pstats fn = os.path.expanduser("~/yum.prof") prof = cProfile.Profile() rc = prof.runcall(func, *args, **kwargs) prof.dump_stats(fn) print_stats(pstats.Stats(fn)) return rc def print_stats(stats): stats.strip_dirs() stats.sort_stats('time', 'calls') stats.print_stats(20) stats.sort_stats('cumulative') stats.print_stats(40) def user_main(args, exit_code=False): """ This calls one of the multiple main() functions based on env. vars """ errcode = None if 'YUM_PROF' in os.environ: if os.environ['YUM_PROF'] == 'cprof': errcode = cprof(main, args) if os.environ['YUM_PROF'] == 'hotshot': errcode = hotshot(main, args) if 'YUM_PDB' in os.environ: import pdb pdb.run(main(args)) if errcode is None: errcode = main(args) if exit_code: sys.exit(errcode) return errcode suppress_keyboard_interrupt_message() if __name__ == "__main__": try: user_main(sys.argv[1:], exit_code=True) except KeyboardInterrupt, e: print >> sys.stderr, _("\n\nExiting on user cancel.") sys.exit(1) yum-3.4.3/.gitignore0000664000076400007640000000012011602434452013307 0ustar jamesjames*.pyc *.pyo *~ *.bak *.swp *.tar.* .project .pydevproject asthelper.completions yum-3.4.3/Makefile0000664000076400007640000000650611602434452012775 0ustar jamesjamesSUBDIRS = rpmUtils yum etc docs po PYFILES = $(wildcard *.py) PYLINT_MODULES = *.py yum rpmUtils PYLINT_IGNORE = oldUtils.py PKGNAME = yum VERSION=$(shell awk '/Version:/ { print $$2 }' ${PKGNAME}.spec) RELEASE=$(shell awk '/Release:/ { print $$2 }' ${PKGNAME}.spec) CVSTAG=yum-$(subst .,_,$(VERSION)-$(RELEASE)) PYTHON=python WEBHOST = yum.baseurl.org WEB_DOC_PATH = /srv/projects/yum/web/download/docs/yum-api/ all: subdirs clean: rm -f *.pyc *.pyo *~ *.bak for d in $(SUBDIRS); do make -C $$d clean ; done cd test; rm -f *.pyc *.pyo *~ *.bak subdirs: for d in $(SUBDIRS); do make PYTHON=$(PYTHON) -C $$d; [ $$? = 0 ] || exit 1 ; done install: mkdir -p $(DESTDIR)/usr/share/yum-cli for p in $(PYFILES) ; do \ install -m 644 $$p $(DESTDIR)/usr/share/yum-cli/$$p; \ done mv $(DESTDIR)/usr/share/yum-cli/yum-updatesd.py $(DESTDIR)/usr/share/yum-cli/yumupd.py $(PYTHON) -c "import compileall; compileall.compile_dir('$(DESTDIR)/usr/share/yum-cli', 1, '$(PYDIR)', 1)" mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/sbin install -m 755 bin/yum.py $(DESTDIR)/usr/bin/yum install -m 755 bin/yum-updatesd.py $(DESTDIR)/usr/sbin/yum-updatesd mkdir -p $(DESTDIR)/var/cache/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 .PHONY: docs test DOCS = yum rpmUtils callback.py yumcommands.py shell.py output.py cli.py utils.py\ yummain.py # packages needed for docs : yum install epydoc graphviz docs: @rm -rf docs/epydoc/$(VERSION) @mkdir -p docs/epydoc/$(VERSION) @epydoc -o docs/epydoc/$(VERSION) -u http://yum.baseurl.org --name "Yum" --graph all $(DOCS) upload-docs: docs # Upload to yum website @rm -rf yum-apidoc-$(VERSION).tar.gz @dir=$$PWD; cd $$dir/docs/epydoc; tar zcf $$dir/yum-apidoc-$(VERSION).tar.gz $(VERSION) @scp yum-apidoc-$(VERSION).tar.gz $(WEBHOST):$(WEB_DOC_PATH)/. @ssh $(WEBHOST) "cd $(WEB_DOC_PATH); tar zxvf yum-apidoc-$(VERSION).tar.gz; rm yum-apidoc-$(VERSION).tar.gz" @rm -rf yum-apidoc-$(VERSION).tar.gz doccheck: epydoc --check $(DOCS) test: @nosetests -i ".*test" test -@test/check-po-yes-no.py cd po; make test test-skipbroken: @nosetests -i ".*test" test/skipbroken-tests.py check: test pylint: @pylint --rcfile=test/yum-pylintrc --ignore=$(PYLINT_IGNORE) $(PYLINT_MODULES) 2>/dev/null pylint-short: @pylint -r n --rcfile=test/yum-pylintrc --ignore=$(PYLINT_IGNORE) $(PYLINT_MODULES) 2>/dev/null ChangeLog: changelog changelog: git log --since=2007-05-16 --pretty --numstat --summary | git2cl | cat > ChangeLog testnewbehavior: @NEW_BEHAVIOR=1 nosetests -i ".*test" test archive: remove_spec = ${PKGNAME}-daily.spec archive: _archive daily: remove_spec = ${PKGNAME}.spec daily: _archive _archive: @rm -rf ${PKGNAME}-%{VERSION}.tar.gz @rm -rf /tmp/${PKGNAME}-$(VERSION) /tmp/${PKGNAME} @dir=$$PWD; cd /tmp; git clone $$dir ${PKGNAME} lynx -dump 'http://yum.baseurl.org/wiki/WritingYumPlugins?format=txt' > /tmp/${PKGNAME}/PLUGINS lynx -dump 'http://yum.baseurl.org/wiki/Faq?format=txt' > /tmp/${PKGNAME}/FAQ @rm -f /tmp/${PKGNAME}/$(remove_spec) @rm -rf /tmp/${PKGNAME}/.git @mv /tmp/${PKGNAME} /tmp/${PKGNAME}-$(VERSION) @dir=$$PWD; cd /tmp; tar cvzf $$dir/${PKGNAME}-$(VERSION).tar.gz ${PKGNAME}-$(VERSION) @rm -rf /tmp/${PKGNAME}-$(VERSION) @echo "The archive is in ${PKGNAME}-$(VERSION).tar.gz" yum-3.4.3/bin/0000775000076400007640000000000011602434452012076 5ustar jamesjamesyum-3.4.3/bin/yum-updatesd.py0000775000076400007640000000125311602434452015075 0ustar jamesjames#!/usr/bin/python import sys, os import optparse parser = optparse.OptionParser() parser.add_option("-f", "--no-fork", action="store_true", default=False, dest="nofork") parser.add_option("-r", "--remote-shutdown", action="store_true", default=False, dest="remoteshutdown") (options, args) = parser.parse_args() if not options.nofork: if os.fork(): sys.exit() fd = os.open("/dev/null", os.O_RDWR) os.dup2(fd, 0) os.dup2(fd, 1) os.dup2(fd, 2) os.close(fd) sys.path.insert(0, '/usr/share/yum-cli') try: import yumupd yumupd.main(options) except KeyboardInterrupt, e: print >> sys.stderr, "\n\nExiting on user cancel." sys.exit(1) yum-3.4.3/bin/yum.py0000775000076400007640000000144111602434452013265 0ustar jamesjames#!/usr/bin/python import sys try: import yum except ImportError: print >> sys.stderr, """\ There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: %s Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: %s If you cannot solve this problem yourself, please go to the yum faq at: http://yum.baseurl.org/wiki/Faq """ % (sys.exc_value, sys.version) sys.exit(1) sys.path.insert(0, '/usr/share/yum-cli') try: import yummain yummain.user_main(sys.argv[1:], exit_code=True) except KeyboardInterrupt, e: print >> sys.stderr, "\n\nExiting on user cancel." sys.exit(1) yum-3.4.3/callback.py0000664000076400007640000002063111602434452013436 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University """ Progress display callback classes for the yum command line. """ import rpm import os import sys import logging from yum import _ from yum.constants import * class RPMInstallCallback: """ Yum command line callback class for callbacks from the RPM library. """ def __init__(self, output=1): self.output = output self.callbackfilehandles = {} self.total_actions = 0 self.total_installed = 0 self.installed_pkg_names = [] self.total_removed = 0 self.mark = "#" self.marks = 27 self.lastmsg = None self.logger = logging.getLogger('yum.filelogging.RPMInstallCallback') self.filelog = False self.myprocess = { TS_UPDATE : _('Updating'), TS_ERASE: _('Erasing'), TS_INSTALL: _('Installing'), TS_TRUEINSTALL : _('Installing'), TS_OBSOLETED: _('Obsoleted'), TS_OBSOLETING: _('Installing')} self.mypostprocess = { TS_UPDATE: _('Updated'), TS_ERASE: _('Erased'), TS_INSTALL: _('Installed'), TS_TRUEINSTALL: _('Installed'), TS_OBSOLETED: _('Obsoleted'), TS_OBSOLETING: _('Installed')} self.tsInfo = None # this needs to be set for anything else to work def _dopkgtup(self, hdr): tmpepoch = hdr['epoch'] if tmpepoch is None: epoch = '0' else: epoch = str(tmpepoch) return (hdr['name'], hdr['arch'], epoch, hdr['version'], hdr['release']) def _makeHandle(self, hdr): handle = '%s:%s.%s-%s-%s' % (hdr['epoch'], hdr['name'], hdr['version'], hdr['release'], hdr['arch']) return handle def _localprint(self, msg): if self.output: print msg def _makefmt(self, percent, progress = True): l = len(str(self.total_actions)) size = "%s.%s" % (l, l) fmt_done = "[%" + size + "s/%" + size + "s]" done = fmt_done % (self.total_installed + self.total_removed, self.total_actions) marks = self.marks - (2 * l) width = "%s.%s" % (marks, marks) fmt_bar = "%-" + width + "s" if progress: bar = fmt_bar % (self.mark * int(marks * (percent / 100.0)), ) fmt = "\r %-10.10s: %-28.28s " + bar + " " + done else: bar = fmt_bar % (self.mark * marks, ) fmt = " %-10.10s: %-28.28s " + bar + " " + done return fmt def _logPkgString(self, hdr): """return nice representation of the package for the log""" (n,a,e,v,r) = self._dopkgtup(hdr) if e == '0': pkg = '%s.%s %s-%s' % (n, a, v, r) else: pkg = '%s.%s %s:%s-%s' % (n, a, e, v, r) return pkg def callback(self, what, bytes, total, h, user): if what == rpm.RPMCALLBACK_TRANS_START: if bytes == 6: self.total_actions = total elif what == rpm.RPMCALLBACK_TRANS_PROGRESS: pass elif what == rpm.RPMCALLBACK_TRANS_STOP: pass elif what == rpm.RPMCALLBACK_INST_OPEN_FILE: self.lastmsg = None hdr = None if h is not None: hdr, rpmloc = h handle = self._makeHandle(hdr) fd = os.open(rpmloc, os.O_RDONLY) self.callbackfilehandles[handle]=fd self.total_installed += 1 self.installed_pkg_names.append(hdr['name']) return fd else: self._localprint(_("No header - huh?")) elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE: hdr = None if h is not None: hdr, rpmloc = h handle = self._makeHandle(hdr) os.close(self.callbackfilehandles[handle]) fd = 0 # log stuff pkgtup = self._dopkgtup(hdr) txmbrs = self.tsInfo.getMembers(pkgtup=pkgtup) for txmbr in txmbrs: try: process = self.myprocess[txmbr.output_state] processed = self.mypostprocess[txmbr.output_state] except KeyError: pass if self.filelog: pkgrep = self._logPkgString(hdr) msg = '%s: %s' % (processed, pkgrep) self.logger.info(msg) elif what == rpm.RPMCALLBACK_INST_PROGRESS: if h is not None: # If h is a string, we're repackaging. # Why the RPMCALLBACK_REPACKAGE_PROGRESS flag isn't set, I have no idea if type(h) == type(""): if total == 0: percent = 0 else: percent = (bytes*100L)/total if self.output and sys.stdout.isatty(): fmt = self._makefmt(percent) msg = fmt % (_('Repackage'), h) if bytes == total: msg = msg + "\n" if msg != self.lastmsg: sys.stdout.write(msg) sys.stdout.flush() self.lastmsg = msg else: hdr, rpmloc = h if total == 0: percent = 0 else: percent = (bytes*100L)/total pkgtup = self._dopkgtup(hdr) txmbrs = self.tsInfo.getMembers(pkgtup=pkgtup) for txmbr in txmbrs: try: process = self.myprocess[txmbr.output_state] except KeyError, e: print _("Error: invalid output state: %s for %s") % \ (txmbr.output_state, hdr['name']) else: if self.output and (sys.stdout.isatty() or bytes == total): fmt = self._makefmt(percent) msg = fmt % (process, hdr['name']) if msg != self.lastmsg: sys.stdout.write(msg) sys.stdout.flush() self.lastmsg = msg if bytes == total: print " " elif what == rpm.RPMCALLBACK_UNINST_START: pass elif what == rpm.RPMCALLBACK_UNINST_PROGRESS: pass elif what == rpm.RPMCALLBACK_UNINST_STOP: self.total_removed += 1 if self.filelog and h not in self.installed_pkg_names: logmsg = _('Erased: %s' % (h)) self.logger.info(logmsg) if self.output and sys.stdout.isatty(): if h not in self.installed_pkg_names: process = _("Removing") else: process = _("Cleanup") percent = 100 fmt = self._makefmt(percent, False) msg = fmt % (process, h) sys.stdout.write(msg + "\n") sys.stdout.flush() elif what == rpm.RPMCALLBACK_REPACKAGE_START: pass elif what == rpm.RPMCALLBACK_REPACKAGE_STOP: pass elif what == rpm.RPMCALLBACK_REPACKAGE_PROGRESS: pass yum-3.4.3/shell.py0000664000076400007640000003147011602434452013014 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University """ A shell implementation for the yum command line interface. """ import sys import cmd import shlex import logging from yum import Errors from yum.constants import * import yum.logginglevels as logginglevels class YumShell(cmd.Cmd): """ Interactive yum shell. """ def __init__(self, base): cmd.Cmd.__init__(self) self.base = base self.prompt = '> ' self.result = 0 self.identchars += '-' self.from_file = False # if we're running from a file, set this self.resultmsgs = ['Leaving Shell'] if (len(base.extcmds)) > 0: self.file = base.extcmds[0] self.shell_specific_commands = ['repo', 'repository', 'exit', 'quit', 'run', 'ts', 'transaction', 'config'] self.commandlist = self.shell_specific_commands + self.base.yum_cli_commands.keys() self.logger = logging.getLogger("yum.cli") self.verbose_logger = logging.getLogger("yum.verbose.cli") # NOTE: This is shared with self.base ... so don't reassign. self._shell_history_cmds = [] def _shell_history_add_cmds(self, cmds): if not self.base.conf.history_record: return self._shell_history_cmds.append(cmds) def _shlex_split(self, input_string): """split the input using shlex rules, and error or exit accordingly""" inputs = [] if input_string is None: # apparently shlex.split() doesn't like None as its input :) return inputs try: inputs = shlex.split(input_string) except ValueError, e: self.logger.critical('Script Error: %s', e) if self.from_file: raise Errors.YumBaseError, "Fatal error in script, exiting" return inputs def script(self): try: fd = open(self.file, 'r') except IOError: sys.exit("Error: Cannot open %s for reading" % self.file) lines = fd.readlines() fd.close() self.from_file = True for line in lines: self.onecmd(line) self.onecmd('EOF') return True def default(self, line): if len(line) > 0 and line.strip()[0] == '#': pass else: (cmd, args, line) = self.parseline(line) if cmd not in self.commandlist: xargs = [cmd] self.base.plugins.run('args', args=xargs) if xargs[0] == cmd: self.do_help('') return False if cmd == 'shell': return self.base.cmdstring = line self.base.cmdstring = self.base.cmdstring.replace('\n', '') self.base.cmds = self._shlex_split(self.base.cmdstring) self.base.plugins.run('args', args=self.base.cmds) self._shell_history_add_cmds(self.base.cmds) try: self.base.parseCommands() except Errors.YumBaseError: pass else: self.base.doCommands() def emptyline(self): pass def completenames(self, text, line, begidx, endidx): ret = cmd.Cmd.completenames(self, text, line, begidx, endidx) for command in self.base.yum_cli_commands: if command.startswith(text) and command != "shell": ret.append(command) return ret def do_help(self, arg): msg = """ Shell specific arguments: config - set config options repository (or repo) - enable/disable/list repositories transaction (or ts) - list, reset or run the transaction set run - run the transaction set exit or quit - exit the shell """ if arg in ['transaction', 'ts']: msg = """ %s arg list: lists the contents of the transaction reset: reset (zero-out) the transaction solve: run the dependency solver on the transaction run: run the transaction """ % arg elif arg in ['repo', 'repository']: msg = """ %s arg [option] list: lists repositories and their status. option = [all] name/id glob enable: enable repositories. option = repository id disable: disable repositories. option = repository id """ % arg elif arg == 'config': msg = """ %s arg [value] args: debuglevel, errorlevel, obsoletes, gpgcheck, assumeyes, exclude If no value is given it prints the current value. If value is given it sets that value. """ % arg else: self.base.shellUsage() self.verbose_logger.info(msg) def do_EOF(self, line): self.resultmsgs = ['Leaving Shell'] return True def do_quit(self, line): self.resultmsgs = ['Leaving Shell'] return True def do_exit(self, line): self.resultmsgs = ['Leaving Shell'] return True def do_ts(self, line): self.do_transaction(line) def do_transaction(self, line): (cmd, args, line) = self.parseline(line) if cmd in ['list', None]: self.verbose_logger.log(logginglevels.INFO_2, self.base.listTransaction()) elif cmd == 'reset': self.base.closeRpmDB() elif cmd == 'solve': try: (code, msgs) = self.base.buildTransaction() except Errors.YumBaseError, e: self.logger.critical('Error building transaction: %s', e) return False if code == 1: for msg in msgs: self.logger.critical('Error: %s', msg) else: self.verbose_logger.log(logginglevels.INFO_2, 'Success resolving dependencies') elif cmd == 'run': return self.do_run('') else: self.do_help('transaction') def do_config(self, line): (cmd, args, line) = self.parseline(line) # logs if cmd in ['debuglevel', 'errorlevel']: opts = self._shlex_split(args) if not opts: self.verbose_logger.log(logginglevels.INFO_2, '%s: %s', cmd, getattr(self.base.conf, cmd)) else: val = opts[0] try: val = int(val) except ValueError: self.logger.critical('Value %s for %s cannot be made to an int', val, cmd) return setattr(self.base.conf, cmd, val) if cmd == 'debuglevel': logginglevels.setDebugLevel(val) elif cmd == 'errorlevel': logginglevels.setErrorLevel(val) # bools elif cmd in ['gpgcheck', 'repo_gpgcheck', 'obsoletes', 'assumeyes']: opts = self._shlex_split(args) if not opts: self.verbose_logger.log(logginglevels.INFO_2, '%s: %s', cmd, getattr(self.base.conf, cmd)) else: value = opts[0] if value.lower() not in BOOLEAN_STATES: self.logger.critical('Value %s for %s is not a Boolean', value, cmd) return False value = BOOLEAN_STATES[value.lower()] setattr(self.base.conf, cmd, value) if cmd == 'obsoletes': self.base.up = None elif cmd in ['exclude']: args = args.replace(',', ' ') opts = self._shlex_split(args) if not opts: msg = '%s: ' % cmd msg = msg + ' '.join(getattr(self.base.conf, cmd)) self.verbose_logger.log(logginglevels.INFO_2, msg) return False else: setattr(self.base.conf, cmd, opts) if self.base.pkgSack: # kill the pkgSack self.base.pkgSack = None self.base.up = None # reset the updates # reset the transaction set, we have to or we shall surely die! self.base.closeRpmDB() else: self.do_help('config') def do_repository(self, line): self.do_repo(line) def do_repo(self, line): (cmd, args, line) = self.parseline(line) if cmd in ['list', None]: # Munge things to run the repolist command cmds = self._shlex_split(args) if not cmds: cmds = ['enabled'] cmds.insert(0, 'repolist') self.base.cmds = cmds self._shell_history_add_cmds(self.base.cmds) try: self.base.parseCommands() except Errors.YumBaseError: pass else: self.base.doCommands() elif cmd == 'enable': repos = self._shlex_split(args) for repo in repos: try: # Setup the sacks/repos, we need this because we are about # to setup the enabled one. And having some setup is bad. self.base.pkgSack changed = self.base.repos.enableRepo(repo) except Errors.ConfigError, e: self.logger.critical(e) except Errors.RepoError, e: self.logger.critical(e) else: for repo in changed: try: self.base.doRepoSetup(thisrepo=repo) except Errors.RepoError, e: self.logger.critical('Disabling Repository') self.base.repos.disableRepo(repo) return False self.base.up = None elif cmd == 'disable': repos = self._shlex_split(args) for repo in repos: try: offrepos = self.base.repos.disableRepo(repo) except Errors.ConfigError, e: self.logger.critical(e) except Errors.RepoError, e: self.logger.critical(e) else: # close the repos, too for repoid in offrepos: thisrepo = self.base.repos.repos[repoid] thisrepo.close() # kill the pkgSack # rebuild the indexes to be sure we cleaned up self.base.pkgSack.buildIndexes() else: self.do_help('repo') def do_test(self, line): (cmd, args, line) = self.parseline(line) print cmd print args print line def do_run(self, line): if len(self.base.tsInfo) > 0: try: (code, msgs) = self.base.buildTransaction() if code == 1: for msg in msgs: self.logger.critical('Error: %s', msg) return False returnval = self.base.doTransaction() except Errors.YumBaseError, e: self.logger.critical('Error: %s', e) except KeyboardInterrupt, e: self.logger.critical('\n\nExiting on user cancel') except IOError, e: if e.errno == 32: self.logger.critical('\n\nExiting on Broken Pipe') else: if returnval not in [0,1,-1]: self.verbose_logger.info('Transaction encountered a serious error.') else: if returnval == 1: self.verbose_logger.info('There were non-fatal errors in the transaction') elif returnval == -1: self.verbose_logger.info("Transaction didn't start") self.verbose_logger.log(logginglevels.INFO_2, 'Finished Transaction') self.base.closeRpmDB() yum-3.4.3/PLUGINS0000664000076400007640000003101711602434453012375 0ustar jamesjames== Introduction == Yum has a simple but powerful plugin architecture which allows external modules to add new features and/or modify Yum's behaviour. Yum plugins are Python module s (.py files) which are loaded when Yum starts. Plugins were created partially as a place to put functionality that was seen as either less common or undesirable for the main yum package. Functionality in pl ugins will generally not be moved or included in the core yum package. This document explains how to create plugins for Yum. See the {{{ yum(8) }}} and {{{ yum.conf(5) }}} man pages for information on how to install and configure p re-existing plugins. == A Basic Plugin == The following example shows a minimal Yum plugin:: {{{ #!python numbering=off from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE requires_api_version = '2.3' plugin_type = (TYPE_CORE, TYPE_INTERACTIVE) def init_hook(conduit): conduit.info(2, 'Hello world') def postreposetup_hook(conduit): raise PluginYumExit('Goodbye') }}} This plugin will display "Hello world" as it loads and then will cause Yum to qu it with a "Goodbye" message once it has finished initialising its repositories. == Slots and Hooks == Plugins integrate with Yum by registering a 'hook' function that corresponds to a given 'slot'. A slot is simply a point in Yum's execution. All plugin hook fun ctions for a given slot are called as Yum reaches that slot. Registration of hook functions is automatic. The plugin module is inspected for functions named {{{ _hook }}}. If a function matching a valid slot nam e is found then that function is automatically registered as a hook function. Hook functions all take one argument, for a {{{ conduit }}} instance. Conduits a re explained below. The following slots exist: {{{ config Called first as plugins are initialised. Plugins that need to extend Yum's configuration files or command line options should do so during this slot. postconfig Called immediately after Yum's config object is initialised. Useful for extending variables or modifying items in the config, for example the $ variables that are used in repo configuration. Note: Only available in yum 3.1.7 or later init Called early in Yum's initialisation. May be used for general plugin related initialisation. predownload Called just before Yum starts downloads of packages. Plugins may access information about the packages to be downloaded here. postdownload Called just after Yum finishes package downloads. Plugins may access error information about the packages just downloaded. prereposetup Called just before Yum initialises its repository information. postreposetup Called just after Yum initialises its repository information. exclude Called after package inclusion and exclusions are processed. Plugins may modify package exclusions here. preresolve Called before Yum begins package resolution. postresolve Called just after Yum finishes package resolution. pretrans Called before Yum begins the RPM update transation. posttrans Called just after Yum has finished the RPM update transation. close Called as Yum is performing a normal exit. Plugins may wish to perform cleanup functions here. clean Called during Yum's cleanup. This slot will be executed when Yum is run with the parameters 'clean all' or 'clean plugins'. }}} == Conduits == An object known as a conduit is passed into hook functions when they are called. This object provides methods and attributes that should be used for all interac tion that the plugin has with the rest of Yum. The conduit varies depending on the plugin slot. Different methods and attribute s are available as appropriate for the slot. See the {{{ yum.plugins.SLOT_TO_CON DUIT }}} dictionary for details on the conduit class used for a particular slot. All conduits are subclassed from the {{{ PluginConduit }}} class. == API Dependencies == The plugin API and general Yum API are subject to change. For this reason, plugi ns must state which API they were written for via the {{{ requires_api_version } }} attribute. Yum will exit with a useful error if it tries to load the plugin w hich is not compatible with its API version. In general, a plugin author should set {{{ requires_api_version }}} to the API v ersion at the time that the plugin is written. The current API version can be fo und at {{{ yum.plugins.API_VERSION }}}. The {{{ yum.plugins }}} module documents how the API version is incremented and the rules for compatibility tests. == Plugin Types == Plugins must advertise what type of plugin they are via the {{{ plugin_type }}} tuple. The advertised type(s) can be used by software using the Yum libraries to control the types of plugins that will be loaded. Yum itself will always load a ll types of plugins. A plugin may have more than one type. Two plugin types currently exist. {{{ TYPE_CORE A core plugin modifies Yum's base functionality. For example, a core plugin might modify package exclusions, dependency resolving or repository loading. TYPE_INTERACTIVE An interative plugin may modify Yum's user interface flow. For example, a TY PE_INTERACTIVE plugin might terminate Yum early in some conditions or output extra informat ion to the user. In Yum versions 2.6.x and earlier (plugin API version < 2.3) this constant w as called TYPE_INTERFACE. The purpose of TYPE_INTERFACE is the same as TYPE_INTERACTIV E but the meaning of the old name wasn't clear and so it has been deprecated. }}} == Stopping Yum == A plugin may stop Yum's execution at any point by raising the {{{ yum.plugins.Pl uginYumExit }}} exception. The argument of the exception will be displayed to th e user as Yum terminates. == Reading Private Plugin Options == Each plugin has its own configuration file in {{{ /etc/yum/pluginconf.d/ }}}. Th ese configuration files follow standard INI file conventions like Yum's own conf iguration files. Arbitrary options can be read from a plugin's configuration fil e at any time by using the following methods. These are available on any conduit instance: {{{ #!python numbering=off def confString(self, section, opt, default=None) def confInt(self, section, opt, default=None) def confFloat(self, section, opt, default=None) def confBool(self, section, opt, default=None) }}} If the option is missing from the configuration file then the default value pass ed to method will be returned. See {{{ yum.plugins }}} for more documentation on these methods and see the {{{ yum(8) }}} and {{{ yum.conf(5) }}} man pages for general information on plugin configuration files. == Extending Yum's Configuration Options == In addition to having their own configuration file, plugins may modify the options available in Yum's own configuration files. A plugin can add new options or modify the existing options by modifying the {{{ YumConf }}} and {{{ RepoConf }}} classes defined in {{{ yum.config }}}. The {{{ YumConf }}} class defines options that are available in the {{{ [main] } }} section of {{{ yum.conf }}}. The {{{ RepoConf }}} class defines options that are available in each repository sections of Yum's configuration file(s). Modifications to {{{ YumConf }}} and {{{ RepoConf }}} should occur in the {{{ co nfig }}} slot. Here is a simple example of how options can be added to Yum's configuration files. {{{ #!python numbering=off from yum import config from yum.plugins import TYPE_INTERACTIVE requires_api_version = '2.4' plugin_type = (TYPE_INTERACTIVE,) def config_hook(conduit): # Add a boolean option to the [main] section config.YumConf.enable_foo = config.BoolOption(False) # Add a URL option to repository sections config.RepoConf.foo_url = config.UrlOption() # Add an option to to [main] and the repository sections. The # repository options will inherit the properties of the [main] option # and will use the value from [main] if the option is not specified in # the repo section. config.YumConf.max_foo = config.IntOption(10) config.RepoConf.max_foo = config.Inherit(config.YumConf.max_foo) def init_hook(conduit): conf = conduit.getConf() # Display the options from the [main] section conduit.info(2, "enable_foo = %r" % conf.enable_foo) conduit.info(2, "max_foo = %r" % conf.max_foo) # Display the options from the repository sections for repo in conduit.getRepos().listEnabled(): conduit.info(2, "%s.foo_url = %r" % (repo.id, repo.foo_url)) conduit.info(2, "%s.max_foo = %r" % (repo.id, repo.max_foo)) }}} Note how different types of options are defined ({{{ IntOption }}}, {{{ UrlOptio n }}}, {{{ BoolOption }}}). A wide variety of option types are available in {{{ yum.config }}}. It is even possible for plugins to define their own option types by subclassing {{{ Option }}} if the existing types aren't sufficient. See the source code for the {{{ yum.config }}} module for further details. == Extending Yum's Configuration Options (pre Yum 2.9.x, deprecated) == In addition to having their own configuration file, plugins may add extra option s to Yum's main configuration files. A plugin must register new options in the { {{ config }}} slot using the {{{ registerOpt() }}} conduit method: {{{ #!python numbering=off registerOpt(name, valuetype, where, default) }}} where the arguments are... {{{ name The name of the new option. valuetype The type of the option. Valid values are PLUG_OPT_STRING, PLUG_OPT_INT, PLUG_OPT_FLOAT and PLUG_OPT_BOOL (defined in yum.constants). The value returned for the option will be automatically parsed according to the type. where Defines where the option should be available in configuration files. Valid values are: - PLUG_OPT_WHERE_MAIN: the option only exists in the [main] section - PLUG_OPT_WHERE_REPO: the option only exists in repository sections - PLUG_OPT_WHERE_ALL: the option exists in both [main] and repository sections default The default value returned for the option if it isn't present. }}} The option values defined in the {{{ [main] }}} section may be read by calling t he {{{ getConf() }}} repository method. The options will be available as attributes of the returned object. New repository options will be available as attributes of the repository objects returned via the {{{ getRepos() }}} conduit method. The following example plugin shows how a custom option may be defined and read: {{{ #!python numbering=off from yum.constants import * from yum.plugins import TYPE_INTERACTIVE requires_api_version = '2.3' plugin_type = (TYPE_INTERACTIVE,) def config_hook(conduit): conduit.registerOpt('foo', PLUG_OPT_BOOL, PLUG_OPT_WHERE_ALL, False) def init_hook(conduit): conduit.info(2, "[main] foo=%r" % conduit.getConf().foo) def exclude_hook(conduit): for repo in conduit.getRepos().listEnabled(): conduit.info(2, "[%s] foo=%r" % (repo.id, repo.foo)) }}} == Extending Yum's Command Line Options == A plugin may add extra command line options to Yum. To do this the plugin should call the {{{ getOptParser() }}} conduit method during the {{{ config }}} or {{{ init }}} slot. This will return an {{{ OptionParser }}} instance which the p lugin may modify. See the Python standard library {{{ optparse }}} module documentati on for information on how to manipulate this object. The parsed command line options may be read in any slot after the {{{ init }}} slot. The values returned are as for {{{ OptionParser.parse_args() }}}. Options added by plugins will show up in Yum's command line help output (ie. {{{ yum --help }}}) The following plugin demonstrates the addition of new command line options by ad ding a {{{ --downloadonly }}} option: {{{ #!python numbering=off from yum.plugins import PluginYumExit, TYPE_INTERACTIVE requires_api_version = '2.3' plugin_type = (TYPE_INTERACTIVE,) def config_hook(conduit): parser = conduit.getOptParser() parser.add_option('', '--downloadonly', dest='dlonly', action='store_true', default=False, help="don't update, just download") def postdownload_hook(conduit): opts, commands = conduit.getCmdLine() if opts.dlonly: raise PluginYumExit('exiting because --downloadonly specified ') }}} == More Examples == The easiest way to get started writing Yum plugins is to look at some examples. The yum-utils package contains a number of useful plugins which will act as a useful starting point. The yum-utils git tree can be viewed here: [http://yum.ba seurl.org/gitweb/?p=yum-utils.git;a=tree] ---- yum-3.4.3/yum-updatesd.py0000664000076400007640000005325511602434452014333 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # (c)2006 Duke University, Red Hat, Inc. # Seth Vidal # Jeremy Katz #TODO: # - clean up config and work on man page for docs # - need to be able to cancel downloads. requires some work in urlgrabber # - what to do if we're asked to exit while updates are being applied? # - what to do with the lock around downloads/updates # since it takes me time everytime to figure this out again, here's how to # queue a check with dbus-send. adjust appropriately for other methods # $ dbus-send --system --print-reply --type=method_call \ # --dest=edu.duke.linux.yum /Updatesd edu.duke.linux.yum.CheckNow import os import sys import time import gzip import dbus import dbus.service import dbus.glib import gobject import smtplib import threading from optparse import OptionParser from email.mime.text import MIMEText import yum import yum.Errors import syslog from yum.config import BaseConfig, Option, IntOption, ListOption, BoolOption from yum.parser import ConfigPreProcessor from ConfigParser import ConfigParser, ParsingError from yum.constants import * from yum.update_md import UpdateMetadata # FIXME: is it really sane to use this from here? sys.path.append('/usr/share/yum-cli') import callback config_file = '/etc/yum/yum-updatesd.conf' initial_directory = os.getcwd() class UpdateEmitter(object): """Abstract object for implementing different types of emitters.""" def __init__(self): pass def updatesAvailable(self, updateInfo): """Emitted when there are updates available to be installed. If not doing the download here, then called immediately on finding new updates. If we do the download here, then called after the updates have been downloaded.""" pass def updatesDownloading(self, updateInfo): """Emitted to give feedback of update download starting.""" pass def updatesApplied(self, updateInfo): """Emitted on successful installation of updates.""" pass def updatesFailed(self, errmsgs): """Emitted when an update has failed to install.""" pass def checkFailed(self, error): """Emitted when checking for updates failed.""" pass def setupFailed(self, error, translation_domain): """Emitted when plugin initialization failed.""" pass class SyslogUpdateEmitter(UpdateEmitter): def __init__(self, syslog_facility, ident = "yum-updatesd", level = "WARN"): UpdateEmitter.__init__(self) syslog.openlog(ident, 0, self._facilityMap(syslog_facility)) self.level = level def updatesAvailable(self, updateInfo): num = len(updateInfo) level = self.level if num > 1: msg = "%d updates available" %(num,) elif num == 1: msg = "1 update available" else: msg = "No updates available" level = syslog.LOG_DEBUG syslog.syslog(self._levelMap(level), msg) def _levelMap(self, lvl): level_map = { "EMERG": syslog.LOG_EMERG, "ALERT": syslog.LOG_ALERT, "CRIT": syslog.LOG_CRIT, "ERR": syslog.LOG_ERR, "WARN": syslog.LOG_WARNING, "NOTICE": syslog.LOG_NOTICE, "INFO": syslog.LOG_INFO, "DEBUG": syslog.LOG_DEBUG } if type(lvl) == int: return lvl return level_map.get(lvl.upper(), syslog.LOG_INFO) def _facilityMap(self, facility): facility_map = { "KERN": syslog.LOG_KERN, "USER": syslog.LOG_USER, "MAIL": syslog.LOG_MAIL, "DAEMON": syslog.LOG_DAEMON, "AUTH": syslog.LOG_AUTH, "LPR": syslog.LOG_LPR, "NEWS": syslog.LOG_NEWS, "UUCP": syslog.LOG_UUCP, "CRON": syslog.LOG_CRON, "LOCAL0": syslog.LOG_LOCAL0, "LOCAL1": syslog.LOG_LOCAL1, "LOCAL2": syslog.LOG_LOCAL2, "LOCAL3": syslog.LOG_LOCAL3, "LOCAL4": syslog.LOG_LOCAL4, "LOCAL5": syslog.LOG_LOCAL5, "LOCAL6": syslog.LOG_LOCAL6, "LOCAL7": syslog.LOG_LOCAL7,} if type(facility) == int: return facility return facility_map.get(facility.upper(), syslog.LOG_DAEMON) class EmailUpdateEmitter(UpdateEmitter): def __init__(self, sender, rcpt): UpdateEmitter.__init__(self) self.sender = sender self.rcpt = rcpt def updatesAvailable(self, updateInfo): num = len(updateInfo) if num < 1: return output = """ Hi, There are %d package updates available. Please run the system updater. Thank You, Your Computer """ % num msg = MIMEText(output) msg['Subject'] = "%d Updates Available" %(num,) msg['From'] = self.sender msg['To'] = ",".join(self.rcpt) s = smtplib.SMTP() s.connect() s.sendmail(self.sender, self.rcpt, msg.as_string()) s.close() class DbusUpdateEmitter(UpdateEmitter): def __init__(self): UpdateEmitter.__init__(self) bus = dbus.SystemBus() name = dbus.service.BusName('edu.duke.linux.yum', bus = bus) yum_dbus = YumDbusInterface(name) self.dbusintf = yum_dbus def updatesAvailable(self, updateInfo): num = len(updateInfo) msg = "%d" %(num,) if num > 0: self.dbusintf.UpdatesAvailableSignal(msg) else: self.dbusintf.NoUpdatesAvailableSignal(msg) def updatesFailed(self, errmsgs): self.dbusintf.UpdatesFailedSignal(errmsgs) def updatesApplied(self, updinfo): self.dbusintf.UpdatesAppliedSignal(updinfo) def checkFailed(self, error): self.dbusintf.CheckFailedSignal(error) def setupFailed(self, error, translation_domain): self.dbusintf.SetupFailedSignal(error, translation_domain) class YumDbusInterface(dbus.service.Object): def __init__(self, bus_name, object_path='/UpdatesAvail'): dbus.service.Object.__init__(self, bus_name, object_path) @dbus.service.signal('edu.duke.linux.yum') def UpdatesAvailableSignal(self, message): pass @dbus.service.signal('edu.duke.linux.yum') def NoUpdatesAvailableSignal(self, message): pass @dbus.service.signal('edu.duke.linux.yum') def UpdatesFailedSignal(self, errmsgs): pass @dbus.service.signal('edu.duke.linux.yum') def UpdatesAppliedSignal(self, updinfo): pass @dbus.service.signal('edu.duke.linux.yum') def CheckFailedSignal(self, message): pass @dbus.service.signal('edu.duke.linux.yum') def SetupFailedSignal(self, message, translation_domain=""): pass class UDConfig(BaseConfig): """Config format for the daemon""" run_interval = IntOption(3600) nonroot_workdir = Option("/var/tmp/yum-updatesd") emit_via = ListOption(['dbus', 'email', 'syslog']) email_to = ListOption(["root"]) email_from = Option("root") dbus_listener = BoolOption(True) do_update = BoolOption(False) do_download = BoolOption(False) do_download_deps = BoolOption(False) updaterefresh = IntOption(3600) syslog_facility = Option("DAEMON") syslog_level = Option("WARN") syslog_ident = Option("yum-updatesd") yum_config = Option("/etc/yum/yum.conf") class UpdateBuildTransactionThread(threading.Thread): def __init__(self, updd, name): self.updd = updd threading.Thread.__init__(self, name=name) def run(self): self.updd.tsInfo.makelists() try: (result, msgs) = self.updd.buildTransaction() except yum.Errors.RepoError, errmsg: # error downloading hdrs msgs = ["Error downloading headers"] self.updd.emitUpdateFailed(msgs) return dlpkgs = map(lambda x: x.po, filter(lambda txmbr: txmbr.ts_state in ("i", "u"), self.updd.tsInfo.getMembers())) self.updd.downloadPkgs(dlpkgs) self.processPkgs(dlpkgs) class UpdateDownloadThread(UpdateBuildTransactionThread): def __init__(self, updd): UpdateBuildTransactionThread.__init__(self, updd, name="UpdateDownloadThread") def processPkgs(self, dlpkgs): self.updd.emitAvailable() self.updd.releaseLocks() class UpdateInstallThread(UpdateBuildTransactionThread): def __init__(self, updd): UpdateBuildTransactionThread.__init__(self, updd, name="UpdateInstallThread") def failed(self, msgs): self.updd.emitUpdateFailed(msgs) self.updd.releaseLocks() def success(self): self.updd.emitUpdateApplied() self.updd.releaseLocks() self.updd.updateInfo = None self.updd.updateInfoTime = None def processPkgs(self, dlpkgs): for po in dlpkgs: result, err = self.updd.sigCheckPkg(po) if result == 0: continue elif result == 1: try: self.updd.getKeyForPackage(po) except yum.Errors.YumBaseError, errmsg: self.failed([str(errmsg)]) del self.updd.ts self.updd.initActionTs() # make a new, blank ts to populate self.updd.populateTs(keepold=0) self.updd.ts.check() #required for ordering self.updd.ts.order() # order cb = callback.RPMInstallCallback(output = 0) cb.filelog = True cb.tsInfo = self.updd.tsInfo try: self.updd.runTransaction(cb=cb) except yum.Errors.YumBaseError, err: self.failed([str(err)]) self.success() class UpdatesDaemon(yum.YumBase): def __init__(self, opts): yum.YumBase.__init__(self) self.opts = opts self.didSetup = False self.emitters = [] if 'dbus' in self.opts.emit_via: self.emitters.append(DbusUpdateEmitter()) if 'email' in self.opts.emit_via: self.emitters.append(EmailUpdateEmitter(self.opts.email_from, self.opts.email_to)) if 'syslog' in self.opts.emit_via: self.emitters.append(SyslogUpdateEmitter(self.opts.syslog_facility, self.opts.syslog_ident, self.opts.syslog_level)) self.updateInfo = [] self.updateInfoTime = None def doSetup(self): # if we are not root do the special subdir thing if os.geteuid() != 0: if not os.path.exists(self.opts.nonroot_workdir): os.makedirs(self.opts.nonroot_workdir) self.repos.setCacheDir(self.opts.nonroot_workdir) self.doConfigSetup(fn=self.opts.yum_config) def refreshUpdates(self): self.doLock() try: self.doRepoSetup() self.doSackSetup() self.updateCheckSetup() except Exception, e: syslog.syslog(syslog.LOG_WARNING, "error getting update info: %s" %(e,)) self.emitCheckFailed("%s" %(e,)) self.doUnlock() return False return True def populateUpdateMetadata(self): self.updateMetadata = UpdateMetadata() repos = [] for (new, old) in self.up.getUpdatesTuples(): pkg = self.getPackageObject(new) if pkg.repoid not in repos: repo = self.repos.getRepo(pkg.repoid) repos.append(repo.id) try: # grab the updateinfo.xml.gz from the repodata md = repo.retrieveMD('updateinfo') except Exception: # can't find any; silently move on continue md = gzip.open(md) self.updateMetadata.add(md) md.close() def populateUpdates(self): def getDbusPackageDict(pkg): """Returns a dictionary corresponding to the package object in the form that we can send over the wire for dbus.""" pkgDict = { "name": pkg.name, "version": pkg.version, "release": pkg.release, "epoch": pkg.epoch, "arch": pkg.arch, "sourcerpm": pkg.sourcerpm, "summary": pkg.summary or "", } # check if any updateinfo is available md = self.updateMetadata.get_notice((pkg.name, pkg.ver, pkg.rel)) if md: # right now we only want to know if it is a security update pkgDict['type'] = md['type'] return pkgDict if self.up is None: # we're _only_ called after updates are setup return self.populateUpdateMetadata() self.updateInfo = [] for (new, old) in self.up.getUpdatesTuples(): n = getDbusPackageDict(self.getPackageObject(new)) o = getDbusPackageDict(self.rpmdb.searchPkgTuple(old)[0]) self.updateInfo.append((n, o)) if self.conf.obsoletes: for (obs, inst) in self.up.getObsoletesTuples(): n = getDbusPackageDict(self.getPackageObject(obs)) o = getDbusPackageDict(self.rpmdb.searchPkgTuple(inst)[0]) self.updateInfo.append((n, o)) self.updateInfoTime = time.time() def populateTsInfo(self): # figure out the updates for (new, old) in self.up.getUpdatesTuples(): updating = self.getPackageObject(new) updated = self.rpmdb.searchPkgTuple(old)[0] self.tsInfo.addUpdate(updating, updated) # and the obsoletes if self.conf.obsoletes: for (obs, inst) in self.up.getObsoletesTuples(): obsoleting = self.getPackageObject(obs) installed = self.rpmdb.searchPkgTuple(inst)[0] self.tsInfo.addObsoleting(obsoleting, installed) self.tsInfo.addObsoleted(installed, obsoleting) def updatesCheck(self): if not self.didSetup: try: self.doSetup() except Exception, e: syslog.syslog(syslog.LOG_WARNING, "error initializing: %s" % e) if isinstance(e, yum.plugins.PluginYumExit): self.emitSetupFailed(e.value, e.translation_domain) else: # if we don't know where the string is from, then assume # it's not marked for translation (versus sending # gettext.textdomain() and assuming it's from the default # domain for this app) self.emitSetupFailed(str(e)) # Setup failed, let's restart and try again after the update # interval restart() else: self.didSetup = True try: if not self.refreshUpdates(): return except yum.Errors.LockError: return True # just pass for now try: self.populateTsInfo() self.populateUpdates() if self.opts.do_update: uit = UpdateInstallThread(self) uit.start() elif self.opts.do_download: self.emitDownloading() dl = UpdateDownloadThread(self) dl.start() else: # just notify about things being available self.emitAvailable() self.releaseLocks() except Exception, e: self.emitCheckFailed("%s" %(e,)) self.doUnlock() return True def getUpdateInfo(self): # if we have a cached copy, use it if self.updateInfoTime and (time.time() - self.updateInfoTime < self.opts.updaterefresh): return self.updateInfo # try to get the lock so we can update the info. fall back to # cached if available or try a few times. for i in range(10): try: self.doLock() break except yum.Errors.LockError: # if we can't get the lock, return what we have if we can if self.updateInfo: return self.updateInfo time.sleep(1) else: return [] try: self.updateCheckSetup() self.populateUpdates() self.releaseLocks() except: self.doUnlock() return self.updateInfo def updateCheckSetup(self): self.doTsSetup() self.doRpmDBSetup() self.doUpdateSetup() def releaseLocks(self): self.closeRpmDB() self.doUnlock() def emitAvailable(self): """method to emit a notice about updates""" map(lambda x: x.updatesAvailable(self.updateInfo), self.emitters) def emitDownloading(self): """method to emit a notice about updates downloading""" map(lambda x: x.updatesDownloading(self.updateInfo), self.emitters) def emitUpdateApplied(self): """method to emit a notice when automatic updates applied""" map(lambda x: x.updatesApplied(self.updateInfo), self.emitters) def emitUpdateFailed(self, errmsgs): """method to emit a notice when automatic updates failed""" map(lambda x: x.updatesFailed(errmsgs), self.emitters) def emitCheckFailed(self, error): """method to emit a notice when checking for updates failed""" map(lambda x: x.checkFailed(error), self.emitters) def emitSetupFailed(self, error, translation_domain=""): """method to emit a notice when checking for updates failed""" map(lambda x: x.setupFailed(error, translation_domain), self.emitters) class YumDbusListener(dbus.service.Object): def __init__(self, updd, bus_name, object_path='/Updatesd', allowshutdown = False): dbus.service.Object.__init__(self, bus_name, object_path) self.updd = updd self.allowshutdown = allowshutdown def doCheck(self): self.updd.updatesCheck() return False @dbus.service.method("edu.duke.linux.yum", in_signature="") def CheckNow(self): # make updating checking asynchronous since we discover whether # or not there are updates via a callback signal anyway gobject.idle_add(self.doCheck) return "check queued" @dbus.service.method("edu.duke.linux.yum", in_signature="") def ShutDown(self): if not self.allowshutdown: return False # we have to do this in a callback so that it doesn't get # sent back to the caller gobject.idle_add(shutDown) return True @dbus.service.method("edu.duke.linux.yum", in_signature="", out_signature="a(a{ss}a{ss})") def GetUpdateInfo(self): # FIXME: should this be async? upds = self.updd.getUpdateInfo() return upds def shutDown(): sys.exit(0) def restart(): os.chdir(initial_directory) os.execve(sys.argv[0], sys.argv, os.environ) def main(options = None): # we'll be threading for downloads/updates gobject.threads_init() dbus.glib.threads_init() if options is None: parser = OptionParser() parser.add_option("-f", "--no-fork", action="store_true", default=False, dest="nofork") parser.add_option("-r", "--remote-shutdown", action="store_true", default=False, dest="remoteshutdown") (options, args) = parser.parse_args() if not options.nofork: if os.fork(): sys.exit() fd = os.open("/dev/null", os.O_RDWR) os.dup2(fd, 0) os.dup2(fd, 1) os.dup2(fd, 2) os.close(fd) confparser = ConfigParser() opts = UDConfig() if os.path.exists(config_file): confpp_obj = ConfigPreProcessor(config_file) try: confparser.readfp(confpp_obj) except ParsingError, e: print >> sys.stderr, "Error reading config file: %s" % e sys.exit(1) syslog.openlog("yum-updatesd", 0, syslog.LOG_DAEMON) opts.populate(confparser, 'main') updd = UpdatesDaemon(opts) if opts.dbus_listener: bus = dbus.SystemBus() name = dbus.service.BusName("edu.duke.linux.yum", bus=bus) YumDbusListener(updd, name, allowshutdown = options.remoteshutdown) run_interval_ms = opts.run_interval * 1000 # needs to be in ms gobject.timeout_add(run_interval_ms, updd.updatesCheck) mainloop = gobject.MainLoop() mainloop.run() if __name__ == "__main__": main() yum-3.4.3/etc/0000775000076400007640000000000011602434452012101 5ustar jamesjamesyum-3.4.3/etc/yum-updatesd-dbus.conf0000664000076400007640000000130211602434452016320 0ustar jamesjames yum-3.4.3/etc/yum-weekly.yum0000664000076400007640000000005611602434452014746 0ustar jamesjamesclean packages clean expire-cache ts run exit yum-3.4.3/etc/yum-daily.yum0000664000076400007640000000002311602434452014542 0ustar jamesjamesupdate ts run exit yum-3.4.3/etc/yum.bash0000664000076400007640000002437011602434452013560 0ustar jamesjames# bash completion for yum # arguments: # 1 = argument to "yum list" (all, available, updates etc) # 2 = current word to be completed _yum_list() { # Fail fast for things that look like paths. [[ $2 == */* || $2 == [.~]* ]] && return if [ "$1" = all ] ; then # Try to strip in between headings like "Available Packages" - would # be nice if e.g. -d 0 did that for us. This will obviously only work # for English :P COMPREPLY+=( $( ${yum:-yum} -d 0 -C list $1 "$2*" 2>/dev/null | \ sed -ne '/^Available /d' -e '/^Installed /d' -e '/^Updated /d' \ -e 's/[[:space:]].*//p' ) ) else # Drop first line (e.g. "Updated Packages") - would be nice if e.g. # -d 0 did that for us. COMPREPLY+=( $( ${yum:-yum} -d 0 -C list $1 "$2*" 2>/dev/null | \ sed -ne 1d -e 's/[[:space:]].*//p' ) ) fi } # arguments: # 1 = argument to "yum repolist" (enabled, disabled etc) # 2 = current word to be completed _yum_repolist() { # TODO: add -d 0 when http://yum.baseurl.org/ticket/29 is fixed # (for now --noplugins is used to get rid of "Loaded plugins: ...") # Drop first ("repo id repo name") and last ("repolist: ...") rows - # would be nice if e.g. -d 0 did that for us. COMPREPLY+=( $( compgen -W "$( ${yum:-yum} --noplugins -C repolist $1 2>/dev/null | \ sed -ne '/^repo\s\{1,\}id/d' -e '/^repolist:/d' \ -e 's/[[:space:]].*//p' )" -- "$2" ) ) } # arguments: # 1 = argument to "yum grouplist" (usually empty (""), or hidden) # 2 = current word to be completed _yum_grouplist() { local IFS=$'\n' # TODO: add -d 0 when http://yum.baseurl.org/ticket/29 is fixed COMPREPLY=( $( compgen -W "$( ${yum:-yum} -C grouplist $1 "$2*" \ 2>/dev/null | sed -ne 's/^[[:space:]]\{1,\}\(.\{1,\}\)/\1/p' )" \ -- "$2" ) ) } # arguments: # 1 = 1 or 0 to list enabled or disabled plugins # 2 = current word to be completed _yum_plugins() { local val [ $1 = 1 ] && val='\(1\|yes\|true\|on\)' || val='\(0\|no\|false\|off\)' COMPREPLY+=( $( compgen -W '$( command grep -il "^\s*enabled\s*=\s*$val" \ /etc/yum/pluginconf.d/*.conf 2>/dev/null \ | sed -ne "s|^.*/\([^/]\{1,\}\)\.conf$|\1|p" )' -- "$2" ) ) } # arguments: # 1 = current word to be completed _yum_binrpmfiles() { COMPREPLY+=( $( compgen -f -o plusdirs -X '!*.rpm' -- "$1" ) ) COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -X '*.src.rpm' ) ) COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -X '*.nosrc.rpm' ) ) } _yum_baseopts() { local opts='--help --tolerant --cacheonly --config --randomwait --debuglevel --showduplicates --errorlevel --rpmverbosity --quiet --verbose --assumeyes --version --installroot --enablerepo --disablerepo --exclude --disableexcludes --obsoletes --noplugins --nogpgcheck --skip-broken --color --releasever --setopt' [[ $COMP_LINE == *--noplugins* ]] || \ opts+=" --disableplugin --enableplugin" printf %s "$opts" } _yum_transactions() { COMPREPLY+=( $( compgen -W "$( $yum -d 0 -C history 2>/dev/null | \ sed -ne 's/^[[:space:]]*\([0-9]\{1,\}\).*/\1/p' )" -- "$cur" ) ) } # arguments: # 1 = current word to be completed # 2 = previous word # return 0 if no more completions should be sought, 1 otherwise _yum_complete_baseopts() { case $2 in -d|--debuglevel|-e|--errorlevel) COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- "$1" ) ) return 0 ;; --rpmverbosity) COMPREPLY=( $( compgen -W 'info critical emergency error warn debug' -- "$1" ) ) return 0 ;; -c|--config) COMPREPLY=( $( compgen -f -o plusdirs -X "!*.conf" -- "$1" ) ) return 0 ;; --installroot|--downloaddir) COMPREPLY=( $( compgen -d -- "$1" ) ) return 0 ;; --enablerepo) _yum_repolist disabled "$1" return 0 ;; --disablerepo) _yum_repolist enabled "$1" return 0 ;; --disableexcludes) _yum_repolist all "$1" COMPREPLY=( $( compgen -W '${COMPREPLY[@]} all main' -- "$1" ) ) return 0 ;; --enableplugin) _yum_plugins 0 "$1" return 0 ;; --disableplugin) _yum_plugins 1 "$1" return 0 ;; --color) COMPREPLY=( $( compgen -W 'always auto never' -- "$1" ) ) return 0 ;; -R|--randomwait|-x|--exclude|-h|--help|--version|--releasever|--cve|\ --bz|--advisory|--tmprepo|--verify-filenames|--setopt) return 0 ;; --download-order) COMPREPLY=( $( compgen -W 'default smallestfirst largestfirst' \ -- "$1" ) ) return 0 ;; --override-protection) _yum_list installed "$1" return 0 ;; --verify-configuration-files) COMPREPLY=( $( compgen -W '1 0' -- "$1" ) ) return 0 ;; esac return 1 } _yum() { COMPREPLY=() local yum=$1 cur=$2 prev=$3 words=("${COMP_WORDS[@]}") declare -F _get_comp_words_by_ref &>/dev/null && \ _get_comp_words_by_ref -n = cur prev words # Commands offered as completions local cmds=( check check-update clean deplist distro-sync downgrade groupinfo groupinstall grouplist groupremove help history info install list makecache provides reinstall remove repolist resolvedep search shell update upgrade version ) local i c cmd subcmd for (( i=1; i < ${#words[@]}-1; i++ )) ; do [[ -n $cmd ]] && subcmd=${words[i]} && break # Recognize additional commands and aliases for c in ${cmds[@]} check-rpmdb distribution-synchronization erase \ groupupdate grouperase localinstall localupdate whatprovides ; do [[ ${words[i]} == $c ]] && cmd=$c && break done done case $cmd in check|check-rpmdb) COMPREPLY=( $( compgen -W 'dependencies duplicates all' \ -- "$cur" ) ) return 0 ;; check-update|grouplist|makecache|provides|whatprovides|resolvedep|\ search) return 0 ;; clean) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -W 'expire-cache packages headers metadata cache dbcache all' -- "$cur" ) ) return 0 ;; deplist) COMPREPLY=( $( compgen -f -o plusdirs -X '!*.[rs]pm' -- "$cur" ) ) _yum_list all "$cur" return 0 ;; distro-sync|distribution-synchronization) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -W 'full different' -- "$cur" ) ) _yum_list installed "$cur" return 0 ;; downgrade|reinstall) _yum_binrpmfiles "$cur" _yum_list installed "$cur" return 0 ;; erase|remove) _yum_list installed "$cur" return 0 ;; group*) _yum_grouplist "" "$cur" return 0 ;; help) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" ) ) return 0 ;; history) if [[ $prev == $cmd ]] ; then COMPREPLY=( $( compgen -W 'info list summary undo redo new addon-info package-list rollback' -- "$cur" ) ) return 0 fi case $subcmd in undo|redo|repeat|addon|addon-info|rollback) _yum_transactions COMPREPLY=( $( compgen -W "${COMPREPLY[@]} last" \ -- "$cur" ) ) ;; package-list|pkg|pkgs|pkg-list|pkgs-list|package|packages|\ packages-list) _yum_list available "$cur" ;; info|list|summary) _yum_transactions if [[ $subcmd != info ]] ; then COMPREPLY=( $( compgen -W "${COMPREPLY[@]} all" \ -- "$cur" ) ) [[ $cur != all ]] && _yum_list available "$cur" else _yum_list available "$cur" fi ;; esac return 0 ;; info) _yum_list all "$cur" return 0 ;; install) _yum_binrpmfiles "$cur" _yum_list available "$cur" return 0 ;; list) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -W 'all available updates installed extras obsoletes recent' -- "$cur" ) ) return 0 ;; localinstall|localupdate) _yum_binrpmfiles "$cur" return 0 ;; repolist) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -W 'all enabled disabled' -- "$cur" ) ) return 0 ;; shell) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) ) return 0 ;; update|upgrade) _yum_binrpmfiles "$cur" _yum_list updates "$cur" return 0 ;; version) [ "$prev" = "$cmd" ] && \ COMPREPLY=( $( compgen -W 'all installed available nogroups grouplist groupinfo' -- "$cur" ) ) return 0 ;; esac local split=false declare -F _split_longopt &>/dev/null && _split_longopt && split=true _yum_complete_baseopts "$cur" "$prev" && return 0 $split && return 0 COMPREPLY=( $( compgen -W '$( _yum_baseopts ) ${cmds[@]}' -- "$cur" ) ) } && complete -F _yum -o filenames yum yummain.py # Local variables: # mode: shell-script # sh-basic-offset: 4 # sh-indent-comment: t # indent-tabs-mode: nil # End: # ex: ts=4 sw=4 et filetype=sh yum-3.4.3/etc/yum-cron.sysconf0000664000076400007640000000374611602434452015272 0ustar jamesjames# Pass any given paramter to yum, as run in all the scripts invoked # by this package. Be aware that this is global, and yum is invoked in # several modes by these scripts for which your own parameter might not # be appropriate YUM_PARAMETER= # Don't install, just check (valid: yes|no) CHECK_ONLY=no # Check to see if you can reach the repos before updating (valid: yes|no) CHECK_FIRST=no # Don't install, just check and download (valid: yes|no) # Implies CHECK_ONLY=yes (gotta check first to see what to download) DOWNLOAD_ONLY=no # Error level, practical range 0-10, 0 means print only critical errors which # you must be told, 1 means print all errors, even ones that are not important # Level 0 is the default # ERROR_LEVEL=0 # Debug level, practical range 0-10, higher number means more output # Level 1 is a useful level if you want to see what's been done and # don't want to read /var/log/yum.log # Level 0 is the default # DEBUG_LEVEL=1 # randomwait is used by yum to wait random time # default is 60 so yum waits random time from 1 to 60 minutes # the value must not be zero RANDOMWAIT="60" # if MAILTO is set and the mail command is available, the mail command # is used to deliver yum output # by default MAILTO is unset, so crond mails the output by itself # example: MAILTO=root MAILTO= # you may set SYSTEMNAME if you want your yum emails tagged differently # default is output of hostname command # this variable is used only if MAILTO is set too #SYSTEMNAME="" # you may set DAYS_OF_WEEK to the days of the week you want to run # default is every day #DAYS_OF_WEEK="0123456" # which day should it do cleanup on? defaults to 0 (Sunday). If this day isn't in the # DAYS_OF_WEEK above, it'll never happen CLEANDAY="0" # set to yes to make the yum-cron service to wait for transactions to complete SERVICE_WAITS=yes # set maximum time period (in seconds) for the yum-cron service to wait for # transactions to complete. The default is 300 seconds (5 minutes) SERVICE_WAIT_TIME=300 yum-3.4.3/etc/version-groups.conf0000664000076400007640000000067411602434452015761 0ustar jamesjames# This file allows you to create "groups" of package names, which are used by # the version command. [yum] # These are the top level things to do with yum, we don't list Eg. libselinux # even though that's require by rpm(-libs). run_with_packages = true pkglist = glibc, sqlite, libcurl, nss, yum-metadata-parser, rpm, rpm-libs, rpm-python, python, python-iniparse, python-urlgrabber, python-pycurl yum-3.4.3/etc/Makefile0000664000076400007640000000234311602434452013543 0ustar jamesjamesYUMETC=$(DESTDIR)/etc/yum all: echo "Nothing to do" clean: rm -f *.pyc *.pyo *~ 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 install -m 644 version-groups.conf $(YUMETC)/version-groups.conf mkdir -p $(DESTDIR)/etc/logrotate.d install -m 644 yum.logrotate $(DESTDIR)/etc/logrotate.d/yum mkdir -p $(DESTDIR)/etc/rc.d/init.d install -m 755 yum-updatesd.init $(DESTDIR)/etc/rc.d/init.d/yum-updatesd mkdir -p $(DESTDIR)/etc/dbus-1/system.d/ install -m 755 yum-updatesd-dbus.conf $(DESTDIR)/etc/dbus-1/system.d/yum-updatesd.conf install -m 755 yum-updatesd.conf $(DESTDIR)/etc/yum/yum-updatesd.conf mkdir -p $(DESTDIR)/etc/bash_completion.d install -m 644 yum.bash $(DESTDIR)/etc/bash_completion.d mkdir -p $(DESTDIR)/etc/cron.daily mkdir -p $(DESTDIR)/etc/sysconfig/ install -D -m 755 0yum.cron $(DESTDIR)/etc/cron.daily/0yum.cron install -D -m 755 yum-cron $(DESTDIR)/etc/rc.d/init.d/yum-cron install -D -m 644 yum-daily.yum $(YUMETC)/yum-daily.yum install -D -m 644 yum-weekly.yum $(YUMETC)/yum-weekly.yum install -D -m 644 yum-cron.sysconf $(DESTDIR)/etc/sysconfig/yum-cron yum-3.4.3/etc/yum.pam0000664000076400007640000000043211602434452013411 0ustar jamesjames#%PAM-1.0 auth sufficient pam_rootok.so auth sufficient pam_timestamp.so auth required pam_stack.so service=system-auth session required pam_permit.so session optional pam_xauth.so session optional pam_timestamp.so account required pam_permit.so yum-3.4.3/etc/0yum.cron0000775000076400007640000001156711602434452013673 0ustar jamesjames#!/bin/bash # Only run if this flag file is set (by /etc/rc.d/init.d/yum-cron) if [ ! -f /var/lock/subsys/yum-cron ]; then exit 0 fi DAILYSCRIPT=/etc/yum/yum-daily.yum WEEKLYSCRIPT=/etc/yum/yum-weekly.yum LOCKDIR=/var/lock/yum-cron.lock LOCKFILE=$LOCKDIR/pidfile TSLOCK=$LOCKDIR/ts.lock # Grab config settings if [ -f /etc/sysconfig/yum-cron ]; then source /etc/sysconfig/yum-cron fi # set default for SYSTEMNAME [ -z "$SYSTEMNAME" ] && SYSTEMNAME=$(hostname) # Only run on certain days of the week dow=`date +%w` DAYS_OF_WEEK=${DAYS_OF_WEEK:-0123456} if [ "${DAYS_OF_WEEK/$dow/}" == "${DAYS_OF_WEEK}" ]; then exit 0 fi # if DOWNLOAD_ONLY is set then we force CHECK_ONLY too. # Gotta check before one can download! if [ "$DOWNLOAD_ONLY" == "yes" ]; then CHECK_ONLY=yes fi YUMTMP=$(mktemp /var/run/yum-cron.XXXXXX) touch $YUMTMP [ -x /sbin/restorecon ] && /sbin/restorecon $YUMTMP # Random wait function random_wait() { sleep $(( $RANDOM % ($RANDOMWAIT * 60) + 1 )) } # Note - the lockfile code doesn't try and use YUMTMP to email messages nicely. # Too many ways to die, this gets handled by normal cron error mailing. # Try mkdir for the lockfile, will test for and make it in one atomic action if mkdir $LOCKDIR 2>/dev/null; then # store the current process ID in there so we can check for staleness later echo "$$" >"${LOCKFILE}" # and clean up locks and tempfile if the script exits or is killed trap "{ rm -f $LOCKFILE $TSLOCK; rmdir $LOCKDIR 2>/dev/null; rm -f $YUMTMP; exit 255; }" INT TERM EXIT else # lock failed, check if process exists. First, if there's no PID file # in the lock directory, something bad has happened, we can't know the # process name, so clean up the old lockdir and restart if [ ! -f $LOCKFILE ]; then rmdir $LOCKDIR 2>/dev/null echo "yum-cron: no lock PID, clearing and restarting myself" >&2 exec $0 "$@" fi OTHERPID="$(cat "${LOCKFILE}")" # if cat wasn't able to read the file anymore, another instance probably is # about to remove the lock -- exit, we're *still* locked if [ $? != 0 ]; then echo "yum-cron: lock failed, PID ${OTHERPID} is active" >&2 exit 0 fi if ! kill -0 $OTHERPID &>/dev/null; then # lock is stale, remove it and restart echo "yum-cron: removing stale lock of nonexistant PID ${OTHERPID}" >&2 rm -rf "${LOCKDIR}" echo "yum-cron: restarting myself" >&2 exec $0 "$@" else # Remove stale (more than a day old) lockfiles find $LOCKDIR -type f -name 'pidfile' -amin +1440 -exec rm -rf $LOCKDIR \; # if it's still there, it wasn't too old, bail if [ -f $LOCKFILE ]; then # lock is valid and OTHERPID is active - exit, we're locked! echo "yum-cron: lock failed, PID ${OTHERPID} is active" >&2 exit 0 else # lock was invalid, restart echo "yum-cron: removing stale lock belonging to stale PID ${OTHERPID}" >&2 echo "yum-cron: restarting myself" >&2 exec $0 "$@" fi fi fi # Then check for updates and/or do them, as configured { # First, if this is CLEANDAY, do so CLEANDAY=${CLEANDAY:-0} if [ ! "${CLEANDAY/$dow/}" == "${CLEANDAY}" ]; then /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y shell $WEEKLYSCRIPT fi # Now continue to do the real work if [ "$CHECK_ONLY" == "yes" ]; then random_wait touch $TSLOCK /usr/bin/yum $YUM_PARAMETER -e 0 -d 0 -y check-update 1> /dev/null 2>&1 case $? in 1) exit 1;; 100) echo "New updates available for host `/bin/hostname`"; /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y -C check-update if [ "$DOWNLOAD_ONLY" == "yes" ]; then /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y --downloadonly update echo "Updates downloaded, use \"yum -C update\" manually to install them." fi ;; esac elif [ "$CHECK_FIRST" == "yes" ]; then # Don't run if we can't access the repos random_wait touch $TSLOCK /usr/bin/yum $YUM_PARAMETER -e 0 -d 0 check-update 2>&- case $? in 1) exit 1;; 100) /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y update yum /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y shell $DAILYSCRIPT ;; esac else random_wait touch $TSLOCK /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y update yum /usr/bin/yum $YUM_PARAMETER -e ${ERROR_LEVEL:-0} -d ${DEBUG_LEVEL:-0} -y shell $DAILYSCRIPT fi } >> $YUMTMP 2>&1 if [ ! -z "$MAILTO" ] && [ -x /bin/mail ]; then # if MAILTO is set, use mail command (ie better than standard mail with cron output) [ -s "$YUMTMP" ] && mail -s "System update: $SYSTEMNAME" $MAILTO < $YUMTMP else # default behavior is to use cron's internal mailing of output from cron-script cat $YUMTMP fi rm -f $YUMTMP exit 0 yum-3.4.3/etc/yum-cron0000775000076400007640000000355711602434452013612 0ustar jamesjames#!/bin/bash # # yum-cron This shell script enables the automatic use of YUM # # Author: Seth Vidal # # chkconfig: - 50 01 # # description: Enable daily run of yum, a program updater. # processname: yum-cron # config: /etc/yum/yum-daily.yum # # source function library . /etc/rc.d/init.d/functions test -f /etc/sysconfig/yum-cron && . /etc/sysconfig/yum-cron lockfile=/var/lock/subsys/yum-cron tslock=/var/lock/yum-cron.lock/ts.lock yumcronpid=/var/lock/yum-cron.lock/pidfile RETVAL=0 start() { echo -n $"Enabling nightly yum update: " touch "$lockfile" && success || failure RETVAL=$? echo } stop() { echo -n $"Disabling nightly yum update: " if [ -f "$yumcronpid" -a "$SERVICE_WAITS" = "yes" ]; then yum_done=0 if [ ! -f $tslock ]; then # No transaction yet in progress, just kill it kill `cat $yumcronpid > /dev/null 2>&1` > /dev/null 2>&1 yum_done=1 fi if [ $yum_done -eq 0 ]; then echo -n $"Waiting for yum " if [ -z "$SERVICE_WAIT_TIME" ]; then SERVICE_WAIT_TIME=300 fi start=`date +%s` end=`expr $start + $SERVICE_WAIT_TIME` while [ `date +%s` -le $end ] do sleep 5 if [ ! -f "$tslock" ]; then yum_done=1 break fi done if [ $yum_done -eq 1 ]; then echo -n " ok " else echo -n " failed " fi fi fi rm -f "$lockfile" && success || failure RETVAL=$? echo } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart|force-reload) restart ;; reload) ;; condrestart) [ -f "$lockfile" ] && restart ;; status) if [ -f $lockfile ]; then echo $"Nightly yum update is enabled." RETVAL=0 else echo $"Nightly yum update is disabled." RETVAL=3 fi ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" exit 1 esac exit $RETVAL yum-3.4.3/etc/yum.conf0000664000076400007640000000027611602434452013567 0ustar jamesjames[main] cachedir=/var/cache/yum keepcache=1 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum/repos.d yum-3.4.3/etc/yum-updatesd.conf0000664000076400007640000000075211602434452015375 0ustar jamesjames[main] # how often to check for new updates (in seconds) run_interval = 3600 # how often to allow checking on request (in seconds) updaterefresh = 600 # how to send notifications (valid: dbus, email, syslog) emit_via = dbus # should we listen via dbus to give out update information/check for # new updates dbus_listener = yes # automatically install updates do_update = no # automatically download updates do_download = no # automatically download deps of updates do_download_deps = no yum-3.4.3/etc/yum.console0000664000076400007640000000006411602434452014277 0ustar jamesjamesUSER=root PROGRAM=/usr/sbin/yum GUI=no SESSION=true yum-3.4.3/etc/yum-updatesd.init0000775000076400007640000000211611602434452015412 0ustar jamesjames#!/bin/bash # # yum This shell script enables the yum-updates daemon # # Author: Jeremy Katz # # chkconfig: 345 97 03 # # description: This is a daemon which periodically checks for updates \ # and can send notifications via mail, dbus or syslog. # processname: yum-updatesd # config: /etc/yum/yum-updatesd.conf # pidfile: /var/run/yum-updatesd.pid # # source function library . /etc/rc.d/init.d/functions RETVAL=0 start() { echo -n $"Starting yum-updatesd: " daemon +19 yum-updatesd RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/yum-updatesd } stop() { echo -n $"Stopping yum-updatesd: " killproc yum-updatesd echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/yum-updatesd } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart|force-reload|reload) restart ;; condrestart) [ -f /var/lock/subsys/yum-updatesd ] && restart ;; status) status yum-updatesd RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" exit 1 esac exit $RETVAL yum-3.4.3/etc/yum.logrotate0000664000076400007640000000014411602434452014634 0ustar jamesjames/var/log/yum.log { missingok notifempty size 30k yearly create 0600 root root } yum-3.4.3/COPYING0000664000076400007640000004307011602434452012365 0ustar jamesjames GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. yum-3.4.3/output.py0000775000076400007640000030006611602434452013250 0ustar jamesjames#!/usr/bin/python -t """This handles actual output from the cli""" # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University import sys import time import logging import types import gettext import pwd import rpm import re # For YumTerm from weakref import proxy as weakref from urlgrabber.progress import TextMeter import urlgrabber.progress from urlgrabber.grabber import URLGrabError from yum.misc import prco_tuple_to_string from yum.i18n import to_str, to_utf8, to_unicode import yum.misc from rpmUtils.miscutils import checkSignals, formatRequire from yum.constants import * from yum import logginglevels, _, P_ from yum.rpmtrans import RPMBaseCallback from yum.packageSack import packagesNewestByNameArch import yum.packages import yum.history from yum.i18n import utf8_width, utf8_width_fill, utf8_text_fill def _term_width(): """ Simple terminal width, limit to 20 chars. and make 0 == 80. """ if not hasattr(urlgrabber.progress, 'terminal_width_cached'): return 80 ret = urlgrabber.progress.terminal_width_cached() if ret == 0: return 80 if ret < 20: return 20 return ret class YumTextMeter(TextMeter): """ Text progress bar output. """ def update(self, amount_read, now=None): checkSignals() TextMeter.update(self, amount_read, now) class YumTerm: """some terminal "UI" helpers based on curses""" # From initial search for "terminfo and python" got: # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/475116 # ...it's probably not copyrightable, but if so ASPN says: # # Except where otherwise noted, recipes in the Python Cookbook are # published under the Python license. __enabled = True if hasattr(urlgrabber.progress, 'terminal_width_cached'): columns = property(lambda self: _term_width()) __cap_names = { 'underline' : 'smul', 'reverse' : 'rev', 'normal' : 'sgr0', } __colors = { 'black' : 0, 'blue' : 1, 'green' : 2, 'cyan' : 3, 'red' : 4, 'magenta' : 5, 'yellow' : 6, 'white' : 7 } __ansi_colors = { 'black' : 0, 'red' : 1, 'green' : 2, 'yellow' : 3, 'blue' : 4, 'magenta' : 5, 'cyan' : 6, 'white' : 7 } __ansi_forced_MODE = { 'bold' : '\x1b[1m', 'blink' : '\x1b[5m', 'dim' : '', 'reverse' : '\x1b[7m', 'underline' : '\x1b[4m', 'normal' : '\x1b(B\x1b[m' } __ansi_forced_FG_COLOR = { 'black' : '\x1b[30m', 'red' : '\x1b[31m', 'green' : '\x1b[32m', 'yellow' : '\x1b[33m', 'blue' : '\x1b[34m', 'magenta' : '\x1b[35m', 'cyan' : '\x1b[36m', 'white' : '\x1b[37m' } __ansi_forced_BG_COLOR = { 'black' : '\x1b[40m', 'red' : '\x1b[41m', 'green' : '\x1b[42m', 'yellow' : '\x1b[43m', 'blue' : '\x1b[44m', 'magenta' : '\x1b[45m', 'cyan' : '\x1b[46m', 'white' : '\x1b[47m' } def __forced_init(self): self.MODE = self.__ansi_forced_MODE self.FG_COLOR = self.__ansi_forced_FG_COLOR self.BG_COLOR = self.__ansi_forced_BG_COLOR def reinit(self, term_stream=None, color='auto'): self.__enabled = True if not hasattr(urlgrabber.progress, 'terminal_width_cached'): self.columns = 80 self.lines = 24 if color == 'always': self.__forced_init() return # Output modes: self.MODE = { 'bold' : '', 'blink' : '', 'dim' : '', 'reverse' : '', 'underline' : '', 'normal' : '' } # Colours self.FG_COLOR = { 'black' : '', 'blue' : '', 'green' : '', 'cyan' : '', 'red' : '', 'magenta' : '', 'yellow' : '', 'white' : '' } self.BG_COLOR = { 'black' : '', 'blue' : '', 'green' : '', 'cyan' : '', 'red' : '', 'magenta' : '', 'yellow' : '', 'white' : '' } if color == 'never': self.__enabled = False return assert color == 'auto' # Curses isn't available on all platforms try: import curses except: self.__enabled = False return # If the stream isn't a tty, then assume it has no capabilities. if not term_stream: term_stream = sys.stdout if not term_stream.isatty(): self.__enabled = False return # Check the terminal type. If we fail, then assume that the # terminal has no capabilities. try: curses.setupterm(fd=term_stream.fileno()) except: self.__enabled = False return self._ctigetstr = curses.tigetstr if not hasattr(urlgrabber.progress, 'terminal_width_cached'): self.columns = curses.tigetnum('cols') self.lines = curses.tigetnum('lines') # Look up string capabilities. for cap_name in self.MODE: mode = cap_name if cap_name in self.__cap_names: cap_name = self.__cap_names[cap_name] self.MODE[mode] = self._tigetstr(cap_name) or '' # Colors set_fg = self._tigetstr('setf') if set_fg: for (color, val) in self.__colors.items(): self.FG_COLOR[color] = curses.tparm(set_fg, val) or '' set_fg_ansi = self._tigetstr('setaf') if set_fg_ansi: for (color, val) in self.__ansi_colors.items(): self.FG_COLOR[color] = curses.tparm(set_fg_ansi, val) or '' set_bg = self._tigetstr('setb') if set_bg: for (color, val) in self.__colors.items(): self.BG_COLOR[color] = curses.tparm(set_bg, val) or '' set_bg_ansi = self._tigetstr('setab') if set_bg_ansi: for (color, val) in self.__ansi_colors.items(): self.BG_COLOR[color] = curses.tparm(set_bg_ansi, val) or '' def __init__(self, term_stream=None, color='auto'): self.reinit(term_stream, color) def _tigetstr(self, cap_name): # String capabilities can include "delays" of the form "$<2>". # For any modern terminal, we should be able to just ignore # these, so strip them out. cap = self._ctigetstr(cap_name) or '' return re.sub(r'\$<\d+>[/*]?', '', cap) def sub(self, haystack, beg, end, needles, escape=None, ignore_case=False): if not self.__enabled: return haystack if not escape: escape = re.escape render = lambda match: beg + match.group() + end for needle in needles: pat = escape(needle) if ignore_case: pat = re.template(pat, re.I) haystack = re.sub(pat, render, haystack) return haystack def sub_norm(self, haystack, beg, needles, **kwds): return self.sub(haystack, beg, self.MODE['normal'], needles, **kwds) def sub_mode(self, haystack, mode, needles, **kwds): return self.sub_norm(haystack, self.MODE[mode], needles, **kwds) def sub_bold(self, haystack, needles, **kwds): return self.sub_mode(haystack, 'bold', needles, **kwds) def sub_fg(self, haystack, color, needles, **kwds): return self.sub_norm(haystack, self.FG_COLOR[color], needles, **kwds) def sub_bg(self, haystack, color, needles, **kwds): return self.sub_norm(haystack, self.BG_COLOR[color], needles, **kwds) class YumOutput: """ Main output class for the yum command line. """ def __init__(self): self.logger = logging.getLogger("yum.cli") self.verbose_logger = logging.getLogger("yum.verbose.cli") if hasattr(rpm, "expandMacro"): self.i18ndomains = rpm.expandMacro("%_i18ndomains").split(":") else: self.i18ndomains = ["redhat-dist"] self.term = YumTerm() self._last_interrupt = None def printtime(self): months = [_('Jan'), _('Feb'), _('Mar'), _('Apr'), _('May'), _('Jun'), _('Jul'), _('Aug'), _('Sep'), _('Oct'), _('Nov'), _('Dec')] now = time.localtime(time.time()) ret = months[int(time.strftime('%m', now)) - 1] + \ time.strftime(' %d %T ', now) return ret def failureReport(self, errobj): """failure output for failovers from urlgrabber""" self.logger.error('%s: %s', errobj.url, errobj.exception) self.logger.error(_('Trying other mirror.')) raise errobj.exception def simpleProgressBar(self, current, total, name=None): progressbar(current, total, name) def _highlight(self, highlight): hibeg = '' hiend = '' if not highlight: pass elif not isinstance(highlight, basestring) or highlight == 'bold': hibeg = self.term.MODE['bold'] elif highlight == 'normal': pass # Minor opt. else: # Turn a string into a specific output: colour, bold, etc. for high in highlight.replace(',', ' ').split(): if False: pass elif high == 'normal': hibeg = '' elif high in self.term.MODE: hibeg += self.term.MODE[high] elif high in self.term.FG_COLOR: hibeg += self.term.FG_COLOR[high] elif (high.startswith('fg:') and high[3:] in self.term.FG_COLOR): hibeg += self.term.FG_COLOR[high[3:]] elif (high.startswith('bg:') and high[3:] in self.term.BG_COLOR): hibeg += self.term.BG_COLOR[high[3:]] if hibeg: hiend = self.term.MODE['normal'] return (hibeg, hiend) def _sub_highlight(self, haystack, highlight, needles, **kwds): hibeg, hiend = self._highlight(highlight) return self.term.sub(haystack, hibeg, hiend, needles, **kwds) @staticmethod def _calc_columns_spaces_helps(current, data_tups, left): """ Spaces left on the current field will help how many pkgs? """ ret = 0 for tup in data_tups: if left < (tup[0] - current): break ret += tup[1] return ret def calcColumns(self, data, columns=None, remainder_column=0, total_width=None, indent=''): """ Dynamically calculate the width of the fields in the data, data is of the format [column-number][field_length] = rows. """ if total_width is None: total_width = self.term.columns cols = len(data) # Convert the data to ascending list of tuples, (field_length, pkgs) pdata = data data = [None] * cols # Don't modify the passed in data 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 - 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 val = 0 for d in xrange(0, cols): thelps = self._calc_columns_spaces_helps(columns[d], data[d], total_width) if not thelps: continue # We prefer to overflow: the last column, and then earlier # columns. This is so that in the best case (just overflow the # last) ... grep still "works", and then we make it prettier. if helps and (d == (cols - 1)) and (thelps / 2) < helps: continue if thelps < helps: continue helps = thelps val = d # If we found a column to expand, move up to the next level with # 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 overflowed_columns = 0 for d in xrange(0, cols): if not data[d]: continue overflowed_columns += 1 if overflowed_columns: # Split the remaining spaces among each overflowed column # equally norm = total_width / overflowed_columns for d in xrange(0, cols): if not data[d]: continue columns[d] += norm total_width -= norm # Split the remaining spaces among each column equally, except the # last one. And put the rest into the remainder column cols -= 1 norm = total_width / cols for d in xrange(0, cols): columns[d] += norm columns[remainder_column] += total_width - (cols * norm) total_width = 0 return columns @staticmethod def _fmt_column_align_width(width): if width < 0: return (u"-", -width) return (u"", width) def _col_data(self, col_data): assert len(col_data) == 2 or len(col_data) == 3 if len(col_data) == 2: (val, width) = col_data hibeg = hiend = '' if len(col_data) == 3: (val, width, highlight) = col_data (hibeg, hiend) = self._highlight(highlight) return (val, width, hibeg, hiend) 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 = [] for col_data in columns[:-1]: (val, width, hibeg, hiend) = self._col_data(col_data) if not width: # Don't count this column, invisible text msg += u"%s" data.append(val) continue (align, width) = self._fmt_column_align_width(width) 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]) total_width += width total_width += 1 (val, width, hibeg, hiend) = self._col_data(columns[-1]) (align, width) = self._fmt_column_align_width(width) val = utf8_width_fill(val, width, left=(align == u'-'), prefix=hibeg, suffix=hiend) msg += u"%%s%s" % end data.append(val) return msg % tuple(data) def simpleList(self, pkg, ui_overflow=False, indent='', highlight=False, columns=None): """ Simple to use function to print a pkg as a line. """ if columns is None: columns = (-40, -22, -16) # Old default ver = pkg.printVer() na = '%s%s.%s' % (indent, pkg.name, pkg.arch) hi_cols = [highlight, 'normal', 'normal'] rid = pkg.ui_from_repo columns = zip((na, ver, rid), columns, hi_cols) print self.fmtColumns(columns, text_width=len) def simpleEnvraList(self, pkg, ui_overflow=False, indent='', highlight=False, columns=None): """ Simple to use function to print a pkg as a line, with the pkg itself in envra format so it can be pased to list/install/etc. """ if columns is None: columns = (-63, -16) # Old default envra = '%s%s' % (indent, str(pkg)) hi_cols = [highlight, 'normal', 'normal'] rid = pkg.ui_from_repo columns = zip((envra, rid), columns, hi_cols) print self.fmtColumns(columns, text_width=len) def fmtKeyValFill(self, key, val): """ Return a key value pair in the common two column output format. """ val = to_str(val) keylen = utf8_width(key) cols = self.term.columns nxt = ' ' * (keylen - 2) + ': ' ret = utf8_text_fill(val, width=cols, initial_indent=key, subsequent_indent=nxt) if ret.count("\n") > 1 and keylen > (cols / 3): # If it's big, redo it again with a smaller subsequent off ret = utf8_text_fill(val, width=cols, initial_indent=key, subsequent_indent=' ...: ') return ret def fmtSection(self, name, fill='='): name = to_str(name) cols = self.term.columns - 2 name_len = utf8_width(name) if name_len >= (cols - 4): beg = end = fill * 2 else: beg = fill * ((cols - name_len) / 2) end = fill * (cols - name_len - len(beg)) return "%s %s %s" % (beg, name, end) def _enc(self, s): """Get the translated version from specspo and ensure that it's actually encoded in UTF-8.""" s = to_utf8(s) if len(s) > 0: for d in self.i18ndomains: t = gettext.dgettext(d, s) if t != s: s = t break return to_unicode(s) 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) 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) if pkg.repoid == 'installed' and 'from_repo' in pkg.yumdb_info: 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) if hasattr(pkg, 'installtime'): 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 "" def updatesObsoletesList(self, uotup, changetype, columns=None): """takes an updates or obsoletes tuple of pkgobjects and returns a simple printed string of the output and a string explaining the relationship between the tuple members""" (changePkg, instPkg) = uotup if columns is not None: # New style, output all info. for both old/new with old indented chi = self.conf.color_update_remote if changePkg.repo.id != 'installed' and changePkg.verifyLocalPkg(): chi = self.conf.color_update_local self.simpleList(changePkg, columns=columns, highlight=chi) self.simpleList(instPkg, columns=columns, indent=' ' * 4, highlight=self.conf.color_update_installed) return # Old style c_compact = changePkg.compactPrint() i_compact = '%s.%s' % (instPkg.name, instPkg.arch) c_repo = changePkg.repoid print '%-35.35s [%.12s] %.10s %-20.20s' % (c_compact, c_repo, changetype, i_compact) def listPkgs(self, lst, description, outputType, highlight_na={}, columns=None, highlight_modes={}): """outputs based on whatever outputType is. Current options: 'list' - simple pkg list 'info' - similar to rpm -qi output ...also highlight_na can be passed, and we'll highlight pkgs with (names, arch) in that set.""" if outputType in ['list', 'info']: thingslisted = 0 if len(lst) > 0: thingslisted = 1 print '%s' % description for pkg in sorted(lst): key = (pkg.name, pkg.arch) highlight = False if False: pass elif key not in highlight_na: highlight = highlight_modes.get('not in', 'normal') elif pkg.verEQ(highlight_na[key]): highlight = highlight_modes.get('=', 'normal') elif pkg.verLT(highlight_na[key]): highlight = highlight_modes.get('>', 'bold') else: highlight = highlight_modes.get('<', 'normal') if outputType == 'list': self.simpleList(pkg, ui_overflow=True, highlight=highlight, columns=columns) elif outputType == 'info': self.infoOutput(pkg, highlight=highlight) else: pass if thingslisted == 0: return 1, ['No Packages to list'] return 0, [] def userconfirm(self): """gets a yes or no from the user, defaults to No""" yui = (to_unicode(_('y')), to_unicode(_('yes'))) nui = (to_unicode(_('n')), to_unicode(_('no'))) aui = (yui[0], yui[1], nui[0], nui[1]) while True: try: choice = raw_input(_('Is this ok [y/N]: ')) except UnicodeEncodeError: raise except UnicodeDecodeError: raise except: choice = '' choice = to_unicode(choice) choice = choice.lower() if len(choice) == 0 or choice in aui: break # If the enlish one letter names don't mix, allow them too if u'y' not in aui and u'y' == choice: choice = yui[0] break if u'n' not in aui and u'n' == choice: break if len(choice) == 0 or choice not in yui: return False else: return True def _cli_confirm_gpg_key_import(self, keydict): # FIXME what should we be printing here? return self.userconfirm() def _group_names2aipkgs(self, pkg_names): """ Convert pkg_names to installed pkgs or available pkgs, return value is a dict on pkg.name returning (apkg, ipkg). """ ipkgs = self.rpmdb.searchNames(pkg_names) apkgs = self.pkgSack.searchNames(pkg_names) apkgs = packagesNewestByNameArch(apkgs) # This is somewhat similar to doPackageLists() pkgs = {} for pkg in ipkgs: pkgs[(pkg.name, pkg.arch)] = (None, pkg) for pkg in apkgs: key = (pkg.name, pkg.arch) if key not in pkgs: pkgs[(pkg.name, pkg.arch)] = (pkg, None) elif pkg.verGT(pkgs[key][1]): pkgs[(pkg.name, pkg.arch)] = (pkg, pkgs[key][1]) # Convert (pkg.name, pkg.arch) to pkg.name dict ret = {} for (apkg, ipkg) in pkgs.itervalues(): pkg = apkg or ipkg ret.setdefault(pkg.name, []).append((apkg, ipkg)) return ret def _calcDataPkgColumns(self, data, pkg_names, pkg_names2pkgs, indent=' '): for item in pkg_names: if item not in pkg_names2pkgs: continue for (apkg, ipkg) in pkg_names2pkgs[item]: pkg = ipkg or apkg envra = utf8_width(str(pkg)) + utf8_width(indent) rid = len(pkg.ui_from_repo) for (d, v) in (('envra', envra), ('rid', rid)): data[d].setdefault(v, 0) data[d][v] += 1 def _displayPkgsFromNames(self, pkg_names, verbose, pkg_names2pkgs, indent=' ', columns=None): if not verbose: for item in sorted(pkg_names): print '%s%s' % (indent, item) else: for item in sorted(pkg_names): if item not in pkg_names2pkgs: print '%s%s' % (indent, item) continue for (apkg, ipkg) in sorted(pkg_names2pkgs[item], key=lambda x: x[1] or x[0]): if ipkg and apkg: highlight = self.conf.color_list_installed_older elif apkg: highlight = self.conf.color_list_available_install else: highlight = False self.simpleEnvraList(ipkg or apkg, ui_overflow=True, indent=indent, highlight=highlight, columns=columns) def displayPkgsInGroups(self, group): print _('\nGroup: %s') % group.ui_name verb = self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3) if verb: print _(' Group-Id: %s') % to_unicode(group.groupid) pkg_names2pkgs = None if verb: pkg_names2pkgs = self._group_names2aipkgs(group.packages) if group.ui_description: print _(' Description: %s') % to_unicode(group.ui_description) if group.langonly: print _(' Language: %s') % group.langonly sections = ((_(' Mandatory Packages:'), group.mandatory_packages), (_(' Default Packages:'), group.default_packages), (_(' Optional Packages:'), group.optional_packages), (_(' Conditional Packages:'), group.conditional_packages)) columns = None if verb: data = {'envra' : {}, 'rid' : {}} for (section_name, pkg_names) in sections: self._calcDataPkgColumns(data, pkg_names, pkg_names2pkgs) data = [data['envra'], data['rid']] columns = self.calcColumns(data) columns = (-columns[0], -columns[1]) for (section_name, pkg_names) in sections: if len(pkg_names) > 0: print section_name self._displayPkgsFromNames(pkg_names, verb, pkg_names2pkgs, columns=columns) def depListOutput(self, results): """take a list of findDeps results and 'pretty print' the output""" verb = self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3) for pkg in sorted(results): print _("package: %s") % pkg.compactPrint() if len(results[pkg]) == 0: print _(" No dependencies for this package") continue for req in sorted(results[pkg]): reqlist = results[pkg][req] print _(" dependency: %s") % prco_tuple_to_string(req) if not reqlist: print _(" Unsatisfied dependency") continue seen = {} for po in reversed(sorted(reqlist)): key = (po.name, po.arch) if not verb and key in seen: continue seen[key] = po print " provider: %s" % po.compactPrint() def format_number(self, number, SI=0, space=' '): """Turn numbers into human-readable metric-like numbers""" symbols = [ ' ', # (none) 'k', # kilo 'M', # mega 'G', # giga 'T', # tera 'P', # peta 'E', # exa 'Z', # zetta 'Y'] # yotta if SI: step = 1000.0 else: step = 1024.0 thresh = 999 depth = 0 max_depth = len(symbols) - 1 # we want numbers between 0 and thresh, but don't exceed the length # of our list. In that event, the formatting will be screwed up, # but it'll still show the right number. while number > thresh and depth < max_depth: depth = depth + 1 number = number / step if type(number) == type(1) or type(number) == type(1L): format = '%i%s%s' elif number < 9.95: # must use 9.95 for proper sizing. For example, 9.99 will be # rounded to 10.0 with the .1f format string (which is too long) format = '%.1f%s%s' else: format = '%.0f%s%s' return(format % (float(number or 0), space, symbols[depth])) @staticmethod def format_time(seconds, use_hours=0): return urlgrabber.progress.format_time(seconds, use_hours) def matchcallback(self, po, values, matchfor=None, verbose=None, highlight=None): """ Output search/provides type callback matches. po is the pkg object, values are the things in the po that we've matched. If matchfor is passed, all the strings in that list will be highlighted within the output. verbose overrides logginglevel, if passed. """ if self.conf.showdupesfromrepos: msg = '%s : ' % po else: msg = '%s.%s : ' % (po.name, po.arch) msg = self.fmtKeyValFill(msg, self._enc(po.summary)) if matchfor: if highlight is None: highlight = self.conf.color_search_match msg = self._sub_highlight(msg, highlight, matchfor,ignore_case=True) print msg if verbose is None: verbose = self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3) if not verbose: return print _("Repo : %s") % po.ui_from_repo done = False for item in yum.misc.unique(values): item = to_utf8(item) if to_utf8(po.name) == item or to_utf8(po.summary) == item: continue # Skip double name/summary printing if not done: print _('Matched from:') done = True can_overflow = True if False: pass elif to_utf8(po.description) == item: key = _("Description : ") item = self._enc(item) elif to_utf8(po.url) == item: key = _("URL : %s") can_overflow = False elif to_utf8(po.license) == item: key = _("License : %s") can_overflow = False elif item.startswith("/"): key = _("Filename : %s") item = self._enc(item) can_overflow = False else: key = _("Other : ") if matchfor: item = self._sub_highlight(item, highlight, matchfor, ignore_case=True) if can_overflow: print self.fmtKeyValFill(key, to_unicode(item)) else: print key % item print '\n\n' def matchcallback_verbose(self, po, values, matchfor=None): return self.matchcallback(po, values, matchfor, verbose=True) def reportDownloadSize(self, packages, installonly=False): """Report the total download size for a set of packages""" totsize = 0 locsize = 0 insize = 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 try: if pkg.verifyLocalPkg(): locsize += size except: pass if not installonly: continue try: size = int(pkg.installedsize) except: pass insize += size except: error = True self.logger.error(_('There was an error calculating total download size')) break if (not error): if locsize: self.verbose_logger.log(logginglevels.INFO_1, _("Total size: %s"), self.format_number(totsize)) if locsize != totsize: self.verbose_logger.log(logginglevels.INFO_1, _("Total download size: %s"), self.format_number(totsize - locsize)) if installonly: 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.""" self.tsInfo.makelists(True, True) pkglist_lines = [] data = {'n' : {}, 'v' : {}, 'r' : {}} a_wid = 0 # Arch can't get "that big" ... so always use the max. def _add_line(lines, data, a_wid, po, obsoletes=[]): (n,a,e,v,r) = po.pkgtup evr = po.printVer() repoid = po.ui_from_repo pkgsize = float(po.size) size = self.format_number(pkgsize) if a is None: # gpgkeys are weird a = 'noarch' # none, partial, full? if po.repo.id == 'installed': hi = self.conf.color_update_installed elif po.verifyLocalPkg(): hi = self.conf.color_update_local else: hi = self.conf.color_update_remote lines.append((n, a, evr, repoid, size, obsoletes, hi)) # Create a dict of field_length => number of packages, for # each field. for (d, v) in (("n",len(n)), ("v",len(evr)), ("r",len(repoid))): data[d].setdefault(v, 0) data[d][v] += 1 if a_wid < len(a): # max() is only in 2.5.z a_wid = len(a) return a_wid for (action, pkglist) in [(_('Installing'), self.tsInfo.installed), (_('Updating'), self.tsInfo.updated), (_('Removing'), self.tsInfo.removed), (_('Reinstalling'), self.tsInfo.reinstalled), (_('Downgrading'), self.tsInfo.downgraded), (_('Installing for dependencies'), self.tsInfo.depinstalled), (_('Updating for dependencies'), self.tsInfo.depupdated), (_('Removing for dependencies'), self.tsInfo.depremoved)]: lines = [] for txmbr in pkglist: a_wid = _add_line(lines, data, a_wid, txmbr.po, txmbr.obsoletes) pkglist_lines.append((action, lines)) for (action, pkglist) in [(_('Skipped (dependency problems)'), self.skipped_packages), (_('Not installed'), self._not_found_i.values()), (_('Not available'), self._not_found_a.values())]: lines = [] for po in pkglist: a_wid = _add_line(lines, data, a_wid, po) pkglist_lines.append((action, lines)) if not data['n']: return u'' else: data = [data['n'], {}, data['v'], data['r'], {}] columns = [1, a_wid, 1, 1, 5] columns = self.calcColumns(data, indent=" ", columns=columns, remainder_column=2) (n_wid, a_wid, v_wid, r_wid, s_wid) = columns assert s_wid == 5 out = [u""" %s %s %s """ % ('=' * self.term.columns, self.fmtColumns(((_('Package'), -n_wid), (_('Arch'), -a_wid), (_('Version'), -v_wid), (_('Repository'), -r_wid), (_('Size'), s_wid)), u" "), '=' * self.term.columns)] for (action, lines) in pkglist_lines: if lines: totalmsg = u"%s:\n" % action for (n, a, evr, repoid, size, obsoletes, hi) in lines: columns = ((n, -n_wid, hi), (a, -a_wid), (evr, -v_wid), (repoid, -r_wid), (size, s_wid)) msg = self.fmtColumns(columns, u" ", u"\n") hibeg, hiend = self._highlight(self.conf.color_update_installed) for obspo in sorted(obsoletes): appended = _(' replacing %s%s%s.%s %s\n') appended %= (hibeg, obspo.name, hiend, obspo.arch, obspo.printVer()) msg = msg+appended totalmsg = totalmsg + msg if lines: out.append(totalmsg) out.append(_(""" Transaction Summary %s """) % ('=' * self.term.columns)) for action, count in ( (_('Install'), len(self.tsInfo.installed) + len(self.tsInfo.depinstalled)), (_('Upgrade'), len(self.tsInfo.updated) + len(self.tsInfo.depupdated)), (_('Remove'), len(self.tsInfo.removed) + len(self.tsInfo.depremoved)), (_('Reinstall'), len(self.tsInfo.reinstalled)), (_('Downgrade'), len(self.tsInfo.downgraded)), ): if count: out.append('%-9s %5d %s\n' % ( action, count, P_('Package', 'Packages', count), )) return ''.join(out) def postTransactionOutput(self): out = '' self.tsInfo.makelists() # Works a bit like calcColumns, but we never overflow a column we just # have a dynamic number of columns. def _fits_in_cols(msgs, num): """ Work out how many columns we can use to display stuff, in the post trans output. """ if len(msgs) < num: return [] left = self.term.columns - ((num - 1) + 2) if left <= 0: return [] col_lens = [0] * num col = 0 for msg in msgs: if len(msg) > col_lens[col]: diff = (len(msg) - col_lens[col]) if left <= diff: return [] left -= diff col_lens[col] = len(msg) col += 1 col %= len(col_lens) for col in range(len(col_lens)): col_lens[col] += left / num col_lens[col] *= -1 return col_lens for (action, pkglist) in [(_('Removed'), self.tsInfo.removed), (_('Dependency Removed'), self.tsInfo.depremoved), (_('Installed'), self.tsInfo.installed), (_('Dependency Installed'), self.tsInfo.depinstalled), (_('Updated'), self.tsInfo.updated), (_('Dependency Updated'), self.tsInfo.depupdated), (_('Skipped (dependency problems)'), self.skipped_packages), (_('Replaced'), self.tsInfo.obsoleted), (_('Failed'), self.tsInfo.failed)]: msgs = [] if len(pkglist) > 0: out += '\n%s:\n' % action for txmbr in pkglist: (n,a,e,v,r) = txmbr.pkgtup msg = "%s.%s %s:%s-%s" % (n,a,e,v,r) msgs.append(msg) for num in (8, 7, 6, 5, 4, 3, 2): cols = _fits_in_cols(msgs, num) if cols: break if not cols: cols = [-(self.term.columns - 2)] while msgs: current_msgs = msgs[:len(cols)] out += ' ' out += self.fmtColumns(zip(current_msgs, cols), end=u'\n') msgs = msgs[len(cols):] return out def setupProgressCallbacks(self): """sets up the progress callbacks and various output bars based on debug level""" # if we're below 2 on the debug level we don't need to be outputting # 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(): progressbar = None callback = None else: progressbar = YumTextMeter(fo=sys.stdout) callback = CacheProgressCallback() # setup our failure report for failover freport = (self.failureReport,(),{}) failure_callback = freport # setup callback for CTRL-C's 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 def setupProgessCallbacks(self): # api purposes only to protect the typo self.setupProgressCallbacks() def setupKeyImportCallbacks(self): confirm_func = self._cli_confirm_gpg_key_import gpg_import_func = self.getKeyForRepo gpgca_import_func = self.getCAKeyForRepo if hasattr(self, 'prerepoconf'): self.prerepoconf.confirm_func = confirm_func self.prerepoconf.gpg_import_func = gpg_import_func self.prerepoconf.gpgca_import_func = gpgca_import_func else: self.repos.confirm_func = confirm_func self.repos.gpg_import_func = gpg_import_func self.repos.gpgca_import_func = gpgca_import_func def interrupt_callback(self, cbobj): '''Handle CTRL-C's during downloads If a CTRL-C occurs a URLGrabError will be raised to push the download onto the next mirror. If two CTRL-C's occur in quick succession then yum will exit. @param cbobj: urlgrabber callback obj ''' delta_exit_chk = 2.0 # Delta between C-c's so we treat as exit delta_exit_str = _("two") # Human readable version of above now = time.time() if not self._last_interrupt: hibeg = self.term.MODE['bold'] hiend = self.term.MODE['normal'] # 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. msg = _(""" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds to exit. """) % (hibeg, hiend, hibeg, delta_exit_str, hiend) self.verbose_logger.log(logginglevels.INFO_2, msg) elif now - self._last_interrupt < delta_exit_chk: # Two quick CTRL-C's, quit raise KeyboardInterrupt # Go to next mirror self._last_interrupt = now raise URLGrabError(15, _('user interrupt')) def download_callback_total_cb(self, remote_pkgs, remote_size, download_start_timestamp): if len(remote_pkgs) <= 1: return if not hasattr(urlgrabber.progress, 'TerminalLine'): return tl = urlgrabber.progress.TerminalLine(8) self.verbose_logger.log(logginglevels.INFO_2, "-" * tl.rest()) dl_time = time.time() - download_start_timestamp if dl_time <= 0: # This stops divide by zero, among other problems dl_time = 0.01 ui_size = tl.add(' | %5sB' % self.format_number(remote_size)) ui_time = tl.add(' %9s' % self.format_time(dl_time)) ui_end = tl.add(' ' * 5) ui_bs = tl.add(' %5sB/s' % self.format_number(remote_size / dl_time)) msg = "%s%s%s%s%s" % (utf8_width_fill(_("Total"), tl.rest(), tl.rest()), ui_bs, ui_size, ui_time, ui_end) self.verbose_logger.log(logginglevels.INFO_2, msg) def _history_uiactions(self, hpkgs): actions = set() count = 0 for hpkg in hpkgs: st = hpkg.state if st == 'True-Install': st = 'Install' if st == 'Dep-Install': # Mask these at the higher levels st = 'Install' if st == 'Obsoleted': # This is just a UI tweak, as we can't have # just one but we need to count them all. st = 'Obsoleting' if st in ('Install', 'Update', 'Erase', 'Reinstall', 'Downgrade', 'Obsoleting'): actions.add(st) count += 1 assert len(actions) <= 6 if len(actions) > 1: large2small = {'Install' : _('I'), 'Obsoleting' : _('O'), 'Erase' : _('E'), 'Reinstall' : _('R'), 'Downgrade' : _('D'), 'Update' : _('U'), } return count, ", ".join([large2small[x] for x in sorted(actions)]) # So empty transactions work, although that "shouldn't" really happen return count, "".join(list(actions)) def _pwd_ui_username(self, uid, limit=None): if type(uid) == type([]): return [self._pwd_ui_username(u, limit) for u in uid] # 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 = _("") 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 = _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>" % (_safe_split_0(fullname), user.pw_name) if len(name) > limit: name = "<%s>" % user.pw_name return to_unicode(name) except KeyError: return to_unicode(str(uid)) @staticmethod def _historyRangeRTIDs(old, tid): ''' Convert a user "TID" string of 2..4 into: (2, 4). ''' def str2int(x): try: if x == 'last' or x.startswith('last-'): tid = old.tid if x.startswith('last-'): off = int(x[len('last-'):]) if off <= 0: int("z") tid -= off return tid return int(x) except ValueError: return None if '..' not in tid: return None btid, etid = tid.split('..', 2) btid = str2int(btid) if btid > old.tid: return None elif btid <= 0: return None etid = str2int(etid) if etid > old.tid: return None if btid is None or etid is None: return None # Have a range ... do a "merged" transaction. if btid > etid: btid, etid = etid, btid return (btid, etid) def _historyRangeTIDs(self, rtids): ''' Convert a list of ranged tid typles into all the tids needed, Eg. [(2,4), (6,8)] == [2, 3, 4, 6, 7, 8]. ''' tids = set() last_end = -1 # This just makes displaying it easier... for mtid in sorted(rtids): if mtid[0] < last_end: self.logger.warn(_('Skipping merged transaction %d to %d, as it overlaps' % (mtid[0], mtid[1]))) continue # Don't do overlapping last_end = mtid[1] for num in range(mtid[0], mtid[1] + 1): tids.add(num) return tids def _history_list_transactions(self, extcmds): old = self.history.last() if old is None: self.logger.critical(_('No transactions')) return None, None tids = set() pats = [] usertids = extcmds[1:] printall = False if usertids: printall = True if usertids[0] == 'all': usertids.pop(0) for tid in usertids: try: int(tid) tids.add(tid) except ValueError: rtid = self._historyRangeRTIDs(old, tid) if rtid: tids.update(self._historyRangeTIDs([rtid])) continue pats.append(tid) if pats: tids.update(self.history.search(pats)) if not tids and usertids: self.logger.critical(_('Bad transaction IDs, or package(s), given')) return None, None return tids, printall def historyListCmd(self, extcmds): """ Shows the user a list of data about the history. """ tids, printall = self._history_list_transactions(extcmds) if tids is None: return 1, ['Failed history list'] limit = 20 if printall: limit = None old_tids = self.history.old(tids, limit=limit) done = 0 if self.conf.history_list_view == 'users': uids = [1,2] elif self.conf.history_list_view == 'commands': uids = [1] else: assert self.conf.history_list_view == 'single-user-commands' uids = set() blanks = 0 for old in old_tids: if not printall and done >= limit: break done += 1 if old.cmdline is None: blanks += 1 uids.add(old.loginuid) if len(uids) == 1 and blanks > (done / 2): uids.add('blah') fmt = "%s | %s | %s | %s | %s" if len(uids) == 1: name = _("Command line") else: name = _("Login user") print fmt % (utf8_width_fill(_("ID"), 6, 6), utf8_width_fill(name, 24, 24), utf8_width_fill(_("Date and time"), 16, 16), utf8_width_fill(_("Action(s)"), 14, 14), utf8_width_fill(_("Altered"), 7, 7)) print "-" * 79 fmt = "%6u | %s | %-16.16s | %s | %4u" done = 0 for old in old_tids: if not printall and done >= limit: break done += 1 if len(uids) == 1: name = old.cmdline or '' else: name = self._pwd_ui_username(old.loginuid, 24) tm = time.strftime("%Y-%m-%d %H:%M", time.localtime(old.beg_timestamp)) num, uiacts = self._history_uiactions(old.trans_data) name = utf8_width_fill(name, 24, 24) uiacts = utf8_width_fill(uiacts, 14, 14) rmark = lmark = ' ' if old.return_code is None: 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: lmark = '>' print fmt % (old.tid, name, tm, uiacts, num), "%s%s" % (lmark,rmark) lastdbv = self.history.last() if lastdbv is None: self._rpmdb_warn_checks(warn=False) else: # If this is the last transaction, is good and it doesn't # match the current rpmdb ... then mark it as bad. rpmdbv = self.rpmdb.simpleVersion(main_only=True)[0] if lastdbv.end_rpmdbversion != rpmdbv: self._rpmdb_warn_checks() def _history_get_transactions(self, extcmds): if len(extcmds) < 2: self.logger.critical(_('No transaction ID given')) return None tids = [] last = None for extcmd in extcmds[1:]: try: if extcmd == 'last' or extcmd.startswith('last-'): if last is None: cto = False last = self.history.last(complete_transactions_only=cto) if last is None: int("z") tid = last.tid if extcmd.startswith('last-'): off = int(extcmd[len('last-'):]) if off <= 0: int("z") tid -= off tids.append(str(tid)) continue if int(extcmd) <= 0: int("z") tids.append(extcmd) except ValueError: self.logger.critical(_('Bad transaction ID given')) return None old = self.history.old(tids) if not old: self.logger.critical(_('Not found given transaction ID')) return None return old def _history_get_transaction(self, extcmds): old = self._history_get_transactions(extcmds) if old is None: return None if len(old) > 1: self.logger.critical(_('Found more than one transaction ID!')) return old[0] def historyInfoCmd(self, extcmds): def str2int(x): try: return int(x) except ValueError: return None tids = set() mtids = set() pats = [] old = self.history.last() if old is None: self.logger.critical(_('No transactions')) return 1, ['Failed history info'] for tid in extcmds[1:]: if self._historyRangeRTIDs(old, tid): # Have a range ... do a "merged" transaction. mtids.add(self._historyRangeRTIDs(old, tid)) continue elif str2int(tid) is not None: tids.add(str2int(tid)) continue pats.append(tid) if pats: tids.update(self.history.search(pats)) utids = tids.copy() if mtids: mtids = sorted(mtids) tids.update(self._historyRangeTIDs(mtids)) if not tids and len(extcmds) < 2: old = self.history.last(complete_transactions_only=False) if old is not None: tids.add(old.tid) utids.add(old.tid) if not tids: self.logger.critical(_('No transaction ID, or package, given')) return 1, ['Failed history info'] lastdbv = self.history.last() if lastdbv is not None: lasttid = lastdbv.tid lastdbv = lastdbv.end_rpmdbversion done = False bmtid, emtid = -1, -1 mobj = None if mtids: bmtid, emtid = mtids.pop(0) for tid in self.history.old(tids): if lastdbv is not None and tid.tid == lasttid: # If this is the last transaction, is good and it doesn't # match the current rpmdb ... then mark it as bad. rpmdbv = self.rpmdb.simpleVersion(main_only=True)[0] if lastdbv != rpmdbv: tid.altered_gt_rpmdb = True lastdbv = None if tid.tid >= bmtid and tid.tid <= emtid: if mobj is None: mobj = yum.history.YumMergedHistoryTransaction(tid) else: mobj.merge(tid) elif mobj is not None: if done: print "-" * 79 done = True self._historyInfoCmd(mobj) mobj = None if mtids: bmtid, emtid = mtids.pop(0) if tid.tid >= bmtid and tid.tid <= emtid: mobj = yum.history.YumMergedHistoryTransaction(tid) if tid.tid in utids: if done: print "-" * 79 done = True self._historyInfoCmd(tid, pats) if mobj is not None: if done: print "-" * 79 self._historyInfoCmd(mobj) def _hpkg2from_repo(self, hpkg): """ Given a pkg, find the ipkg.ui_from_repo ... if none, then get an apkg. ... and put a ? in there. """ ipkgs = self.rpmdb.searchPkgTuple(hpkg.pkgtup) if not ipkgs: apkgs = self.pkgSack.searchPkgTuple(hpkg.pkgtup) if not apkgs: return '?' return '@?' + str(apkgs[0].repoid) return ipkgs[0].ui_from_repo 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, pkg_max_len=0): 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 %s" % (prefix, hibeg, state, hiend, pkg_max_len, hpkg, self._hpkg2from_repo(hpkg)) if type(old.tid) == type([]): print _("Transaction ID :"), "%u..%u" % (old.tid[0], old.tid[-1]) else: print _("Transaction ID :"), old.tid begtm = time.ctime(old.beg_timestamp) print _("Begin time :"), begtm if old.beg_rpmdbversion is not None: if old.altered_lt_rpmdb: print _("Begin rpmdb :"), old.beg_rpmdbversion, "**" else: print _("Begin rpmdb :"), old.beg_rpmdbversion if old.end_timestamp is not None: endtm = time.ctime(old.end_timestamp) endtms = endtm.split() if begtm.startswith(endtms[0]): # Chop uninteresting prefix begtms = begtm.split() sofar = 0 for i in range(len(endtms)): if i > len(begtms): break if begtms[i] != endtms[i]: break sofar += len(begtms[i]) + 1 endtm = (' ' * sofar) + endtm[sofar:] diff = old.end_timestamp - old.beg_timestamp if diff < 5 * 60: diff = _("(%u seconds)") % diff elif diff < 5 * 60 * 60: diff = _("(%u minutes)") % (diff / 60) elif diff < 5 * 60 * 60 * 24: diff = _("(%u hours)") % (diff / (60 * 60)) else: diff = _("(%u days)") % (diff / (60 * 60 * 24)) print _("End time :"), endtm, diff if old.end_rpmdbversion is not None: if old.altered_gt_rpmdb: print _("End rpmdb :"), old.end_rpmdbversion, "**" else: print _("End rpmdb :"), old.end_rpmdbversion if type(name) == type([]): for name in name: print _("User :"), name else: print _("User :"), name if type(old.return_code) == type([]): codes = old.return_code if codes[0] is None: print _("Return-Code :"), "**", _("Aborted"), "**" codes = codes[1:] if codes: print _("Return-Code :"), _("Failures:"), ", ".join(codes) elif old.return_code is None: print _("Return-Code :"), "**", _("Aborted"), "**" elif old.return_code: print _("Return-Code :"), _("Failure:"), old.return_code else: print _("Return-Code :"), _("Success") if old.cmdline is not None: if type(old.cmdline) == type([]): for cmdline in old.cmdline: print _("Command Line :"), cmdline else: print _("Command Line :"), old.cmdline if type(old.tid) != type([]): 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', 'saved_tx']) non_default = set(addon_info).difference(default_addons) if len(non_default) > 0: print _("Additional non-default information stored: %d" % len(non_default)) if old.trans_with: # This is _possible_, but not common print _("Transaction performed with:") pkg_max_len = max((len(str(hpkg)) for hpkg in old.trans_with)) for hpkg in old.trans_with: _simple_pkg(hpkg, 4, was_installed=True, pkg_max_len=pkg_max_len) print _("Packages Altered:") self.historyInfoCmdPkgsAltered(old, pats) if old.trans_skip: print _("Packages Skipped:") pkg_max_len = max((len(str(hpkg)) for hpkg in old.trans_skip)) for hpkg in old.trans_skip: _simple_pkg(hpkg, 4, pkg_max_len=pkg_max_len) 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) if prob.packages: pkg_max_len = max((len(str(hpkg)) for hpkg in prob.packages)) for hpkg in prob.packages: _simple_pkg(hpkg, 8, was_installed=True, highlight=hpkg.main, pkg_max_len=pkg_max_len) if old.output: print _("Scriptlet output:") num = 0 for line in old.output: num += 1 print "%4d" % num, line if old.errors: print _("Errors:") num = 0 for line in old.errors: num += 1 print "%4d" % num, line _history_state2uistate = {'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'), } 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 = self._history_state2uistate maxlen = 0 pkg_max_len = 0 for hpkg in old.trans_data: uistate = all_uistates.get(hpkg.state, hpkg.state) if maxlen < len(uistate): maxlen = len(uistate) if pkg_max_len < len(str(hpkg)): pkg_max_len = len(str(hpkg)) for hpkg in old.trans_data: prefix = " " * 4 if not hpkg.done: prefix = " ** " highlight = 'normal' if pats: x,m,u = yum.packages.parsePackages([hpkg], pats) if x or m: highlight = 'bold' (hibeg, hiend) = self._highlight(highlight) # To chop the name off we need nevra strings, str(pkg) gives envra # so we have to do it by hand ... *sigh*. cn = hpkg.ui_nevra 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 last.state == 'Updated' and last.name == hpkg.name and hpkg.state == 'Update'): ln = len(hpkg.name) + 1 cn = (" " * ln) + cn[ln:] elif (last is not None and last.state == 'Downgrade' and last.name == hpkg.name and hpkg.state == 'Downgraded'): ln = len(hpkg.name) + 1 cn = (" " * ln) + cn[ln:] else: last = None if hpkg.state in ('Updated', 'Downgrade'): last = hpkg print "%s%s%s%s %-*s %s" % (prefix, hibeg, uistate, hiend, pkg_max_len, cn, self._hpkg2from_repo(hpkg)) def historySummaryCmd(self, extcmds): tids, printall = self._history_list_transactions(extcmds) if tids is None: return 1, ['Failed history info'] fmt = "%s | %s | %s | %s" print fmt % (utf8_width_fill(_("Login user"), 26, 26), utf8_width_fill(_("Time"), 19, 19), utf8_width_fill(_("Action(s)"), 16, 16), utf8_width_fill(_("Altered"), 8, 8)) print "-" * 79 fmt = "%s | %s | %s | %8u" data = {'day' : {}, 'week' : {}, 'fortnight' : {}, 'quarter' : {}, 'half' : {}, 'year' : {}, 'all' : {}} for old in self.history.old(tids): name = self._pwd_ui_username(old.loginuid, 26) period = 'all' now = time.time() if False: pass elif old.beg_timestamp > (now - (24 * 60 * 60)): period = 'day' elif old.beg_timestamp > (now - (24 * 60 * 60 * 7)): period = 'week' elif old.beg_timestamp > (now - (24 * 60 * 60 * 14)): period = 'fortnight' elif old.beg_timestamp > (now - (24 * 60 * 60 * 7 * 13)): period = 'quarter' elif old.beg_timestamp > (now - (24 * 60 * 60 * 7 * 26)): period = 'half' elif old.beg_timestamp > (now - (24 * 60 * 60 * 365)): period = 'year' data[period].setdefault(name, []).append(old) _period2user = {'day' : _("Last day"), 'week' : _("Last week"), 'fortnight' : _("Last 2 weeks"), # US default :p 'quarter' : _("Last 3 months"), 'half' : _("Last 6 months"), 'year' : _("Last year"), 'all' : _("Over a year ago")} done = 0 for period in ('day', 'week', 'fortnight', 'quarter', 'half', 'year', 'all'): if not data[period]: continue for name in sorted(data[period]): if not printall and done > 19: break done += 1 hpkgs = [] for old in data[period][name]: hpkgs.extend(old.trans_data) count, uiacts = self._history_uiactions(hpkgs) uperiod = _period2user[period] # Should probably use columns here, esp. for uiacts? 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] if tid == 'last': tid = None if tid is not None: try: int(tid) except ValueError: self.logger.critical(_('Bad transaction ID given')) return 1, ['Failed history addon-info'] 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 '' def historyPackageListCmd(self, extcmds): """ Shows the user a list of data about the history, from the point of a package(s) instead of via. transactions. """ tids = self.history.search(extcmds) limit = None if extcmds and not tids: self.logger.critical(_('Bad transaction IDs, or package(s), given')) return 1, ['Failed history packages-list'] if not tids: limit = 20 all_uistates = self._history_state2uistate fmt = "%s | %s | %s" # REALLY Needs to use columns! print fmt % (utf8_width_fill(_("ID"), 6, 6), utf8_width_fill(_("Action(s)"), 14, 14), utf8_width_fill(_("Package"), 53, 53)) print "-" * 79 fmt = "%6u | %s | %-50s" num = 0 for old in self.history.old(tids, limit=limit): if limit is not None and num and (num +len(old.trans_data)) > limit: break last = None # Copy and paste from list ... uh. rmark = lmark = ' ' if old.return_code is None: 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: lmark = '>' for hpkg in old.trans_data: # Find a pkg to go with each cmd... if limit is None: x,m,u = yum.packages.parsePackages([hpkg], extcmds) if not x and not m: continue uistate = all_uistates.get(hpkg.state, hpkg.state) uistate = utf8_width_fill(uistate, 14) # To chop the name off we need nevra strings, str(pkg) gives # envra so we have to do it by hand ... *sigh*. cn = hpkg.ui_nevra # Should probably use columns here... if False: pass elif (last is not None and last.state == 'Updated' and last.name == hpkg.name and hpkg.state == 'Update'): ln = len(hpkg.name) + 1 cn = (" " * ln) + cn[ln:] elif (last is not None and last.state == 'Downgrade' and last.name == hpkg.name and hpkg.state == 'Downgraded'): ln = len(hpkg.name) + 1 cn = (" " * ln) + cn[ln:] else: last = None if hpkg.state in ('Updated', 'Downgrade'): last = hpkg num += 1 print fmt % (old.tid, uistate, cn), "%s%s" % (lmark,rmark) # And, again, copy and paste... lastdbv = self.history.last() if lastdbv is None: self._rpmdb_warn_checks(warn=False) else: # If this is the last transaction, is good and it doesn't # match the current rpmdb ... then mark it as bad. rpmdbv = self.rpmdb.simpleVersion(main_only=True)[0] if lastdbv.end_rpmdbversion != rpmdbv: self._rpmdb_warn_checks() class DepSolveProgressCallBack: """provides text output callback functions for Dependency Solver callback""" def __init__(self, ayum=None): """requires yum-cli log and errorlog functions as arguments""" self.verbose_logger = logging.getLogger("yum.verbose.cli") self.loops = 0 self.ayum = ayum def pkgAdded(self, pkgtup, mode): modedict = { 'i': _('installed'), 'u': _('an update'), 'e': _('erased'), 'r': _('reinstalled'), 'd': _('a downgrade'), 'o': _('obsoleting'), 'ud': _('updated'), 'od': _('obsoleted'),} (n, a, e, v, r) = pkgtup modeterm = modedict[mode] self.verbose_logger.log(logginglevels.INFO_2, _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r, modeterm) def start(self): self.loops += 1 def tscheck(self): self.verbose_logger.log(logginglevels.INFO_2, _('--> Running transaction check')) def restartLoop(self): self.loops += 1 self.verbose_logger.log(logginglevels.INFO_2, _('--> Restarting Dependency Resolution with new changes.')) self.verbose_logger.debug('---> Loop Number: %d', self.loops) def end(self): self.verbose_logger.log(logginglevels.INFO_2, _('--> Finished Dependency Resolution')) def procReq(self, name, formatted_req): self.verbose_logger.log(logginglevels.INFO_2, _('--> Processing Dependency: %s for package: %s'), formatted_req, name) def procReqPo(self, po, formatted_req): self.verbose_logger.log(logginglevels.INFO_2, _('--> 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) def format_missing_requires(self, reqPo, reqTup): """ Create a message for errorlist, non-cli users could also store this data somewhere and not print errorlist. """ needname, needflags, needversion = reqTup yb = self.ayum prob_pkg = "%s (%s)" % (reqPo, reqPo.ui_from_repo) msg = _('Package: %s') % (prob_pkg,) ui_req = formatRequire(needname, needversion, needflags) msg += _('\n Requires: %s') % (ui_req,) # if DepSolveProgressCallback() is used instead of DepSolveProgressCallback(ayum=) # then ayum has no value and we can't continue to find details about the missing requirements 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 def _run_inst_pkg(pkg, msg): nevr = (pkg.name, pkg.epoch, pkg.version, pkg.release) if nevr in seen_pkgs or (pkg.verEQ(last) and pkg.arch == last.arch): return msg seen_pkgs.add(nevr) action = _('Installed') rmed = yb.tsInfo.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES) if rmed: action = _('Removing') 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) seen_pkgs.add(nevr) msg += _msg_pkg(relmap[rtype], rpkg, needname) return msg def _run_avail_pkg(pkg, msg): # We don't want to see installed packages, or N packages of the # same version, from different repos. nevr = (pkg.name, pkg.epoch, pkg.version, pkg.release) if nevr in seen_pkgs or (pkg.verEQ(last) and pkg.arch == last.arch): return False, last, msg seen_pkgs.add(nevr) action = _('Available') if yb.tsInfo.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES): action = _('Installing') msg += _msg_pkg(action, pkg, needname) return True, pkg, msg last = None seen_pkgs = set() for pkg in sorted(yb.rpmdb.getProvides(needname)): msg = _run_inst_pkg(pkg, msg) available_names = set() for pkg in sorted(yb.pkgSack.getProvides(needname)): tst, last, msg = _run_avail_pkg(pkg, msg) if tst: available_names.add(pkg.name) last = None for pkg in sorted(yb.rpmdb.searchNames(available_names)): msg = _run_inst_pkg(pkg, msg) last = None for pkg in sorted(yb.pkgSack.searchNames(available_names)): tst, last, msg = _run_avail_pkg(pkg, msg) return msg def procConflict(self, name, confname): self.verbose_logger.log(logginglevels.INFO_2, _('--> Processing Conflict: %s conflicts %s'), name, confname) def procConflictPo(self, po, confname): self.verbose_logger.log(logginglevels.INFO_2, _('--> Processing Conflict: %s conflicts %s'), po, confname) def transactionPopulation(self): self.verbose_logger.log(logginglevels.INFO_2, _('--> Populating transaction set ' 'with selected packages. Please wait.')) def downloadHeader(self, name): self.verbose_logger.log(logginglevels.INFO_2, _('---> Downloading header for %s ' 'to pack into transaction set.'), name) class CacheProgressCallback: ''' The class handles text output callbacks during metadata cache updates. ''' def __init__(self): self.logger = logging.getLogger("yum.cli") self.verbose_logger = logging.getLogger("yum.verbose.cli") self.file_logger = logging.getLogger("yum.filelogging.cli") def log(self, level, message): self.verbose_logger.log(level, message) def errorlog(self, level, message): self.logger.log(level, message) def filelog(self, level, message): self.file_logger.log(level, message) def progressbar(self, current, total, name=None): progressbar(current, total, name) def _pkgname_ui(ayum, pkgname, ts_states=None): """ Get more information on a simple pkgname, if we can. We need to search packages that we are dealing with atm. and installed packages (if the transaction isn't complete). """ if ayum is None: return pkgname if ts_states is None: # Note 'd' is a placeholder for downgrade, and # 'r' is a placeholder for reinstall. Neither exist atm. ts_states = ('d', 'e', 'i', 'r', 'u', 'od', 'ud') matches = [] def _cond_add(po): if matches and matches[0].arch == po.arch and matches[0].verEQ(po): return matches.append(po) for txmbr in ayum.tsInfo.matchNaevr(name=pkgname): if txmbr.ts_state not in ts_states: continue _cond_add(txmbr.po) if not matches: return pkgname fmatch = matches.pop(0) if not matches: return str(fmatch) show_ver = True show_arch = True for match in matches: if not fmatch.verEQ(match): show_ver = False if fmatch.arch != match.arch: show_arch = False if show_ver: # Multilib. *sigh* if fmatch.epoch == '0': return '%s-%s-%s' % (fmatch.name, fmatch.version, fmatch.release) else: return '%s:%s-%s-%s' % (fmatch.epoch, fmatch.name, fmatch.version, fmatch.release) if show_arch: return '%s.%s' % (fmatch.name, fmatch.arch) return pkgname class YumCliRPMCallBack(RPMBaseCallback): """ Yum specific callback class for RPM operations. """ width = property(lambda x: _term_width()) def __init__(self, ayum=None): RPMBaseCallback.__init__(self) self.lastmsg = to_unicode("") self.lastpackage = None # name of last package we looked at self.output = logging.getLogger("yum.verbose.cli").isEnabledFor(logginglevels.INFO_2) # for a progress bar self.mark = "#" self.marks = 22 self.ayum = ayum # Installing things have pkg objects passed to the events, so only need to # lookup for erased/obsoleted. def pkgname_ui(self, pkgname, ts_states=('e', 'od', 'ud', None)): """ Get more information on a simple pkgname, if we can. """ return _pkgname_ui(self.ayum, pkgname, ts_states) def event(self, package, action, te_current, te_total, ts_current, ts_total): # this is where a progress bar would be called process = self.action[action] if not hasattr(self, '_max_action_wid'): wid1 = 0 for val in self.action.values(): wid_val = utf8_width(val) if wid1 < wid_val: wid1 = wid_val self._max_action_wid = wid1 wid1 = self._max_action_wid if type(package) not in types.StringTypes: pkgname = str(package) else: pkgname = self.pkgname_ui(package) self.lastpackage = package if te_total == 0: percent = 0 else: percent = (te_current*100L)/te_total if self.output and (sys.stdout.isatty() or te_current == te_total): (fmt, wid1, wid2) = self._makefmt(percent, ts_current, ts_total, pkgname=pkgname, wid1=wid1) msg = fmt % (utf8_width_fill(process, wid1, wid1), utf8_width_fill(pkgname, wid2, wid2)) if msg != self.lastmsg: sys.stdout.write(to_unicode(msg)) sys.stdout.flush() self.lastmsg = msg if te_current == te_total: print " " def scriptout(self, package, msgs): if msgs: sys.stdout.write(to_unicode(msgs)) sys.stdout.flush() def _makefmt(self, percent, ts_current, ts_total, progress = True, pkgname=None, wid1=15): l = len(str(ts_total)) size = "%s.%s" % (l, l) fmt_done = "%" + size + "s/%" + size + "s" done = fmt_done % (ts_current, ts_total) # This should probably use TerminLine, but we don't want to dep. on # that. So we kind do an ok job by hand ... at least it's dynamic now. if pkgname is None: pnl = 22 else: pnl = utf8_width(pkgname) overhead = (2 * l) + 2 # Length of done, above overhead += 2+ wid1 +2 # Length of begining (" " action " :") overhead += 1 # Space between pn and done overhead += 2 # Ends for progress overhead += 1 # Space for end width = self.width if width < overhead: width = overhead # Give up width -= overhead if pnl > width / 2: pnl = width / 2 marks = self.width - (overhead + pnl) width = "%s.%s" % (marks, marks) fmt_bar = "[%-" + width + "s]" # pnl = str(28 + marks + 1) full_pnl = pnl + marks + 1 if progress and percent == 100: # Don't chop pkg name on 100% fmt = "\r %s: %s " + done wid2 = full_pnl elif progress: bar = fmt_bar % (self.mark * int(marks * (percent / 100.0)), ) fmt = "\r %s: %s " + bar + " " + done wid2 = pnl elif percent == 100: fmt = " %s: %s " + done wid2 = full_pnl else: bar = fmt_bar % (self.mark * marks, ) fmt = " %s: %s " + bar + " " + done wid2 = pnl return fmt, wid1, wid2 def progressbar(current, total, name=None): """simple progress bar 50 # marks""" mark = '#' if not sys.stdout.isatty(): return if current == 0: percent = 0 else: if total != 0: percent = float(current) / total else: percent = 0 width = _term_width() if name is None and current == total: name = '-' end = ' %d/%d' % (current, total) width -= len(end) + 1 if width < 0: width = 0 if name is None: width -= 2 if width < 0: width = 0 hashbar = mark * int(width * percent) output = '\r[%-*s]%s' % (width, hashbar, end) elif current == total: # Don't chop name on 100% output = '\r%s%s' % (utf8_width_fill(name, width, width), end) else: width -= 4 if width < 0: width = 0 nwid = width / 2 if nwid > utf8_width(name): nwid = utf8_width(name) width -= nwid hashbar = mark * int(width * percent) output = '\r%s: [%-*s]%s' % (utf8_width_fill(name, nwid, nwid), width, hashbar, end) if current <= total: sys.stdout.write(output) if current == total: sys.stdout.write('\n') sys.stdout.flush() if __name__ == "__main__": if len(sys.argv) > 1 and sys.argv[1] == "format_number": print "" print " Doing format_number tests, right column should align" print "" x = YumOutput() for i in (0, 0.0, 0.1, 1, 1.0, 1.1, 10, 11, 11.1, 100, 111.1, 1000, 1111, 1024 * 2, 10000, 11111, 99999, 999999, 10**19, 10**20, 10**35): out = x.format_number(i) print "%36s <%s> %s <%5s>" % (i, out, ' ' * (14 - len(out)), out) if len(sys.argv) > 1 and sys.argv[1] == "progress": print "" print " Doing progress, small name" print "" for i in xrange(0, 101): progressbar(i, 100, "abcd") time.sleep(0.1) print "" print " Doing progress, big name" print "" for i in xrange(0, 101): progressbar(i, 100, "_%s_" % ("123456789 " * 5)) time.sleep(0.1) print "" print " Doing progress, no name" print "" for i in xrange(0, 101): progressbar(i, 100) time.sleep(0.1) if len(sys.argv) > 1 and sys.argv[1] in ("progress", "rpm-progress"): cb = YumCliRPMCallBack() cb.output = True cb.action["foo"] = "abcd" cb.action["bar"] = "_12345678_.end" print "" print " Doing CB, small proc / small pkg" print "" for i in xrange(0, 101): cb.event("spkg", "foo", i, 100, i, 100) time.sleep(0.1) print "" print " Doing CB, big proc / big pkg" print "" for i in xrange(0, 101): cb.event("lpkg" + "-=" * 15 + ".end", "bar", i, 100, i, 100) time.sleep(0.1) if len(sys.argv) > 1 and sys.argv[1] in ("progress", "i18n-progress", "rpm-progress", 'i18n-rpm-progress'): yum.misc.setup_locale() if len(sys.argv) > 1 and sys.argv[1] in ("progress", "i18n-progress"): print "" print " Doing progress, i18n: small name" print "" for i in xrange(0, 101): progressbar(i, 100, to_unicode('\xe6\xad\xa3\xe5\x9c\xa8\xe5\xae\x89\xe8\xa3\x85')) time.sleep(0.1) print "" print "" print " Doing progress, i18n: big name" print "" for i in xrange(0, 101): progressbar(i, 100, to_unicode('\xe6\xad\xa3\xe5\x9c\xa8\xe5\xae\x89\xe8\xa3\x85' * 5 + ".end")) time.sleep(0.1) print "" if len(sys.argv) > 1 and sys.argv[1] in ("progress", "i18n-progress", "rpm-progress", 'i18n-rpm-progress'): cb = YumCliRPMCallBack() cb.output = True cb.action["foo"] = to_unicode('\xe6\xad\xa3\xe5\x9c\xa8\xe5\xae\x89\xe8\xa3\x85') cb.action["bar"] = cb.action["foo"] * 5 + ".end" print "" print " Doing CB, i18n: small proc / small pkg" print "" for i in xrange(0, 101): cb.event("spkg", "foo", i, 100, i, 100) time.sleep(0.1) print "" print " Doing CB, i18n: big proc / big pkg" print "" for i in xrange(0, 101): cb.event("lpkg" + "-=" * 15 + ".end", "bar", i, 100, i, 100) time.sleep(0.1) print "" yum-3.4.3/AUTHORS0000664000076400007640000000104611602434452012377 0ustar jamesjames---------------- YUM AUTHORS ---------------- Seth Vidal Jeremy Katz Adrian Likins Matthew Miller Michael Stenner Icon Riabitsev Ryan Tomayko Paul Nasrat Robert G. Brown Hollis Blanchard Grigory Bakunov Menno Smits Gijs Hollestelle Terje Rosten Luke Macken James Bowes Tim Lauridsen Florian Festi Jack Neely James Antill Panu Matilainen Tambet Ingo Original Yup people: Bryan Stillwell Stephen Edie Dan Burcaw Troy Bengegerdes yum-3.4.3/TODO0000664000076400007640000000005211602434452012013 0ustar jamesjamessee http://wiki.linux.duke.edu/YumTodo yum-3.4.3/FAQ0000664000076400007640000002617311602434453011672 0ustar jamesjames= Faq = ===== Q. 1: What is this? ===== '''A.''' A yum faq. ---- ===== Q. 2: Where do I find a repository to update my system which is running di stribution ? ===== '''A.''' We have no idea. Your distribution should maintain their own list on t his subject. If they don't support yum but you want to use it anyway you are pr obably going to have to make your own repository. ---- ===== Q. 3: How do I upgrade my machine from release X to release Y? ===== '''A.''' We have little idea. If you are using Fedora, check out [http://fedora project.org/wiki/YumUpgradeFaq this guide written by Fedora Developers and Contr ibutors]. If you are using something else, try looking at their docs or asking on their mailing lists. ---- ===== Q. 4: How can I get yum to keep package "foo" at a certain version in a fa shion similar to pinning provided by apt? ===== '''A.''' There are several ways you can do this. * One is to exclude it from your updates list. See man yum.conf for more detail s. * Another way to pin package "foo" to a certain version is to use the versionlo ck plugin. If you are using the latest Fedora (12) then the plugin can be installed using: {{{ yum install yum-plugin-versionlock }}} To add files that you want version locked, use the following yum command: {{{ yum versionlock }}} you can also use wildcards: {{{ yum versionlock -* }}} This command line will add lines to: {{{ /etc/yum/pluginconf.d/versionlock.list }}} The config file uses the following format: EPOCH:NAME-VERSION-RELEASE.ARCH which can be obtained using: {{{ rpm -q --queryformat "%{EPOCH}:%{NAME}-%{VERSION}-%{RELEASE}\n " }}} If no EPOCH is specified in the package, then the number will be 0. Alternatively if you are using Redhat 5.4/Centos 5.4 or another OS that does not yet have the latest yum available you can use: {{{ yum install yum-versionlock }}} This older version of the plug-in does not extend command line flags that you ca n pass to yum and the lock list must be edited manually. For a manual install the source can be obtained from the current git repository for yum which is [http://yum.baseurl.org/gitweb] The files you need will be found in the ''yum-utils/plugins/versionlock'' part of the git tree. Copy versionlock.py to ''/usr/lib/yum-plugins/versionlock.py'' Copy versionlock.conf to ''/etc/yum/pluginconf.d/versionlock.conf'' Create ''/etc/yum/pluginconf.d/versionlock.list'' All files should be ''root.root'' with ''644'' permissions. ---- ===== Q. 5: I get an "[Errno -1] Header is not complete." error from yum - what the heck is going on? ===== '''A.''' It's probably a proxy somewhere between you and the repository. You ma y not think that a proxy is in the way even though it really is. You can try doing a "trace" with this command: {{{ echo -e "TRACE / HTTP/1.1\nHost: yum-server.example.com\n\n" | nc yum-server.e xample.com 80 }}} Which should give you some more information about the network between you and th e repository. Also, be sure to replace yum-server.example.com with whatever you r yum repository server is. Another diagnosis step is to get the box off of that network (not always entirel y possible, but port forwarding, VPN, or dialup can simulate the experience) and see if you still have the problem. The solutions to this problem are: 1. Get your proxy software/firmware updated so that it properly implements HTTP 1.1 2. Use an FTP repository, where byte ranges are more commonly supported by the proxy 3. Create a local mirror with rsync and then point your yum.conf to that local mirror 4. Don't use yum ---- ===== Q. 6: I'm upgrading and I get "Error: Missing Dependency:" messages like " Error: Missing Dependency: libgcj.so.5 is needed by package junit" and then yum quits. What should I do? ===== '''A.''' yum is trying to tell you that some packages that are being replaced or obsoleted are needed by an installed package, so yum can't do it's work. To in terpret the example, the installed junit package requires libgcj.so.5 and libgcj .so.5 is being updated or obsoleted so junit would no longer work if yum updated the libgcj.so.5 package. One relatively easy way to fix this is to remove whatever package "needs" the pa ckages that are about to be upgraded/obsoleted and then reinstall that package a fter you have upgraded everything else. In the example, remove junit, upgrade, then reinstall junit. Another solution is to find a repository that provides an upgraded of the packag e that "needs" the old packages and add it to your yum configuration. Hopefully the new version of that package will have dependencies on the upgraded package, in our case libgcj.so.5, and yum will take care of everything. For more details, see [http://lists.baseurl.org/pipermail/yum/2005-July/018079.h tml this post by Garrick Staples] ---- ===== Q. 7: I installed a new version of yum (or upgraded my whole system) and n ow when I run yum, I get an error saying "The yum libraries do not seem to be av ailable on your system for this version of python" and "Please make sure the pac kage you used to install yum was built for your install of python." What's wrong with the yum package I've got, or my Python installation, and how do I fix it? ===== '''A.''' In pre-2.3.? yum This error message is often misleading. To see the real error, run `python` from the command line, and type `import yum`. The problem probably isn't with your version of python at all, but with a missing libxml2-python, py thon-sqlite, or python-elementtree package. Yum 2.4.x provides a different error with the module import errors, so this will become less confusing. It also includes a directive to send the error to the mailing list. Really, you should figure out what rpm provides the module that was missing and try to inst all that. If you are getting a message that yum itself is the missing module then you prob ably installed it incorreclty (or installed the source rpm using make/make insta ll). If possible, find a prebuilt rpm that will work for your system like one f rom Fedora or CentOS. Or, you can download the srpm and do a rpmbuild --rebuild yum*.src.rpm ---- ===== Q. 8: Yum is very nice at updating my kernel, but I use the (nvidia | open afs | other module) and yum doesn't seem to handle it well. Could you fix yum t o handle this for me? ===== '''A.''' This is a known and non-trivial problem, but people are talking and wor king on it. Please read ideas on [http://lists.baseurl.org/pipermail/yum-devel/ 2005-June/thread.html#1232 this plugin] and messages from [http://www.google.com /search?q=yum+kernel+module+site:lists.baseurl.org&num=20&hl=en&lr=&start=20&sa= N the Google search of the yum archives] to get more details. ---- ===== Q. 9: How does yum handle updates/installs on x86_64 machines? ===== '''A.''' There are times when it is beneficial to have both 32 and 64 bit versio ns of a package installed on a machine such as when another package only has a 3 2bit version and needs to access 32bit libraries of something that you would nor mally only install the 64bit package. So, if you do "yum install foo" then you will get both foo.i386.rpm and foo.x86_64.rpm installed on your system. This is the desired behavior in most cases even if it takes up more disk space. If you do a "yum install foo.x86_64" then you will only get the x86_64 package. ---- ===== Q. 10: How can I search the mailing list archives? ===== '''A.''' One easy way is to use the google site: keyword pointed at the server f or the mailing list [http://www.google.com/search?num=20&hl=en&lr=&q=your_search _term+site%3Alists.baseurl.org&btnG=Search thusly.] Of course, you should repla ce "your_search_term" in that example to your search term. ---- ===== Q. 11: How can I create a yum repository? ===== '''A.''' First, are you sure you want to create a repository and not just mirror an existing one? If all you want is a mirrored local copy of someone else's re pository, just make sure that your rsync script (or whatever mirroring process y ou are using) includes the repodata directory from the mirror's source. If you really want to make your own yum repository, the command depends on the v ersion of yum that you are going to use with this repository, but the method is basically the same. for 2.0.X or earlier:[[BR]] yum-arch /path/to/where/you/want/the/repo/made for 2.2.x or later:[[BR]] createrepo /path/to/where/you/want/the/repo/made You may also be served by reading [http://createrepo.baseurl.org/] and even sear ching the yum list archives as described in question 10 ---- ===== Q. 12: How can I get help? ===== '''A.''' Well, you're on this page so that's a start. And you've already passed most of the technical faqs and the advice on using Google to search the mailing list. If you've made it this far and haven't solved your problem you should kno w about the [http://yum.baseurl.org/#GetHelp support options.] Basically, ask q uestions on the [http://lists.baseurl.org/mailman/listinfo/yum mailing list] and file bugs in [http://yum.baseurl.org/report trac] ---- ===== Q. 13: If the most recent version of a package is available in multiple re positories, how can I instruct yum to consistently pull it from a specific repos itory? Stated differently, how can I give priority to a certain mirror or my lo cal repositories? ===== '''A.''' yum will get the package from the repository listed first in the yum.co nf file. You can read more in [http://lists.baseurl.org/pipermail/yum/2005-May/ 017649.html this explanation.] ---- ===== Q. 14: How can I tell yum to download a source package (i.e., a .src.rpm f ile)? ===== '''A.''' The main yum program doesn't do this -- it's not within the scope of th e program's design goals. But, since it's a very useful function, the {{{yumdown loader}}} program from the {{{yum-utils}}} package is available for doing this v ery thing. Simply run something like: {{{ yumdownloader --source yum }}} and you'll get the yum src.rpm in your current directory. In order to keep yum's interface (and internal code) clean and straightforward, this will not be added to yum proper. And yumdownloader works well. ---- ===== Q. 15: I'm behind a Microsoft proxy using NTLM authentication. What can I do? ===== '''A.''' Some people have had luck using [http://ntlmaps.sourceforge.net/ the NT LM APS project]. ---- ===== Q. 16: Can yum downgrade packages? ===== '''A.''' Downgrades are tricky but in yum versions 3.2.27 and above it can do _s ome_ downgrades. They are not perfect and should be used with care. ---- ==== Q. 17: Why does yum always seem to update the metadata on EVERY run? ==== '''A.''' It doesn't. It updates to check the metadata any time the cache timeout has been hit. The default can be set in your /etc/yum.conf file and per repository config. see the yum man page and look for the metadata_e xpire value for how to set it to a different value. ---- ==== Q. 18: How does yum determine which pkg to install for a dependency if more than one pkg provides a dependency? ==== '''A.''' See the CompareProviders wiki page for more detailed information. ---- === Q. 19: What's the yum equivalent for rpm --nodeps --force? === '''A.''' See the NoDeps wiki page for more detailed information. ---- yum-3.4.3/docs/0000775000076400007640000000000011602434452012256 5ustar jamesjamesyum-3.4.3/docs/yum-updatesd.conf.50000664000076400007640000000352711602434452015720 0ustar jamesjames.TH "yum-updatesd.conf" "5" "" "Jeremy Katz" "yum-updatesd configuration file" .SH "NAME" .LP \fByum-updatesd.conf\fR \- Configuration file for \fByum-updatesd(8)\fR. .SH "DESCRIPTION" .LP yum-updatesd uses a configuration file at \fB/etc/yum/yum-updatesd.conf\fR. .LP Additional configuration information is read from the main \fByum.conf (5)\fR configuration file. .SH "PARAMETERS" .LP There is one section in the yum-updatesd configuration file, main, which defines all of the global configuration options. .SH "[main] OPTIONS" .LP The [main] section must exist for yum-updatesd to do anything. It consists of the following options: .IP \fBrun_interval\fR Number of seconds to wait between checks for available updates. .IP \fBupdaterefresh\fR Minimum number of seconds between update information refreshes to avoid hitting the server too often. .IP \fBemit_via\fR List of ways to emit update notification. Valid values are `email', `dbus' and `syslog'. .IP \fBdo_update\fR Boolean option to decide whether or not updates should be automatically applied. Defaults to False. .IP \fBdo_download_deps\fR Boolean option to decide whether or not updates should be automatically downloaded. Defaults to False. .IP \fBdo_download_deps\fR Boolean option to automatically download dependencies of packages which need updating as well. Defaults to False. .SH "MAIL OPTIONS" .IP \fBemail_to\fR List of email addresses to send update notification to. Defaults to `root@localhost'. .IP \fBemail_from\fR Email address for update notifications to be from. Defaults to `yum-updatesd@localhost'. .SH "SYSLOG OPTIONS" .IP \fBsyslog_facility\fR What syslog facility should be used. Defaults to `DAEMON'. .IP \fBsyslog_level\fR Level of syslog messages. Defaults to `WARN'. .SH "FILES" .nf /etc/yum/yum-updatesd.conf .SH "SEE ALSO" .LP yum-updatesd(8) yum.conf(5) yum-3.4.3/docs/comps.rng0000664000076400007640000002036711602434452014117 0ustar jamesjames This defines a package group. Should the group be enabled by default? Should the group be visible to users? Contains a list of other groups that this group requires. This element has been ignored by yum et. al. since 2005 and should therefore be considered deprecated. mandatory default optional conditional The "blacklist" is a list of packages that will be *removed* if found during an upgrade. Typically this is used to handle tricky upgrade cases that can't be modeled with existing RPM Obsoletes/Conflicts/etc. Here's an example: In FC6, hal was a multilib package, but in F7 we split it into (non-multilib) hal and (multilib) hal-libs. So the system starts with hal.x86_64 and hal.i386 (for multilib compat). We want to upgrade to hal.x86_64 and hal-libs.x86_64, with hal-libs.i386 for multilib. Upgrading hal.x86_64 will bring in hal-libs.x86_64, and upgrading hal.i386 brings in hal-libs.i386. Adding a blacklist item for 'hal.i386' causes anaconda to remove the (now-unneeded) hal.i386, which gives us the desired outcome. Arch to blacklist this package from. If unspecified, it will be blocked on all arches. The RPM "whiteout" list is used to by RPM to break dependency loops. Each "ignoredep" element has two attributes - "package" and "requires" - which are both package names. While calculating dependencies, RPM will ignore any dependency that results in p requiring r. This is used to keep upgrades from getting stuck on known dependency loops, like with mutually dependent packages (e.g. xinitrc and xorg-x11) To feed this info to RPM, each item should be converted to a string of the form 'package>requires', and the RPM macro '_dependency_whiteout' should be filled with a (whitespace-separated) list of these items. true True false False yum-3.4.3/docs/.gitignore0000664000076400007640000000000711602434452014243 0ustar jamesjamesepydoc yum-3.4.3/docs/Makefile0000664000076400007640000000101011602434452013706 0ustar jamesjamesall: echo "Nothing to do" clean: rm -f *.pyc *.pyo *~ rm -fr epydoc install: mkdir -p $(DESTDIR)/usr/share/man/man5 mkdir -p $(DESTDIR)/usr/share/man/man8 install -m 644 yum.8 $(DESTDIR)/usr/share/man/man8/yum.8 install -m 644 yum-shell.8 $(DESTDIR)/usr/share/man/man8/yum-shell.8 install -m 644 yum.conf.5 $(DESTDIR)/usr/share/man/man5/yum.conf.5 install -m 644 yum-updatesd.8 $(DESTDIR)/usr/share/man/man8/yum-updatesd.8 install -m 644 yum-updatesd.conf.5 $(DESTDIR)/usr/share/man/man5/yum-updatesd.conf.5 yum-3.4.3/docs/yum-shell.80000664000076400007640000000373211602434452014273 0ustar jamesjames.\" yum shell - Yum shell interface .TH "yum" "8" "" "Seth Vidal" "" .SH "NAME" yum \- Yellowdog Updater Modified shell .SH "SYNOPSIS" \fByum shell\fP [filename] .SH "DESCRIPTION" .PP \fByum\fP includes an interactive shell for conducting multiple commands or sets of commands during a single execution of yum. These commands can be issued manually or passed to yum from a file. The commands are much the same as the normal yum command line options. See here \fIyum(8)\fP for that information. There are a few additional commands documented below. .PP .IP "\fBconfig\fP" [argument] [value] args: debuglevel, errorlevel, obsoletes, gpgcheck, assumeyes, exclude If no value is given it prints the current value\&. If value is given it sets that value\&. .IP .IP "\fBrepo\fP" [argument] [option] list: lists repositories and their status enable: enable repositories. option = repository id disable: disable repositories. option = repository id .IP .IP "\fBtransaction\fP" [argument] list: lists the contents of the transaction reset: reset (zero-out) the transaction solve: run the dependency solver on the transaction run: run the transaction .PP .SH "Examples" The following are examples of using the yum shell\&. .IP list available packagename* groupinfo 'Some Group' install foo remove bar update baz run That will list available packages matching the glob 'packagename*'. It will return information on the group 'Some Group' It will then queue the following commands into the transaction: install foo, remove bar, update baz. Then the 'run' command will resolve dependencies for the transaction commands and run the transaction. .PP .SH "SEE ALSO" .nf .I yum (8) http://yum.baseurl.org/ .fi .PP .SH "AUTHORS" .nf See the Authors file included with this program. .fi .PP .SH "BUGS" There of course aren't any bugs, but if you find any, they should be sent to the mailing list: yum@lists.baseurl.org or filed in bugzilla. .fi yum-3.4.3/docs/yum.80000664000076400007640000006671211602434452013175 0ustar jamesjames.\" yum - Yellowdog Updater Modified .TH "yum" "8" "" "Seth Vidal" "" .SH "NAME" yum \- Yellowdog Updater Modified .SH "SYNOPSIS" \fByum\fP [options] [command] [package ...] .SH "DESCRIPTION" .PP \fByum\fP is an interactive, rpm based, package manager. It can automatically perform system updates, including dependency analysis and obsolete processing based on "repository" metadata. It can also perform installation of new packages, removal of old packages and perform queries on the installed and/or available packages among many other commands/services (see below)\&. \fByum\fP is similar to other high level package managers like apt\-get and smart\&. .PP While there are some graphical interfaces directly to the \fByum\fP code, more recent graphical interface development is happening with PackageKit and the gnome\-packagekit application\&. .PP \fIcommand\fP is one of: .br .I \fR * install package1 [package2] [\&.\&.\&.] .br .I \fR * update [package1] [package2] [\&.\&.\&.] .br .I \fR * update-to [package1] [package2] [\&.\&.\&.] .br .I \fR * check\-update .br .I \fR * upgrade [package1] [package2] [\&.\&.\&.] .br .I \fR * upgrade-to [package1] [package2] [\&.\&.\&.] .br .I \fR * distribution-synchronization [package1] [package2] [\&.\&.\&.] .br .I \fR * remove | erase package1 [package2] [\&.\&.\&.] .br .I \fR * list [\&.\&.\&.] .br .I \fR * info [\&.\&.\&.] .br .I \fR * provides | whatprovides feature1 [feature2] [\&.\&.\&.] .br .I \fR * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] .br .I \fR * makecache .br .I \fR * groups [\&.\&.\&.] .br .I \fR * search string1 [string2] [\&.\&.\&.] .br .I \fR * shell [filename] .br .I \fR * resolvedep dep1 [dep2] [\&.\&.\&.] .br .I \fR * localinstall rpmfile1 [rpmfile2] [\&.\&.\&.] (maintained for legacy reasons only - use install) .br .I \fR * localupdate rpmfile1 [rpmfile2] [\&.\&.\&.] (maintained for legacy reasons only - use update) .br .I \fR * reinstall package1 [package2] [\&.\&.\&.] .br .I \fR * downgrade package1 [package2] [\&.\&.\&.] .br .I \fR * deplist package1 [package2] [\&.\&.\&.] .br .I \fR * repolist [all|enabled|disabled] .br .I \fR * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] .br .I \fR * history [info|list|packages-list|summary|addon-info|redo|undo|rollback|new] .br .I \fR * check .br .I \fR * help [command] .br .PP Unless the \-\-help or \-h option is given, one of the above commands must be present\&. .PP Repository configuration is honored in all operations. .PP .IP "\fBinstall\fP" Is used to install the latest version of a package or 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 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 match multiple packages\&. .IP .IP "\fBupdate\fP" If run without any packages, update will update every currently installed package. If one or more packages or package globs are specified, Yum will only update the listed packages\&. While updating packages, \fByum\fP will ensure that all dependencies are satisfied\&. (See \fBSpecifying package names\fP for more information) If the packages or globs specified match to packages which are not currently installed then update will not install them\&. update operates on groups, files, provides and filelists just like the "install" command\&. If the main obsoletes configure option is true (default) or the \-\-obsoletes flag is present \fByum\fP will include package obsoletes in its calculations - this makes it better for distro\-version changes, for example: upgrading from somelinux 8.0 to somelinux 9. Note that "\fBupdate\fP" works on installed packages first, and only if there are no matches does it look for available packages. The difference is most noticable when you do "\fBupdate\fP foo-1-2" which will act exactly as "\fBupdate\fP foo" if foo-1-2 is installed. You can use the "\fBupdate-to\fP" if you'd prefer that nothing happen in the above case. .IP .IP "\fBupdate-to\fP" This command works like "\fBupdate\fP" but always specifies the version of the package we want to update to. .IP .IP "\fBcheck\-update\fP" Implemented so you could know if your machine had any updates that needed to be applied without running it interactively. Returns exit value of 100 if there are packages available for an update. Also returns a list of the packages to be updated in list format. Returns 0 if no packages are available for update. Returns 1 if an error occurred. Running in verbose mode also shows obsoletes. .IP .IP "\fBupgrade\fP" Is the same as the update command with the \-\-obsoletes flag set. See update for more details. .IP .IP "\fBupgrade-to\fP" This command works like "\fBupgrade\fP" but always specifies the version of the package we want to update to. .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. If you give the optional argument "full", then the command will also reinstall packages where the install checksum and the available checksum do not match. And remove old packages (can be used to sync. rpmdb versions). The optional argument "different" can be used to specify the default operation. 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 packages; more complete details are available in the \fIList Options\fP section below\&. .IP .IP "\fBprovides\fP or \fBwhatprovides\fP" Is used to find out which package provides some feature or file. Just use a specific name or a file-glob-syntax wildcards to list the packages available or installed that provide that feature or file\&. .IP .IP "\fBsearch\fP" This is used to find packages when you know something about the package but aren't sure of it's name. By default search will try searching just package names and summaries, but if that "fails" it will then try descriptions and url. Yum search orders the results so that those packages matching more terms will appear first. You can force searching everything by specifying "all" as the first argument. .IP .IP "\fBinfo\fP" Is used to list a description and summary information about available packages; takes the same arguments as in the \fIList Options\fP section below\&. .IP .IP "\fBclean\fP" Is used to clean up various things which accumulate in the \fByum\fP cache directory over time. More complete details can be found in the \fIClean Options\fP section below\&. .IP .IP "\fBmakecache\fP" Is used to download and make usable all the metadata for the currently enabled \fByum\fP repos. .IP .IP "\fBgroups\fP" A command, new in 3.4.2, that collects all the subcommands that act on groups together. "\fBgroup install\fP" is used to install all of the individual packages in a group, of the specified types (this works as if you'd taken each of those package names and put them on the command line for a "yum install" command). The group_package_types configuration option specifies which types will be installed. "\fBgroup update\fP" is just an alias for groupinstall, which will do the right thing because "yum install X" and "yum update X" do the same thing, when X is already installed. "\fBgroup list\fP" is used to list the available groups from all \fByum\fP repos. Groups are marked as "installed" if all mandatory packages are installed, or if a group doesn't have any mandatory packages then it is installed if any of the optional or default package are installed. The optional "hidden" argument will also list groups marked as not being "user visible". If you pass the \-v option, to enable verbose mode, then the groupids are displayed. "\fBgroup remove\fP" 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 "group install X Y" followed by "group remove Y" does not do give you the same result as "group install X". The groupremove_leaf_only configuration changes the behaviour of this command to only remove packages which aren't required by something else. "\fBgroup info\fP" is used to give the description and package list of a group (and which type those packages are marked as). Note that you can use the yum-filter-data and yum-list-data plugins to get/use the data the other way around (Ie. what groups own packages need updating). If you pass the \-v option, to enable verbose mode, then the package names are matched against installed/available packages similar to the list command. .IP .IP "\fBshell\fP" Is used to enter the 'yum shell', when a filename is specified the contents of that file is executed in yum shell mode. See \fIyum-shell(8)\fP for more info .IP .IP "\fBresolvedep\fP" Is used to list packages providing the specified dependencies, at most one package is listed per dependency. .IP .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. 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 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. This does not work for "installonly" packages, like Kernels. reinstall operates on groups, files, provides and filelists just like the "install" command\&. .IP .IP "\fBdowngrade\fP" Will try and downgrade a package from the version currently installed to the 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, filelists and rpm files just like the "install" command\&. .IP .IP "\fBdeplist\fP" Produces a list of all dependencies and what packages provide those dependencies for the given packages. As of 3.2.30 it now just shows the latest version of each package that matches (this can be changed by using --showduplicates) and it only shows the newest providers (which can be changed by using --verbose). .IP .IP "\fBrepolist\fP" Produces a list of configured repositories. The default is to list all enabled repositories. If you pass \-v, for verbose mode, more information is listed. If the first argument is 'enabled', 'disabled' or 'all' then the command will list those types of repos. You can pass repo id or name arguments, or wildcards which to match against both of those. However if the id or name matches exactly then the repo will be listed even if you are listing enabled repos. and it is disabled. In non-verbose mode the first column will start with a '*' if the repo. has metalink data and the latest metadata is not local. For non-verbose mode the last column will also display the number of packages in the repo. and (if there are any user specified excludes) the number of packages excluded. One last special feature of repolist, is that if you are in non-verbose mode then yum will ignore any repo errors and output the information it can get (Eg. "yum clean all; yum -C repolist" will output something, although the package counts/etc. will be zeroed out). .IP .IP "\fBversion\fP" Produces a "version" of the rpmdb, and of the enabled repositories if "all" is given as the first argument. You can also specify version groups in the version-groups config. file. If you pass \-v, for verbose mode, more 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 transactions (assuming the history_record config. option is set). You can use info/list/packages-list/summary to view what happened, undo/redo/rollback to act on that information and new to start a new history file. The info/list/summary commands take either a transaction id or a package (with wildcards, as in \fBSpecifying package names\fP), all three can also be passed no arguments. list can be passed the keyword "all" to list all the transactions. The packages-list command takes a package (with wildcards, as in \fBSpecifying package names\fP). The undo/redo/rollback commands take either a single transaction id or the keyword last and an offset from the last transaction (Eg. if you've done 250 transactions, "last" refers to transaction 250, and "last-4" refers to transaction 246). The undo/redo commands act on the specified transaction, undo'ing or repeating the work of that transaction. While the rollback command will undo all transactions upto the point of the specified transaction. For example, if you have 3 transactions, where package A; B and C where installed respectively. Then "undo 1" will try to remove pacakge A, "redo 1" will try to install package A (if it is not still installed), and "rollback 1" will try to remove packages B and C. Note that after a "rollback 1" you will have a fourth transaction, although the ending rpmdb version (see: yum version) should be the same in transactions 1 and 4. The addon-info command takes a transaction ID, and the packages-list command takes a package (with wildcards). In "history list" you can change the behaviour of the 2nd column via. the configuration option history_list_view. In "history list" output the Altered column also gives some extra information if there was something not good with the transaction (this is also shown at the end of the package column in the packages-list command). .I \fB>\fR - The rpmdb was changed, outside yum, after the transaction. .br .I \fB<\fR - The rpmdb was changed, outside yum, before the transaction. .br .I \fB*\fR - The transaction aborted before completion. .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" Checks the local rpmdb and produces information on any problems it finds. You can pass the check command the arguments "dependencies" or "duplicates", to limit the checking that is performed (the default is "all" which does both). The info command can also take ranges of transaction ids, of the form start..end, which will then display a merged history as if all the transactions in the range had happened at once\&. .br Eg. "history info 1..4" will merge the first four transactions and display them as a single transaction. .IP .IP "\fBhelp\fP" Produces help, either for all commands or if given a command name then the help for that particular command\&. .IP .PP .SH "GENERAL OPTIONS" Most command line options can be set using the configuration file as well and the descriptions indicate the necessary configuration option to set\&. .PP .IP "\fB\-h, \-\-help\fP" Help; display a help message and then quit\&. .IP "\fB\-y, \-\-assumeyes\fP" Assume yes; assume that the answer to any question which would be asked is yes\&. .br Configuration Option: \fBassumeyes\fP .IP "\fB\-c, \-\-config=[config file]\fP" Specifies the config file location - can take HTTP and FTP URLs and local file paths\&. .br .IP "\fB\-q, \-\-quiet\fP" Run without output. Note that you likely also want to use \-y\&. .br .IP "\fB\-v, \-\-verbose\fP" Run with a lot of debugging output\&. .br .IP "\fB\-d, \-\-debuglevel=[number]\fP" Sets the debugging level to [number] \- turns up or down the amount of things that are printed\&. Practical range: 0 - 10 .br Configuration Option: \fBdebuglevel\fP .IP "\fB\-e, \-\-errorlevel=[number]\fP" Sets the error level to [number] Practical range 0 \- 10. 0 means print only critical errors about which you must be told. 1 means print all errors, even ones that are not overly important. 1+ means print more errors (if any) \-e 0 is good for cron jobs. .br Configuration Option: \fBerrorlevel\fP .IP "\fB\-\-rpmverbosity=[name]\fP" Sets the debug level to [name] for rpm scriplets. 'info' is the default, other options are: 'critical', 'emergency', 'error', 'warn' and 'debug'. .br Configuration Option: \fBrpmverbosity\fP .IP "\fB\-R, \-\-randomwait=[time in minutes]\fP" Sets the maximum amount of time yum will wait before performing a command \- it randomizes over the time. .IP "\fB\-C, \-\-cacheonly\fP" Tells yum to run entirely from system cache - does not download or update any headers unless it has to to perform the requested action. If you're using this as a user yum will not use the tempcache for the user but will only use the system cache in the system cachedir. .IP "\fB\-\-version\fP" Reports the \fByum\fP version number and installed package versions for everything in history_record_packages (can be added to by plugins). .IP "\fB\-\-showduplicates\fP" Doesn't limit packages to their latest versions in the info, list and search commands (will also affect plugins which use the doPackageLists() API). .IP "\fB\-\-installroot=root\fP" Specifies an alternative installroot, relative to which all packages will be installed. Think of this like doing "chroot yum" except using \-\-installroot allows yum to work before the chroot is created. Note: You may also want to use the option \-\-releasever=/ when creating the installroot as otherwise the $releasever value is taken from the rpmdb within the installroot (and thus. will be empty, before creation). .br Configuration Option: \fBinstallroot\fP .IP "\fB\-\-enablerepo=repoidglob\fP" Enables specific repositories by id or glob that have been disabled in the configuration file using the enabled=0 option. .br Configuration Option: \fBenabled\fP .IP "\fB\-\-disablerepo=repoidglob\fP" Disables specific repositories by id or glob. .br Configuration Option: \fBenabled\fP .IP "\fB\-\-obsoletes\fP" This option only has affect for an update, it enables \fByum\fP\'s obsoletes processing logic. For more information see the \fBupdate\fP command above. .br Configuration Option: \fBobsoletes\fP .IP "\fB\-x, \-\-exclude=package\fP" Exclude a specific package by name or glob from updates on all repositories. Configuration Option: \fBexclude\fP .br .IP "\fB\-\-color=[always|auto|never]\fP" Display colorized output automatically, depending on the output terminal, always (using ANSI codes) or never. Note that some commands (Eg. list and info) will do a little extra work when color is enabled. Configuration Option: \fBcolor\fP .br .IP "\fB\-\-disableexcludes=[all|main|repoid]\fP" Disable the excludes defined in your config files. Takes one of three options: .br all == disable all excludes .br main == disable excludes defined in [main] in yum.conf .br repoid == disable excludes defined for that repo .br .IP "\fB\-\-disableplugin=plugin\fP" Run with one or more plugins disabled, the argument is a comma separated list of wildcards to match against plugin names. .br .IP "\fB\-\-noplugins\fP" Run with all plugins disabled. .br Configuration Option: \fBplugins\fP .IP "\fB\-\-nogpgcheck\fP" Run with GPG signature checking disabled. .br Configuration Option: \fBgpgcheck\fP .IP "\fB\-\-skip\-broken\fP" Resolve depsolve problems by removing packages that are causing problems from the transaction. .br Configuration Option: \fBskip_broken\fP .br .IP "\fB\-\-releasever=version\fP" Pretend the current release version is the given string. This is very useful when combined with \-\-installroot. You can also use \-\-releasever=/ to take the releasever information from outside the installroot. Note that with the default upstream cachedir, of /var/cache/yum, using this option will corrupt your cache (and you can use $releasever in your cachedir configuration to stop this). .PP .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 version of the package\&. .IP .IP "\fBOUTPUT\fP" The format of the output of yum list is: name.arch [epoch:]version-release repo or \@installed-from-repo .IP "\fByum list [all | glob_exp1] [glob_exp2] [\&.\&.\&.]\fP" List all available and installed packages\&. .IP "\fByum list available [glob_exp1] [\&.\&.\&.]\fP" List all packages in the yum repositories available to be installed\&. .IP .IP "\fByum list updates [glob_exp1] [\&.\&.\&.]\fP" List all packages with updates available in the yum repositories\&. .IP .IP "\fByum list installed [glob_exp1] [\&.\&.\&.]\fP" List the packages specified by \fIargs\fP\&. If an argument does not match the name of an available package, it is assumed to be a shell\-style glob and any matches are printed\&. .IP .IP "\fByum list extras [glob_exp1] [\&.\&.\&.]\fP" List the packages installed on the system that are not available in any yum repository listed in the config file. .IP .IP "\fByum list obsoletes [glob_exp1] [\&.\&.\&.]\fP" List the packages installed on the system that are obsoleted by packages in any yum repository listed in the config file. .IP .IP "\fByum list recent\fP" List packages recently added into the repositories. This is often not helpful, but what you may really want to use is "yum list-updateinfo new" from the security yum plugin. .IP .PP .SH "SPECIFYING PACKAGE NAMES" A package can be referred to for install, update, remove, list, info etc with any of the following as well as globs of any of the following: .IP .br \fBname\fP .br \fBname.arch\fP .br \fBname-ver\fP .br \fBname-ver-rel\fP .br \fBname-ver-rel.arch\fP .br \fBname-epoch:ver-rel.arch\fP .br \fBepoch:name-ver-rel.arch\fP .IP For example: \fByum remove kernel-2.4.1-10.i686\fP this will remove this specific kernel-ver-rel.arch. .IP Or: \fByum list available 'foo*'\fP will list all available packages that match 'foo*'. (The single quotes will keep your shell from expanding the globs.) .IP .PP .SH "CLEAN OPTIONS" The following are the ways which you can invoke \fByum\fP in clean mode. Note that "all files" in the commands below means "all files in currently enabled repositories". If you want to also clean any (temporarily) disabled repositories you need to use \fB\-\-enablerepo='*'\fP option. .IP "\fByum clean expire-cache\fP" Eliminate the local data saying when the metadata and mirrorlists were downloaded for each repo. This means yum will revalidate the cache for each repo. next time it is used. However if the cache is still valid, nothing significant was deleted. .IP "\fByum clean packages\fP" Eliminate any cached packages from the system. Note that packages are not automatically deleted after they are downloaded. .IP "\fByum clean headers\fP" Eliminate all of the header files, which old versions of yum used for dependency resolution. .IP "\fByum clean metadata\fP" Eliminate all of the files which yum uses to determine the remote availability of packages. Using this option will force yum to download all the metadata the next time it is run. .IP "\fByum clean dbcache\fP" Eliminate the sqlite cache used for faster access to metadata. Using this option will force yum to download the sqlite metadata the next time it is run, or recreate the sqlite metadata if using an older repo. .IP "\fByum clean rpmdb\fP" Eliminate any cached data from the local rpmdb. .IP "\fByum clean plugins\fP" Tell any enabled plugins to eliminate their cached data. .IP "\fByum clean all\fP" Does all of the above. .PP .SH "PLUGINS" Yum can be extended through the use of plugins. A plugin is a Python ".py" file which is installed in one of the directories specified by the \fBpluginpath\fP option in yum.conf. For a plugin to work, the following conditions must be met: .LP 1. The plugin module file must be installed in the plugin path as just described. .LP 2. The global \fBplugins\fP option in /etc/yum/yum.conf must be set to `1'. .LP 3. A configuration file for the plugin must exist in /etc/yum/pluginconf.d/.conf and the \fBenabled\fR setting in this file must set to `1'. The minimal content for such a configuration file is: .IP [main] .br enabled = 1 .LP See the \fByum.conf(5)\fR man page for more information on plugin related configuration options. .PP .SH "FILES" .nf /etc/yum/yum.conf /etc/yum/version-groups.conf /etc/yum/repos.d/ /etc/yum/pluginconf.d/ /var/cache/yum/ .fi .PP .SH "SEE ALSO" .nf .I pkcon (1) .I yum.conf (5) .I yum-updatesd (8) .I package-cleanup (1) .I repoquery (1) .I yum-complete-transaction (1) .I yumdownloader (1) .I yum-utils (1) .I yum-security (8) http://yum.baseurl.org/ http://yum.baseurl.org/wiki/Faq yum search yum .fi .PP .SH "AUTHORS" .nf See the Authors file included with this program. .fi .PP .SH "BUGS" There of course aren't any bugs, but if you find any, you should first consult the FAQ mentioned above and then email the mailing list: yum@lists.baseurl.org or filed in bugzilla. .fi yum-3.4.3/docs/yum.conf.50000664000076400007640000007706011602434452014114 0ustar jamesjames.TH "yum.conf" "5" "" "Seth Vidal" "yum configuration file" .SH "NAME" .LP \fByum.conf\fR \- Configuration file for \fByum(8)\fR. .SH "DESCRIPTION" .LP Yum uses a configuration file at \fB/etc/yum/yum.conf\fR. .LP Additional configuration files are also read from the directories set by the \fBreposdir\fR option (default is `/etc/yum/repos.d'). See the \fBreposdir\fR option below for further details. .SH "PARAMETERS" .LP There are two types of sections in the yum configuration file(s): main and repository. Main defines all global configuration options. There should be only one main section. The repository section(s) define the configuration for each repository/server. There should be one or more repository sections. .SH "[main] OPTIONS" .LP The [main] section must exist for yum to do anything. It consists of the following options: .IP \fBcachedir\fR Directory where yum should store its cache and db files. The default is `/var/cache/yum'. .IP \fBpersistdir\fR Directory where yum should store information that should persist over multiple runs. The default is `/var/lib/yum'. .IP \fBkeepcache\fR Either `1' or `0'. Determines whether or not yum keeps the cache of headers and packages after successful installation. Default is '1' (keep files) .br .IP \fBreposdir\fR A list of directories where yum should look for .repo files which define repositories to use. Default is `/etc/yum/repos.d'. Each file in this directory should contain one or more repository sections as documented in \fB[repository] options\fR below. These will be merged with the repositories defined in /etc/yum/yum.conf to form the complete set of repositories that yum will use. .IP \fBdebuglevel\fR Debug message output level. Practical range is 0\-10. Default is `2'. .IP \fBerrorlevel\fR Error message output level. Practical range is 0\-10. Default is `2'. .IP \fBrpmverbosity\fR 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 \fBprotected_multilib\fR Either `1' or `0'. This tells yum whether or not it should perform a check to make sure that multilib packages are the same version. For example, if this option is off (rpm behaviour) pkgA-1.x86_64 and pkgA-2.i386 can be installed at the same time. However this is very rarely desired. Install only packages, like the kernel, are exempt from this check. The default is `1'. .IP \fBlogfile\fR Full directory and file name for where yum should write its log file. .IP \fBgpgcheck\fR Either `1' or `0'. This tells yum whether or not it should perform a GPG signature check on packages. When this is set in the [main] section it sets the default for all repositories. The default is `0'. \fBlocalpkg_gpgcheck\fR Either `1' or `0'. This tells yum whether or not it should perform a GPG signature check on local packages (packages in a file, not in a repositoy). The default is `0'. .IP \fBrepo_gpgcheck\fR Either `1' or `0'. This tells yum whether or not it should perform a GPG signature check on the repodata. When this is set in the [main] section it sets the default for all repositories. The default is `0'. .IP \fBskip_broken\fR Either `1' or `0'. Resolve depsolve problems by removing packages that are causing problems from the transaction. .IP \fBassumeyes\fR Either `1' or `0'. Determines whether or not yum prompts for confirmation of critical actions. Default is `0' (do prompt). .br Command-line option: \fB\-y\fP .IP \fBalwaysprompt\fR Either `1' or `0'. Without this option, yum will not prompt for confirmation when the list of packages to be installed exactly matches those given on the command line. Unless \fBassumeyes\fR is enabled, it will still prompt for package removal, or when additional packages need to be installed to fulfill dependencies. Default is `1'. .br .IP \fBtolerant\fR Either `1' or `0'. If enabled, then yum will be tolerant of errors on the command line with regard to packages. For example: if you request to install foo, bar and baz and baz is installed; yum won't error out complaining that baz is already installed. Default to `0' (not tolerant). .br Command-line option: \fB\-t\fP .IP \fBexclude\fR List of packages to exclude from updates or installs. This should be a space separated list. Shell globs using wildcards (eg. * and ?) are allowed. .IP \fBexactarch\fR Either `1' or `0'. Set to `1' to make yum update only update the architectures of packages that you have installed. ie: with this enabled yum will not install an i686 package to update an i386 package. Default is `1'. .IP \fBinstallonlypkgs \fR 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. .IP \fBinstallonly_limit \fR Number of packages listed in installonlypkgs to keep installed at the same time. Setting to 0 disables this feature. Default is '0'. Note that this functionality used to be in the "installonlyn" plugin, where this option was altered via. tokeep. Note that as of version 3.2.24, yum will now look in the yumdb for a installonly attribute on installed packages. If that attribute is "keep", then they will never be removed. .IP \fBkernelpkgnames \fR List of package names that are kernels. This is really only here for the updating of kernel packages and should be removed out in the yum 2.1 series. .IP \fBshowdupesfromrepos\fR Either `0' or `1'. Set to `1' if you wish to show any duplicate packages from any repository, from package listings like the info or list commands. Set to `0' if you want only to see the newest packages from any repository. Default is `0'. .IP \fBobsoletes \fR This option only has affect during an \fBupdate\fR. It enables yum's obsoletes processing logic. Useful when doing distribution level upgrades. See also the yum \fBupgrade\fR command documentation for more details (yum(8)). Default is `true'. .br Command-line option: \fB\-\-obsoletes\fP .IP \fBoverwrite_groups \fR Either `0' or `1'. Used to determine yum's behaviour if two or more repositories offer the package groups with the same name. If \fBoverwrite_groups\fR is `1' then the group packages of the last matching 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). .IP \fBgroup_package_types\fR List of the following: optional, default, mandatory. Tells yum which type of packages in groups will be installed when 'groupinstall' is called. Default is: default, mandatory .IP \fBinstallroot \fR Specifies an alternative installroot, relative to which all packages will be installed. .br Command-line option: \fB\-\-installroot\fP .IP \fBdistroverpkg\fR The package used by yum to determine the "version" of the distribution. This can be any installed package. Default is `redhat-release'. You can see what provides this manually by using: "yum whatprovides redhat-release". .IP \fBdiskspacecheck\fR Either `0' or `1'. Set this to `0' to disable the checking for sufficient 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', '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. .IP \fBrecent\fR Number of days back to look for `recent' packages added to a repository. Used by the \fBlist recent\fR command. Default is `7'. .IP \fBretries\fR Set the number of times any attempt to retrieve a file should retry before returning an error. Setting this to `0' makes yum try forever. Default is `10'. .IP \fBkeepalive \fR Either `0' or `1'. Set whether HTTP keepalive should be used for HTTP/1.1 servers that support it. This can improve transfer speeds by using one connection when downloading multiple files from a repository. Default is `1'. .IP \fBtimeout \fR Number of seconds to wait for a connection before timing out. Defaults to 30 seconds. This may be too short of a time for extremely overloaded sites. .IP \fBhttp_caching\fR Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values: `all' means that all HTTP downloads should be cached. `packages' means that only RPM package downloads should be cached (but not repository metadata downloads). `none' means that no HTTP downloads should be cached. The default is `all'. This is recommended unless you are experiencing caching related issues. Try to at least use `packages' to minimize load on repository servers. .IP \fBthrottle \fR Enable bandwidth throttling for downloads. This option can be expressed as a absolute data rate in bytes/sec. An SI prefix (k, M or G) may be appended to the bandwidth value (eg. `5.5k' is 5.5 kilobytes/sec, `2M' is 2 Megabytes/sec). Alternatively, this option can specify the percentage of total bandwidth to use (eg. `60%'). In this case the \fBbandwidth\fR option should be used to specify the maximum available bandwidth. Set to `0' to disable bandwidth throttling. This is the default. .IP \fBbandwidth \fR Use to specify the maximum available network bandwidth in bytes/second. Used with the \fBthrottle\fR option (above). If \fBthrottle\fR is a percentage and \fBbandwidth\fR is `0' then bandwidth throttling will be disabled. If \fBthrottle\fR is expressed as a data rate (bytes/sec) then this option is ignored. Default is `0' (no bandwidth throttling). .IP \fBsslcacert \fR Path to the directory containing the databases of the certificate authorities yum should use to verify SSL certificates. Defaults to none - uses system default .IP \fBsslverify \fR Boolean - should yum verify SSL certificates/hosts at all. Defaults to True. Note that the plugin yum-rhn-plugin will force this value to true, and may alter other ssl settings (like hostname checking), even if it the machine is not registered. .IP \fBsslclientcert \fR Path to the SSL client certificate yum should use to connect to repos/remote sites Defaults to none. Note that if you are using curl compiled against NSS (default in Fedora/RHEL), curl treats sslclientcert values with the same basename as _identical_. This version of yum will check that this isn't true and output an error when the repositories "foo" and "bar" violate this, like so: sslclientcert basename shared between foo and bar .IP \fBsslclientkey \fR Path to the SSL client key yum should use to connect to repos/remote sites Defaults to none. .IP \fBhistory_record \fR Boolean - should yum record history entries for transactions. This takes some disk space, and some extra time in the transactions. But it allows how to know a 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 transaction. yum plugins have an API to add themselves to this, so it should not normally be necessary to add packages here. Not that this is also used for the packages to look for in \-\-version. Defaults to rpm, yum, yum-metadata-parser. .IP \fBhistory_list_view \fR Which column of information to display in the "yum history list" command. There are currently three options: users, cmds (or commands), auto. Older versions of yum acted like "users", which always outputs the user who initiated the yum transaction. You can now specify "commands" which will instead always output the command line of the transaction. You can also specify "single-user-commands" which will display the users if there are more than one, otherwise it will display the command line. You can also specify "default" which currently selects "single-user-commands". .IP \fBcommands\fR List of functional commands to run if no functional commands are specified on the command line (eg. "update foo bar baz quux"). None of the short options (eg. \-y, \-e, \-d) are accepted for this option. .IP \fBsyslog_ident \fR Identification (program name) for syslog messages. .IP \fBsyslog_facility \fR 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 URL to the proxy server that yum should use. .IP \fBproxy_username \fR username to use for proxy .IP \fBproxy_password \fR password for this proxy .IP \fBusername \fR username to use for basic authentication to a repo or really any url. .IP \fBpassword \fR password to use with the username for basic authentication. .IP \fBplugins \fR Either `0' or `1'. Global switch to enable or disable yum plugins. Default is `0' (plugins disabled). See the \fBPLUGINS\fR section of the \fByum(8)\fR man for more information on installing yum plugins. .IP \fBpluginpath \fR A list of directories where yum should look for plugin modules. Default is `/usr/share/yum-plugins' and `/usr/lib/yum-plugins'. .IP \fBpluginconfpath \fR A list of directories where yum should look for plugin configuration files. Default is `/etc/yum/pluginconf.d'. .IP \fBmetadata_expire \fR Time (in seconds) after which the metadata will expire. So that if the current metadata downloaded is less than this many seconds old then yum will not update the metadata against the repository. If you find that yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a d, h or m respectively. The default is 6 hours, to compliment yum-updatesd running once an hour. It's also possible to use the word "never", meaning that the metadata will never expire. Note that when using a metalink file the metalink must always be newer than the metadata for the repository, due to the validation, so this timeout also applies to the metalink file. .IP \fBmirrorlist_expire \fR Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that yum is not downloading the mirrorlists as often as you would like lower the value of this option. .IP \fBmdpolicy \fR You can select from different metadata download policies depending on how much data you want to download with the main repository metadata index. The advantages of downloading more metadata with the index is that you can't get into situations where you need to use that metadata later and the versions available aren't compatible (or the user lacks privileges) and that if the metadata is corrupt in any way yum will revert to the previous metadata. `instant' - Just download the new metadata index, this is roughly what yum always did, however it now does some checking on the index and reverts if it classifies it as bad. `group:primary' - Download the primary metadata with the index. This contains most of the package information and so is almost always required anyway. This is the default. `group:small' - With the primary also download the updateinfo metadata, this is required for yum-security operations and it also used in the graphical clients. This file also tends to be significantly smaller than most others. `group:main' - With the primary and updateinfo download the filelists metadata and the group metadata. The filelists data is required for operations like "yum install /bin/bash", and also some dependency resolutions require it. The group data is used in some graphical clients and for group operations like "yum grouplist Base". `group:all' - Download all metadata listed in the index, currently the only one not listed above is the other metadata, which contains the changelog information which is used by yum-changelog. This is what "yum makecache" uses. .IP \fBmultilib_policy \fR Can be set to 'all' or 'best'. All means install all possible arches for any package you want to install. Therefore yum install foo will install foo.i386 and foo.x86_64 on x86_64, if it is available. Best means install the best arch for this platform, only. .IP \fBbugtracker_url \fR URL where bugs should be filed for yum. Configurable for local versions or distro-specific bugtrackers. .IP \fBcolor \fR Whether to display colorized output automatically, depending on the output terminal, can be changed to always (using ANSI codes) or never. Default is `auto'. Possible values are: auto, never, always. Command-line option: \fB\-\-color\fP .IP \fBcolor_list_installed_older \fR The colorization/highlighting for packages in list/info installed which are older than the latest available package with the same name and arch. Default is `bold'. Possible values are a comma separated list containing: bold, blink, dim, reverse, underline, fg:black, fg:red, fg:green, fg:yellow, fg:blue, fg:magenta, fg:cyan, fg:white, bg:black, bg:red, bg:green, bg:yellow, bg:blue, bg:magenta, bg:cyan, bg:white. .IP \fBcolor_list_installed_newer \fR The colorization/highlighting for packages in list/info installed which are newer than the latest available package with the same name and arch. Default is `bold,yellow'. See color_list_installed_older for possible values. .IP \fBcolor_list_installed_reinstall \fR The colorization/highlighting for packages in list/info installed which is the same version as the latest available package with the same name and arch. Default is `normal'. See color_list_installed_older for possible values. .IP \fBcolor_list_installed_extra \fR The colorization/highlighting for packages in list/info installed which has no available package with the same name and arch. Default is `bold,red'. See color_list_installed_older for possible values. .IP \fBcolor_list_available_upgrade \fR The colorization/highlighting for packages in list/info available which is an upgrade for the latest installed package with the same name and arch. Default is `bold,blue'. See color_list_installed_older for possible values. .IP \fBcolor_list_available_downgrade \fR The colorization/highlighting for packages in list/info available which is a downgrade for the latest installed package with the same name and arch. Default is `dim,cyan'. See color_list_installed_older for possible values. .IP \fBcolor_list_available_install \fR The colorization/highlighting for packages in list/info available which has no installed package with the same name and arch. Default is `normal'. See color_list_installed_older for possible values. .IP \fBcolor_list_available_reinstall \fR The colorization/highlighting for packages in list/info available which is the same version as the installed package with the same name and arch. Default is `bold,underline,green. See color_list_installed_older for possible values. .IP \fBcolor_search_match \fR The colorization/highlighting for text matches in search. Default is `bold'. See color_list_installed_older for possible values. .IP \fBcolor_update_installed \fR The colorization/highlighting for packages in the "updates list" which are installed. The updates list is what is printed when you run "yum update", "yum list updates", "yum list obsoletes" and "yum check-update". Default is `normal'. See color_list_installed_older for possible values. .IP \fBcolor_update_local \fR The colorization/highlighting for packages in the "updates list" which are already downloaded. The updates list is what is printed when you run "yum update", "yum list updates", "yum list obsoletes" and "yum check-update". Default is `bold'. See color_list_installed_older for possible values. .IP \fBcolor_update_remote \fR The colorization/highlighting for packages in the "updates list" which need to be downloaded. The updates list is what is printed when you run "yum update", "yum list updates", "yum list obsoletes" and "yum check-update". Default is `normal'. See color_list_installed_older for possible values. .IP \fBclean_requirements_on_remove \fR When removing packages (by removal, update or obsoletion) go through each package's dependencies. If any of them are no longer required by any other package then also mark them to be removed. Boolean (1, 0, True, False, yes,no) Defaults to False .SH "[repository] OPTIONS" .LP The repository section(s) take the following form: .IP \fBExample\fP: [repositoryid] .br name=Some name for this repository .br baseurl=url://path/to/repository/ .br .IP \fBrepositoryid\fR Must be a unique name for each repository, one word. .IP \fBname\fR A human readable string describing the repository. .IP \fBbaseurl\fR Must be a URL to the directory where the yum repository's `repodata' directory lives. Can be an http://, ftp:// or file:// URL. You can specify multiple URLs in one baseurl statement. The best way to do this is like this: .br [repositoryid] .br name=Some name for this repository .br baseurl=url://server1/path/to/repository/ .br url://server2/path/to/repository/ .br url://server3/path/to/repository/ .br If you list more than one baseurl= statement in a repository you will find yum will ignore the earlier ones and probably act bizarrely. Don't do this, you've been warned. You can use HTTP basic auth by prepending "user:password@" to the server name in the baseurl line. For example: "baseurl=http://user:passwd@example.com/". .IP \fBmetalink\fR Specifies a URL to a metalink file for the repomd.xml, a list of mirrors for the entire repository are generated by converting the mirrors for the repomd.xml file to a baseurl. The metalink file also contains the latest timestamp from the data in the repomd.xml, the length of the repomd.xml and checksum data. This data is checked against any downloaded repomd.xml file and all of the information from the metalink file must match. This can be used instead of or with the \fBbaseurl\fR option. Substitution variables, described below, can be used with this option. This option disables the mirrorlist option. As a special hack is the mirrorlist URL contains the word "metalink" then the value of mirrorlist is copied to metalink (if metalink is not set). .IP \fBmirrorlist\fR Specifies a URL to a file containing a list of baseurls. This can be used instead of or with the \fBbaseurl\fR option. Substitution variables, described below, can be used with this option. As a special hack is the mirrorlist URL contains the word "metalink" then the value of mirrorlist is copied to metalink (if metalink is not set). .IP \fBenabled\fR Either `1' or `0'. This tells yum whether or not use this repository. .IP \fBgpgcheck\fR Either `1' or `0'. This tells yum whether or not it should perform a GPG signature check on the packages gotten from this repository. .IP \fBrepo_gpgcheck\fR Either `1' or `0'. This tells yum whether or not it should perform a GPG signature check on the repodata from this repository. .IP \fBgpgkey\fR A URL pointing to the ASCII-armored GPG key file for the repository. This option is used if yum needs a public key to verify a package and the required key hasn't been imported into the RPM database. If this option is set, yum will automatically import the key from the specified URL. You will be prompted before the key is installed unless the \fBassumeyes\fR option is set. Multiple URLs may be specified here in the same manner as the \fBbaseurl\fR option (above). If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed. .IP \fBgpgcakey\fR A URL pointing to the ASCII-armored CA key file for the repository. This is a normal gpg public key - but this key will be used to validate detached signatures of all other keys. The idea is you are asked to confirm import for this key. After that any other gpg key needed for package or repository verification, if it has a detached signature which matches this key will be automatically imported without user confirmation. .IP \fBexclude\fR Same as the [main] \fBexclude\fR option but only for this repository. Substitution variables, described below, are honored here. .IP \fBincludepkgs\fR Inverse of exclude. This is a list of packages you want to use from a repository. If this option lists only one package then that is all yum will ever see from the repository. Defaults to an empty list. Substitution variables, described below, are honored here. .IP \fBenablegroups\fR Either `0' or `1'. Determines whether yum will allow the use of package groups for this repository. Default is `1' (package groups are allowed). .IP \fBfailovermethod\fR Either `roundrobin' or `priority'. `roundrobin' randomly selects a URL out of the list of URLs to start with and proceeds through each of them as it encounters a failure contacting the host. `priority' starts from the first baseurl listed and reads through them sequentially. \fBfailovermethod\fR defaults to `roundrobin' if not specified. .IP \fBkeepalive\fR Either `1' or `0'. This tells yum whether or not HTTP/1.1 keepalive should be used with this repository. See the global option in the [main] section above for more information. .IP \fBtimeout\fR Overrides the \fBtimeout\fR option from the [main] section for this repository. .IP \fBhttp_caching\fR Overrides the \fBhttp_caching\fR option from the [main] section for this repository. .IP \fBretries\fR Overrides the \fBretries\fR option from the [main] section for this repository. .IP \fBthrottle\fR Overrides the \fBthrottle\fR option from the [main] section for this repository. .IP \fBbandwidth\fR Overrides the \fBbandwidth\fR option from the [main] section for this repository. .IP \fBsslcacert \fR Overrides the \fBsslcacert\fR option from the [main] section for this repository. .IP \fBsslverify \fR Overrides the \fBsslverify\fR option from the [main] section for this repository. .IP \fBsslclientcert \fR Overrides the \fBsslclientcert\fR option from the [main] section for this repository. .IP \fBsslclientkey \fR Overrides the \fBsslclientkey\fR option from the [main] section for this repository. .IP \fBmetadata_expire \fR Overrides the \fBmetadata_expire\fR option from the [main] section for this repository. .IP \fBmirrorlist_expire \fR Overrides the \fBmirrorlist_expire\fR option from the [main] section for this repository. .IP \fBproxy \fR URL to the proxy server for this repository. Set to '_none_' to disable the global proxy setting for this repository. If this is unset it inherits it from the global setting .IP \fBproxy_username \fR username to use for proxy. If this is unset it inherits it from the global setting .IP \fBproxy_password \fR password for this proxy. If this is unset it inherits it from the global setting .IP \fBusername \fR username to use for basic authentication to a repo or really any url. If this is unset it inherits it from the global setting .IP \fBpassword \fR password to use with the username for basic authentication. If this is unset it inherits it from the global setting .IP \fBcost \fR relative cost of accessing this repository. Useful for weighing one repo's packages as greater/less than any other. defaults to 1000 .IP \fBskip_if_unavailable \fR If set to True yum will continue running if this repository cannot be contacted for any reason. This should be set carefully as all repos are consulted for any given command. Defaults to False. .IP .SH "URL INCLUDE SYNTAX" .LP The inclusion of external configuration files is supported for /etc/yum/yum.conf and the .repo files in the /etc/yum/repos.d directory. To include a URL, use a line of the following format: include=url://to/some/location 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 configuration files. They are available in the values of several options including \fBname\fR, \fBbaseurl\fR and \fBcommands\fB. .LP .IP \fB$releasever\fR This will be replaced with the value of the version of the package listed in \fBdistroverpkg\fR. This defaults to the version of `redhat-release' package. .IP \fB$arch\fR This will be replaced with your architecture as listed by os.uname()[4] in Python. .IP \fB$basearch\fR This will be replaced with your base architecture in yum. For example, if your $arch is i686 your $basearch will be i386. .IP \fB$uuid\fR This will be replaced with a unique but persistent uuid for this machine. The value that is first generated will be stored in /var/lib/yum/uuid and reused until this file is deleted. .IP \fB$YUM0-$YUM9\fR 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 yum(8) yum-3.4.3/docs/repomd.dtd0000664000076400007640000000230711602434452014243 0ustar jamesjames yum-3.4.3/docs/yum-updatesd.80000664000076400007640000000073411602434452014774 0ustar jamesjames.TH "yum-updatesd" "8" "" "Jeremy Katz" "" .SH "NAME" yum-updatesd \- Update notifier daemon .SH "SYNOPSIS" \fByum-updatesd\fP .SH "DESCRIPTION" .PP \fByum-updatesd\fP provides notification of updates which are available to be applied to your system. This notification can be done either via syslog, email or over dbus. Configuration is done via the \fByum-updatesd.conf(5) \fR file. .PP .SH "SEE ALSO" .nf .I yum(8) .I yum-updatesd.conf(5) http://yum.baseurl.org/ .fi yum-3.4.3/rpmUtils/0000775000076400007640000000000011602434452013145 5ustar jamesjamesyum-3.4.3/rpmUtils/Makefile0000664000076400007640000000111111602434452014577 0ustar jamesjamesPYTHON=python PACKAGE = $(shell basename `pwd`) PYFILES = $(wildcard *.py) PYVER := $(shell $(PYTHON) -c 'import sys; print "%.3s" %(sys.version)') PYSYSDIR := $(shell $(PYTHON) -c 'import sys; print sys.prefix') PYLIBDIR = $(PYSYSDIR)/lib/python$(PYVER) PKGDIR = $(PYLIBDIR)/site-packages/$(PACKAGE) all: echo "Nothing to do" clean: rm -f *.pyc *.pyo *~ install: mkdir -p $(DESTDIR)/$(PKGDIR) for p in $(PYFILES) ; do \ install -m 644 $$p $(DESTDIR)/$(PKGDIR)/$$p; \ done $(PYTHON) -c "import compileall; compileall.compile_dir('$(DESTDIR)/$(PKGDIR)', 1, '$(PKGDIR)', 1)" yum-3.4.3/rpmUtils/transaction.py0000664000076400007640000001331511602434452016047 0ustar jamesjames#!/usr/bin/python # # Client code for Update Agent # Copyright (c) 1999-2002 Red Hat, Inc. Distributed under GPL. # # Adrian Likins # Some Edits by Seth Vidal # # a couple of classes wrapping up transactions so that we # can share transactions instead of creating new ones all over # import rpm import miscutils read_ts = None ts = None # wrapper/proxy class for rpm.Transaction so we can # instrument it, etc easily class TransactionWrapper: def __init__(self, root='/'): self.ts = rpm.TransactionSet(root) self._methods = ['check', 'order', 'addErase', 'addInstall', 'run', 'pgpImportPubkey', 'pgpPrtPkts', 'problems', 'setFlags', 'setVSFlags', 'setProbFilter', 'hdrFromFdno', 'next', 'clean'] self.tsflags = [] self.open = True def __del__(self): # Automatically close the rpm transaction when the reference is lost self.close() def close(self): if self.open: self.ts.closeDB() self.ts = None self.open = False def dbMatch(self, *args, **kwds): if 'patterns' in kwds: patterns = kwds.pop('patterns') else: patterns = [] mi = self.ts.dbMatch(*args, **kwds) for (tag, tp, pat) in patterns: mi.pattern(tag, tp, pat) return mi def __getattr__(self, attr): if attr in self._methods: return self.getMethod(attr) else: raise AttributeError, attr def __iter__(self): return self.ts def getMethod(self, method): # in theory, we can override this with # profile/etc info return getattr(self.ts, method) # push/pop methods so we dont lose the previous # set value, and we can potentiall debug a bit # easier def pushVSFlags(self, flags): self.tsflags.append(flags) self.ts.setVSFlags(self.tsflags[-1]) def popVSFlags(self): del self.tsflags[-1] self.ts.setVSFlags(self.tsflags[-1]) def addTsFlag(self, flag): 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 setScriptFd(self, fd): self.ts.scriptFd = fd.fileno() # def addProblemFilter(self, filt): # curfilter = self.ts.setProbFilter(0) # self.ts.setProbFilter(cutfilter | filt) def test(self, cb, conf={}): """tests the ts we've setup, takes a callback function and a conf dict for flags and what not""" origflags = self.getTsFlags() self.addTsFlag(rpm.RPMTRANS_FLAG_TEST) # FIXME GARBAGE - remove once this is reimplemented elsehwere # KEEPING FOR API COMPLIANCE ONLY if conf.get('diskspacecheck') == 0: self.ts.setProbFilter(rpm.RPMPROB_FILTER_DISKSPACE) tserrors = self.ts.run(cb.callback, '') self.ts.setFlags(origflags) reserrors = [] if tserrors: for (descr, (etype, mount, need)) in tserrors: reserrors.append(descr) return reserrors def returnLeafNodes(self, headers=False): """returns a list of package tuples (n,a,e,v,r) that are not required by any other package on the system If headers is True then it will return a list of (header, index) tuples """ req = {} orphan = [] mi = self.dbMatch() if mi is None: # this is REALLY unlikely but let's just say it for the moment return orphan # prebuild the req dict for h in mi: if h['name'] == 'gpg-pubkey': continue if not h[rpm.RPMTAG_REQUIRENAME]: continue tup = miscutils.pkgTupleFromHeader(h) for r in h[rpm.RPMTAG_REQUIRENAME]: if r not in req: req[r] = set() req[r].add(tup) mi = self.dbMatch() if mi is None: return orphan def _return_all_provides(hdr): """ Return all the provides, via yield. """ # These are done one by one, so that we get lazy loading for prov in hdr[rpm.RPMTAG_PROVIDES]: yield prov for prov in hdr[rpm.RPMTAG_FILENAMES]: yield prov for h in mi: if h['name'] == 'gpg-pubkey': continue preq = 0 tup = miscutils.pkgTupleFromHeader(h) for p in _return_all_provides(h): 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: preq = preq + 1 break if preq == 0: if headers: orphan.append((h, mi.instance())) else: orphan.append(tup) return orphan def initReadOnlyTransaction(root='/'): read_ts = TransactionWrapper(root=root) read_ts.pushVSFlags((rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) return read_ts yum-3.4.3/rpmUtils/updates.py0000664000076400007640000007406611602434452015201 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2004 Duke University import rpmUtils import rpmUtils.miscutils import rpmUtils.arch def _vertup_cmp(tup1, tup2): return rpmUtils.miscutils.compareEVR(tup1, tup2) class Updates: """ This class computes and keeps track of updates and obsoletes. initialize, add installed packages, add available packages (both as unique lists of name, arch, ver, rel, epoch tuples), add an optional dict of obsoleting packages with obsoletes and what they obsolete ie:: foo, i386, 0, 1.1, 1: bar >= 1.1. """ def __init__(self, instlist, availlist): self.installed = instlist # list of installed pkgs (n, a, e, v, r) self.available = availlist # list of available pkgs (n, a, e, v, r) self.rawobsoletes = {} # dict of obsoleting package->[what it obsoletes] self._obsoletes_by_name = None self.obsoleted_dict = {} # obsoleted pkgtup -> [ obsoleting pkgtups ] self.obsoleting_dict = {} # obsoleting pkgtup -> [ obsoleted pkgtups ] self.exactarch = 1 # don't change archs by default self.exactarchlist = set(['kernel', 'kernel-smp', 'glibc', 'kernel-hugemem', 'kernel-enterprise', 'kernel-bigmem', 'kernel-BOOT']) self.myarch = rpmUtils.arch.canonArch # set this if you want to # test on some other arch # otherwise leave it alone self._is_multilib = rpmUtils.arch.isMultiLibArch(self.myarch) self._archlist = rpmUtils.arch.getArchList(self.myarch) self._multilib_compat_arches = rpmUtils.arch.getMultiArchInfo(self.myarch) # make some dicts from installed and available self.installdict = self.makeNADict(self.installed, 1) self.availdict = self.makeNADict(self.available, 0, # Done in doUpdate filter=self.installdict) # holder for our updates dict self.updatesdict = {} self.updating_dict = {} #debug, ignore me self.debug = 0 self.obsoletes = {} def _delFromDict(self, dict_, keys, value): for key in keys: if key not in dict_: continue dict_[key] = filter(value.__ne__, dict_[key]) if not dict_[key]: del dict_[key] def _delFromNADict(self, dict_, pkgtup): (n, a, e, v, r) = pkgtup 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""" if pkgtup not in self.available: return self.available.remove(pkgtup) self._delFromNADict(self.availdict, pkgtup) self._delFromDict(self.updating_dict, self.updatesdict.get(pkgtup, []), pkgtup) self._delFromDict(self.updatesdict, self.updating_dict.get(pkgtup, []), 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)) del self.rawobsoletes[pkgtup] self._delFromDict(self.obsoleted_dict, self.obsoleting_dict.get(pkgtup, []), pkgtup) self._delFromDict(self.obsoleting_dict, self.obsoleted_dict.get(pkgtup, []), pkgtup) def debugprint(self, msg): if self.debug: print msg def makeNADict(self, pkglist, Nonelists, filter=None): """return lists of (e,v,r) tuples as value of a dict keyed on (n, a) optionally will return a (n, None) entry with all the a for that n in tuples of (a,e,v,r)""" returndict = {} for (n, a, e, v, r) in pkglist: if filter and (n, None) not in filter: continue 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 (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 def returnNewest(self, evrlist): """takes a list of (e, v, r) tuples and returns the newest one""" if len(evrlist)==0: raise rpmUtils.RpmUtilsError, "Zero Length List in returnNewest call" if len(evrlist)==1: return evrlist[0] (new_e, new_v, new_r) = evrlist[0] # we'll call the first ones 'newest' for (e, v, r) in evrlist[1:]: rc = rpmUtils.miscutils.compareEVR((e, v, r), (new_e, new_v, new_r)) if rc > 0: new_e = e new_v = v new_r = r return (new_e, new_v, new_r) def returnHighestVerFromAllArchsByName(self, name, archlist, pkglist): """returns a list of package tuples in a list (n, a, e, v, r) takes a package name, a list of archs, and a list of pkgs in (n, a, e, v, r) form.""" returnlist = [] high_vertup = None for pkgtup in pkglist: (n, a, e, v, r) = pkgtup # FIXME: returnlist used to _possibly_ contain things not in # archlist ... was that desired? if name == n and a in archlist: vertup = (e, v, r) if (high_vertup is None or (_vertup_cmp(high_vertup, vertup) < 0)): high_vertup = vertup returnlist = [] if vertup == high_vertup: returnlist.append(pkgtup) return returnlist def condenseUpdates(self): """remove any accidental duplicates in updates""" for tup in self.updatesdict: if len(self.updatesdict[tup]) > 1: mylist = self.updatesdict[tup] self.updatesdict[tup] = rpmUtils.miscutils.unique(mylist) def checkForObsolete(self, pkglist, newest=1): """accept a list of packages to check to see if anything obsoletes them return an obsoleted_dict in the format of makeObsoletedDict""" if self._obsoletes_by_name is None: self._obsoletes_by_name = {} for pkgtup, obsoletes in self.rawobsoletes.iteritems(): for name, flag, version in obsoletes: self._obsoletes_by_name.setdefault(name, []).append( (flag, version, pkgtup) ) obsdict = {} # obseleting package -> [obsoleted package] for pkgtup in pkglist: name = pkgtup[0] for obs_flag, obs_version, obsoleting in self._obsoletes_by_name.get(name, []): if obs_flag in [None, 0] and name == obsoleting[0]: continue if rpmUtils.miscutils.rangeCheck( (name, obs_flag, obs_version), pkgtup): obsdict.setdefault(obsoleting, []).append(pkgtup) if not obsdict: return {} obslist = obsdict.keys() if newest: obslist = self._reduceListNewestByNameArch(obslist) returndict = {} for new in obslist: for old in obsdict[new]: if old not in returndict: returndict[old] = [] returndict[old].append(new) return returndict def doObsoletes(self): """figures out what things available obsolete things installed, returns them in a dict attribute of the class.""" obsdict = {} # obseleting package -> [obsoleted package] # this needs to keep arch in mind # if foo.i386 obsoletes bar # it needs to obsoletes bar.i386 preferentially, not bar.x86_64 # if there is only one bar and only one foo then obsolete it, but try to # match the arch. # look through all the obsoleting packages look for multiple archs per name # if you find it look for the packages they obsolete # obs_arches = {} for (n, a, e, v, r) in self.rawobsoletes: 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 (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 (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) if self.returnNewest((pkgver, installedver)) == installedver: willInstall = 0 break if rpm_a != arch and rpm_a in obs_arches[name]: willInstall = 0 if willInstall: if pkgtup not in obsdict: obsdict[pkgtup] = [] obsdict[pkgtup].append((obs_n, rpm_a, rpm_e, rpm_v, rpm_r)) self.obsoletes = obsdict self.makeObsoletedDict() def makeObsoletedDict(self): """creates a dict of obsoleted packages -> [obsoleting package], this is to make it easier to look up what package obsoletes what item in the rpmdb""" self.obsoleted_dict = {} for new in self.obsoletes: for old in self.obsoletes[new]: if old not in self.obsoleted_dict: self.obsoleted_dict[old] = [] self.obsoleted_dict[old].append(new) self.obsoleting_dict = {} for obsoleted, obsoletings in self.obsoleted_dict.iteritems(): for obsoleting in obsoletings: self.obsoleting_dict.setdefault(obsoleting, []).append(obsoleted) def doUpdates(self): """check for key lists as populated then commit acts of evil to determine what is updated and/or obsoleted, populate self.updatesdict """ # best bet is to chew through the pkgs and throw out the new ones early # then deal with the ones where there are a single pkg installed and a # single pkg available # then deal with the multiples # we should take the whole list as a 'newlist' and remove those entries # which are clearly: # 1. updates # 2. identical to the ones in ourdb # 3. not in our archdict at all simpleupdate = [] complexupdate = [] updatedict = {} # (old n, a, e, v, r) : [(new n, a, e, v, r)] # make the new ones a list b/c while we _shouldn't_ # have multiple updaters, we might and well, it needs # to be solved one way or the other newpkgs = self.availdict archlist = self._archlist for (n, a) in newpkgs.keys(): if a not in archlist: # high log here del newpkgs[(n, a)] continue # remove the older stuff - if we're doing an update we only want the # newest evrs for (n, a) in newpkgs: (new_e,new_v,new_r) = self.returnNewest(newpkgs[(n, a)]) for (e, v, r) in newpkgs[(n, a)][:]: if (new_e, new_v, new_r) != (e, v, r): newpkgs[(n, a)].remove((e, v, r)) for (n, a) in newpkgs: # simple ones - look for exact matches or older stuff 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)]) except rpmUtils.RpmUtilsError: continue else: rc = rpmUtils.miscutils.compareEVR((e, v, r), (rpm_e, rpm_v, rpm_r)) if rc <= 0: try: newpkgs[(n, a)].remove((e, v, r)) except ValueError: pass # Now we add the (n, None) entries back... for na in newpkgs.keys(): all_arches = map(lambda x: (na[1], x[0], x[1], x[2]), newpkgs[na]) newpkgs.setdefault((na[0], None), []).extend(all_arches) # get rid of all the empty dict entries: for nakey in newpkgs.keys(): if len(newpkgs[nakey]) == 0: del newpkgs[nakey] # ok at this point our newpkgs list should be thinned, we should have only # the newest e,v,r's and only archs we can actually use for (n, a) in newpkgs: if a is None: # the None archs are only for lookups continue if (n, None) in self.installdict: installarchs = [] availarchs = [] for (a, e, v ,r) in newpkgs[(n, None)]: availarchs.append(a) for (a, e, v, r) in self.installdict[(n, None)]: installarchs.append(a) if len(availarchs) > 1 or len(installarchs) > 1: self.debugprint('putting %s in complex update' % n) complexupdate.append(n) else: #log(4, 'putting %s in simple update list' % name) self.debugprint('putting %s in simple update' % n) simpleupdate.append((n, a)) # we have our lists to work with now # simple cases for (n, a) in simpleupdate: # try to be as precise as possible if n in self.exactarchlist: if (n, a) in self.installdict: (rpm_e, rpm_v, rpm_r) = self.returnNewest(self.installdict[(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 (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: # we could only have 1 arch in our rpmdb and 1 arch of pkg # available - so we shouldn't have to worry about the lists, here # 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 (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 (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)) # complex cases # we're multilib/biarch # we need to check the name.arch in two different trees # one for the multiarch itself and one for the compat arch # ie: x86_64 and athlon(i686-i386) - we don't want to descend # x86_64->i686 # however, we do want to descend x86_64->noarch, sadly. archlists = [] if self._is_multilib: if self.myarch in rpmUtils.arch.multilibArches: biarches = [self.myarch] else: biarches = [self.myarch, rpmUtils.arch.arches[self.myarch]] biarches.append('noarch') multicompat = self._multilib_compat_arches[0] multiarchlist = rpmUtils.arch.getArchList(multicompat) archlists = [ set(biarches), set(multiarchlist) ] # archlists = [ biarches, multiarchlist ] else: archlists = [ set(archlist) ] # archlists = [ archlist ] for n in complexupdate: for thisarchlist in archlists: # we need to get the highest version and the archs that have it # of the installed pkgs tmplist = [] for (a, e, v, r) in self.installdict[(n, None)]: tmplist.append((n, a, e, v, r)) highestinstalledpkgs = self.returnHighestVerFromAllArchsByName(n, thisarchlist, tmplist) hipdict = self.makeNADict(highestinstalledpkgs, 0) if n in self.exactarchlist: tmplist = [] for (a, e, v, r) in newpkgs[(n, None)]: tmplist.append((n, a, e, v, r)) highestavailablepkgs = self.returnHighestVerFromAllArchsByName(n, thisarchlist, tmplist) hapdict = self.makeNADict(highestavailablepkgs, 0) for (n, a) in hipdict: if (n, a) in hapdict: self.debugprint('processing %s.%s' % (n, a)) # we've got a match - get our versions and compare (rpm_e, rpm_v, rpm_r) = hipdict[(n, a)][0] # only ever going to be first one (e, v, r) = hapdict[(n, a)][0] # there can be only one 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 (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: self.debugprint('processing %s' % n) # this is where we have to have an arch contest if there # is more than one arch updating with the highest ver instarchs = [] for (n,a) in hipdict: instarchs.append(a) rpm_a = rpmUtils.arch.getBestArchFromList(instarchs, myarch=self.myarch) if rpm_a is None: continue tmplist = [] for (a, e, v, r) in newpkgs[(n, None)]: tmplist.append((n, a, e, v, r)) highestavailablepkgs = self.returnHighestVerFromAllArchsByName(n, thisarchlist, tmplist) hapdict = self.makeNADict(highestavailablepkgs, 0) availarchs = [] for (n,a) in hapdict: availarchs.append(a) a = rpmUtils.arch.getBestArchFromList(availarchs, myarch=self.myarch) if a is None: continue (rpm_e, rpm_v, rpm_r) = hipdict[(n, rpm_a)][0] # there can be just one (e, v, r) = hapdict[(n, a)][0] # just one, I'm sure, I swear! 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 (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)) self.updatesdict = updatedict self.makeUpdatingDict() def makeUpdatingDict(self): """creates a dict of available packages -> [installed package], this is to make it easier to look up what package will be updating what in the rpmdb""" self.updating_dict = {} for old in self.updatesdict: for new in self.updatesdict[old]: if new not in self.updating_dict: self.updating_dict[new] = [] self.updating_dict[new].append(old) def reduceListByNameArch(self, pkglist, name=None, arch=None): """returns a set of pkg naevr tuples reduced based on name or arch""" returnlist = [] if name or arch: for (n, a, e, v, r) in pkglist: if name: if name == n: returnlist.append((n, a, e, v, r)) continue if arch: if arch == a: returnlist.append((n, a, e, v, r)) continue else: returnlist = pkglist return returnlist def getUpdatesTuples(self, name=None, arch=None): """returns updates for packages in a list of tuples of: (updating naevr, installed naevr)""" returnlist = [] for oldtup in self.updatesdict: for newtup in self.updatesdict[oldtup]: returnlist.append((newtup, oldtup)) # self.reduceListByNameArch() for double tuples tmplist = [] if name: for ((n, a, e, v, r), oldtup) in returnlist: if name != n: tmplist.append(((n, a, e, v, r), oldtup)) if arch: for ((n, a, e, v, r), oldtup) in returnlist: if arch != a: tmplist.append(((n, a, e, v, r), oldtup)) for item in tmplist: try: returnlist.remove(item) except ValueError: pass return returnlist def getUpdatesList(self, name=None, arch=None): """returns updating packages in a list of (naevr) tuples""" returnlist = [] for oldtup in self.updatesdict: for newtup in self.updatesdict[oldtup]: returnlist.append(newtup) returnlist = self.reduceListByNameArch(returnlist, name, arch) return returnlist # NOTE: This returns obsoleters and obsoletees, but narrows based on # _obsoletees_ (unlike getObsoletesList). Look at getObsoletersTuples def getObsoletesTuples(self, newest=0, name=None, arch=None): """returns obsoletes for packages in a list of tuples of: (obsoleting naevr, installed naevr). You can specify name and/or arch of the installed package to narrow the results. You can also specify newest=1 to get the set of newest pkgs (name, arch) sorted, that obsolete something""" tmplist = [] obslist = self.obsoletes.keys() if newest: obslist = self._reduceListNewestByNameArch(obslist) for obstup in obslist: for rpmtup in self.obsoletes[obstup]: tmplist.append((obstup, rpmtup)) # self.reduceListByNameArch() for double tuples returnlist = [] if name or arch: for (obstup, (n, a, e, v, r)) in tmplist: if name: if name == n: returnlist.append((obstup, (n, a, e, v, r))) continue if arch: if arch == a: returnlist.append((obstup, (n, a, e, v, r))) continue else: returnlist = tmplist return returnlist # NOTE: This returns obsoleters and obsoletees, but narrows based on # _obsoleters_ (like getObsoletesList). def getObsoletersTuples(self, newest=0, name=None, arch=None): """returns obsoletes for packages in a list of tuples of: (obsoleting naevr, installed naevr). You can specify name and/or arch of the obsoleting package to narrow the results. You can also specify newest=1 to get the set of newest pkgs (name, arch) sorted, that obsolete something""" tmplist = [] obslist = self.obsoletes.keys() if newest: obslist = self._reduceListNewestByNameArch(obslist) for obstup in obslist: for rpmtup in self.obsoletes[obstup]: tmplist.append((obstup, rpmtup)) # self.reduceListByNameArch() for double tuples returnlist = [] if name or arch: for ((n, a, e, v, r), insttup) in tmplist: if name: if name == n: returnlist.append(((n, a, e, v, r), insttup)) continue if arch: if arch == a: returnlist.append(((n, a, e, v, r), insttup)) continue else: returnlist = tmplist return returnlist # NOTE: This returns _obsoleters_, and narrows based on that (unlike # getObsoletesTuples, but like getObsoletersTuples) def getObsoletesList(self, newest=0, name=None, arch=None): """returns obsoleting packages in a list of naevr tuples of just the packages that obsolete something that is installed. You can specify name and/or arch of the obsoleting packaging to narrow the results. You can also specify newest=1 to get the set of newest pkgs (name, arch) sorted, that obsolete something""" tmplist = self.obsoletes.keys() if newest: tmplist = self._reduceListNewestByNameArch(tmplist) returnlist = self.reduceListByNameArch(tmplist, name, arch) return returnlist def getObsoletedList(self, newest=0, name=None): """returns a list of pkgtuples obsoleting the package in name""" returnlist = [] for new in self.obsoletes: for obstup in self.obsoletes[new]: (n, a, e, v, r) = obstup if n == name: returnlist.append(new) continue return returnlist def getOthersList(self, name=None, arch=None): """returns a naevr tuple of the packages that are neither installed nor an update - this may include something that obsoletes an installed package""" updates = {} inst = {} tmplist = [] for pkgtup in self.getUpdatesList(): updates[pkgtup] = 1 for pkgtup in self.installed: inst[pkgtup] = 1 for pkgtup in self.available: if pkgtup not in updates and pkgtup not in inst: tmplist.append(pkgtup) returnlist = self.reduceListByNameArch(tmplist, name, arch) return returnlist def _reduceListNewestByNameArch(self, tuplelist): """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""" highdict = {} done = False for pkgtup in tuplelist: (n, a, e, v, r) = pkgtup if (n, a) not in highdict: highdict[(n, a)] = pkgtup else: pkgtup2 = highdict[(n, a)] done = True (n2, a2, e2, v2, r2) = pkgtup2 rc = rpmUtils.miscutils.compareEVR((e,v,r), (e2, v2, r2)) if rc > 0: highdict[(n, a)] = pkgtup if not done: return tuplelist return highdict.values() # def getProblems(self): # """return list of problems: # - Packages that are both obsoleted and updated. # - Packages that have multiple obsoletes. # - Packages that _still_ have multiple updates # """ yum-3.4.3/rpmUtils/__init__.py0000664000076400007640000000030011602434452015247 0ustar jamesjames#!/usr/bin/python -tt class RpmUtilsError(Exception): """ Exception thrown for anything rpmUtils related. """ def __init__(self, args=None): Exception.__init__(self, args) yum-3.4.3/rpmUtils/miscutils.py0000664000076400007640000003346211602434452015543 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2003 Duke University import rpm import types import gzip import os import sys import locale import signal import rpmUtils.transaction def rpmOutToStr(arg): if type(arg) != types.StringType: # and arg is not None: arg = str(arg) return arg 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 if e1 is None: e1 = '0' else: e1 = str(e1) v1 = str(v1) r1 = str(r1) 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) rc = rpm.labelCompare((e1, v1, r1), (e2, v2, r2)) #print '%s, %s, %s vs %s, %s, %s = %s' % (e1, v1, r1, e2, v2, r2, rc) return rc def compareVerOnly(v1, v2): """compare version strings only using rpm vercmp""" return compareEVR(('', v1, ''), ('', v2, '')) def checkSig(ts, package): """Takes a transaction set and a package, check it's sigs, return 0 if they are all fine return 1 if the gpg key can't be found return 2 if the header is in someway damaged return 3 if the key is not trusted return 4 if the pkg is not gpg or pgp signed""" value = 0 currentflags = ts.setVSFlags(0) fdno = os.open(package, os.O_RDONLY) try: hdr = ts.hdrFromFdno(fdno) except rpm.error, e: if str(e) == "public key not availaiable": value = 1 if str(e) == "public key not available": value = 1 if str(e) == "public key not trusted": value = 3 if str(e) == "error reading package header": value = 2 else: error, siginfo = getSigInfo(hdr) if error == 101: os.close(fdno) del hdr value = 4 else: del hdr try: os.close(fdno) except OSError, e: # if we're not opened, don't scream about it pass ts.setVSFlags(currentflags) # put things back like they were before return value def getSigInfo(hdr): """checks signature from an hdr hand back signature information and/or an error code""" locale.setlocale(locale.LC_ALL, 'C') string = '%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|' siginfo = hdr.sprintf(string) if siginfo != '(none)': error = 0 sigtype, sigdate, sigid = siginfo.split(',') else: error = 101 sigtype = 'MD5' sigdate = 'None' sigid = 'None' infotuple = (sigtype, sigdate, sigid) return error, infotuple def pkgTupleFromHeader(hdr): """return a pkgtuple (n, a, e, v, r) from a hdr object, converts None epoch to 0, as well.""" name = hdr['name'] # RPMTAG_SOURCEPACKAGE: RPMTAG_SOURCERPM is not necessarily there for # e.g. gpg-pubkeys imported with older rpm versions # http://lists.baseurl.org/pipermail/yum/2009-January/022275.html if hdr[rpm.RPMTAG_SOURCERPM] or hdr[rpm.RPMTAG_SOURCEPACKAGE] != 1: arch = hdr['arch'] else: arch = 'src' ver = hdr['version'] rel = hdr['release'] epoch = hdr['epoch'] if epoch is None: epoch = '0' pkgtuple = (name, arch, epoch, ver, rel) return pkgtuple def rangeCheck(reqtuple, pkgtuple): """returns true if the package epoch-ver-rel satisfy the range requested in the reqtuple: ex: foo >= 2.1-1""" # we only ever get here if we have a versioned prco # nameonly shouldn't ever raise it #(reqn, reqf, (reqe, reqv, reqr)) = reqtuple (n, a, e, v, r) = pkgtuple return rangeCompare(reqtuple, (n, 'EQ', (e, v, r))) def rangeCompare(reqtuple, provtuple): """returns true if provtuple satisfies reqtuple""" (reqn, reqf, (reqe, reqv, reqr)) = reqtuple (n, f, (e, v, r)) = provtuple if reqn != n: return 0 # unversioned satisfies everything if not f or not reqf: return 1 # and you thought we were done having fun # if the requested release is left out then we have # to remove release from the package prco to make sure the match # is a success - ie: if the request is EQ foo 1:3.0.0 and we have # foo 1:3.0.0-15 then we have to drop the 15 so we can match if reqr is None: r = None if reqe is None: e = None if reqv is None: # just for the record if ver is None then we're going to segfault v = None # if we just require foo-version, then foo-version-* will match if r is None: reqr = None rc = compareEVR((e, v, r), (reqe, reqv, reqr)) # does not match unless if rc >= 1: 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, '<=', '<']: return 1 if rc == 0: 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, '>', '>=', '=', '<=']: return 1 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, '=', '<=', '<' , '>=']: return 1 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, '>', '>=']: return 1 if reqf in ['LE', 'LT', 10, 2, '<=', '<']: return 1 # if rc >= 1: # if reqf in ['GT', 'GE', 4, 12, '>', '>=']: # return 1 # if rc == 0: # if reqf in ['GE', 'LE', 'EQ', 8, 10, 12, '>=', '<=', '=']: # return 1 # if rc <= -1: # if reqf in ['LT', 'LE', 2, 10, '<', '<=']: # return 1 return 0 ########### # Title: Remove duplicates from a sequence # Submitter: Tim Peters # From: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560 def unique(s): """Return a list of the elements in s, but without duplicates. For example, unique([1,2,3,1,2,3]) is some permutation of [1,2,3], unique("abcabc") some permutation of ["a", "b", "c"], and unique(([1, 2], [2, 3], [1, 2])) some permutation of [[2, 3], [1, 2]]. For best speed, all sequence elements should be hashable. Then unique() will usually work in linear time. If not possible, the sequence elements should enjoy a total ordering, and if list(s).sort() doesn't raise TypeError it's assumed that they do enjoy a total ordering. Then unique() will usually work in O(N*log2(N)) time. If that's not possible either, the sequence elements must support equality-testing. Then unique() will usually work in quadratic time. """ n = len(s) if n == 0: return [] # Try using a dict first, as that's the fastest and will usually # work. If it doesn't work, it will usually fail quickly, so it # usually doesn't cost much to *try* it. It requires that all the # sequence elements be hashable, and support equality comparison. u = {} try: for x in s: u[x] = 1 except TypeError: del u # move on to the next method else: return u.keys() # We can't hash all the elements. Second fastest is to sort, # which brings the equal elements together; then duplicates are # easy to weed out in a single pass. # NOTE: Python's list.sort() was designed to be efficient in the # presence of many duplicate elements. This isn't true of all # sort functions in all languages or libraries, so this approach # is more effective in Python than it may be elsewhere. try: t = list(s) t.sort() except TypeError: del t # move on to the next method else: assert n > 0 last = t[0] lasti = i = 1 while i < n: if t[i] != last: t[lasti] = last = t[i] lasti += 1 i += 1 return t[:lasti] # Brute force is all that's left. u = [] for x in s: if x not in u: u.append(x) return u def splitFilename(filename): """ Pass in a standard style rpm fullname Return a name, version, release, epoch, arch, e.g.:: foo-1.0-1.i386.rpm returns foo, 1.0, 1, i386 1:bar-9-123a.ia64.rpm returns bar, 9, 123a, 1, ia64 """ if filename[-4:] == '.rpm': filename = filename[:-4] archIndex = filename.rfind('.') arch = filename[archIndex+1:] relIndex = filename[:archIndex].rfind('-') rel = filename[relIndex+1:archIndex] verIndex = filename[:relIndex].rfind('-') ver = filename[verIndex+1:relIndex] epochIndex = filename.find(':') if epochIndex == -1: epoch = '' else: epoch = filename[:epochIndex] name = filename[epochIndex + 1:verIndex] return name, ver, rel, epoch, arch def rpm2cpio(fdno, out=sys.stdout, bufsize=2048): """Performs roughly the equivalent of rpm2cpio(8). Reads the package from fdno, and dumps the cpio payload to out, using bufsize as the buffer size.""" ts = rpmUtils.transaction.initReadOnlyTransaction() hdr = ts.hdrFromFdno(fdno) del ts compr = hdr[rpm.RPMTAG_PAYLOADCOMPRESSOR] or 'gzip' #XXX FIXME #if compr == 'bzip2': # TODO: someone implement me! #el if compr != 'gzip': raise rpmUtils.RpmUtilsError, \ 'Unsupported payload compressor: "%s"' % compr f = gzip.GzipFile(None, 'rb', None, os.fdopen(fdno, 'rb', bufsize)) while 1: tmp = f.read(bufsize) 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 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 + " " if flags & rpm.RPMSENSE_LESS: s = s + "<" if flags & rpm.RPMSENSE_GREATER: s = s + ">" if flags & rpm.RPMSENSE_EQUAL: s = s + "=" if version: s = "%s %s" %(s, version) return s def flagToString(flags): flags = flags & 0xf if flags == 0: return None elif flags == 2: return 'LT' elif flags == 4: return 'GT' elif flags == 8: return 'EQ' elif flags == 10: return 'LE' elif flags == 12: return 'GE' return flags def stringToVersion(verstring): if verstring in [None, '']: return (None, None, None) i = verstring.find(':') if i != -1: try: epoch = str(long(verstring[:i])) except ValueError: # look, garbage in the epoch field, how fun, kill it epoch = '0' # this is our fallback, deal else: epoch = '0' j = verstring.find('-') if j != -1: if verstring[i + 1:j] == '': version = None else: version = verstring[i + 1:j] release = verstring[j + 1:] else: if verstring[i + 1:] == '': version = None else: version = verstring[i + 1:] release = None return (epoch, version, release) def hdrFromPackage(ts, package): """hand back the rpm header or raise an Error if the pkg is fubar""" try: fdno = os.open(package, os.O_RDONLY) except OSError, e: raise rpmUtils.RpmUtilsError, 'Unable to open file' # XXX: We should start a readonly ts here, so we don't get the options # from the other one (sig checking, etc) try: hdr = ts.hdrFromFdno(fdno) except rpm.error, e: os.close(fdno) raise rpmUtils.RpmUtilsError, "RPM Error opening Package" if type(hdr) != rpm.hdr: os.close(fdno) raise rpmUtils.RpmUtilsError, "RPM Error opening Package (type)" os.close(fdno) return hdr def checkSignals(): if hasattr(rpm, "checkSignals") and hasattr(rpm, 'signalsCaught'): if rpm.signalsCaught([signal.SIGINT, signal.SIGTERM, signal.SIGPIPE, signal.SIGQUIT, signal.SIGHUP]): sys.exit(1) yum-3.4.3/rpmUtils/arch.py0000664000076400007640000002744711602434452014452 0ustar jamesjames#!/usr/bin/python # import os # dict mapping arch -> ( multicompat, best personality, biarch personality ) multilibArches = { "x86_64": ( "athlon", "x86_64", "athlon" ), "sparc64v": ( "sparcv9v", "sparcv9v", "sparc64v" ), "sparc64": ( "sparcv9", "sparcv9", "sparc64" ), "ppc64": ( "ppc", "ppc", "ppc64" ), "s390x": ( "s390", "s390x", "s390" ), } arches = { # ia32 "athlon": "i686", "i686": "i586", "geode": "i586", "i586": "i486", "i486": "i386", "i386": "noarch", # amd64 "x86_64": "athlon", "amd64": "x86_64", "ia32e": "x86_64", # ppc "ppc64pseries": "ppc64", "ppc64iseries": "ppc64", "ppc64": "ppc", "ppc": "noarch", # s390{,x} "s390x": "s390", "s390": "noarch", # sparc "sparc64v": "sparcv9v", "sparc64": "sparcv9", "sparcv9v": "sparcv9", "sparcv9": "sparcv8", "sparcv8": "sparc", "sparc": "noarch", # alpha "alphaev7": "alphaev68", "alphaev68": "alphaev67", "alphaev67": "alphaev6", "alphaev6": "alphapca56", "alphapca56": "alphaev56", "alphaev56": "alphaev5", "alphaev5": "alphaev45", "alphaev45": "alphaev4", "alphaev4": "alpha", "alpha": "noarch", # arm "armv7l": "armv6l", "armv6l": "armv5tejl", "armv5tejl": "armv5tel", "armv5tel": "noarch", # super-h "sh4a": "sh4", "sh4": "noarch", "sh3": "noarch", #itanium "ia64": "noarch", } def legitMultiArchesInSameLib(arch=None): # this is completely crackrock - if anyone has a better way I # am all ears arch = getBestArch(arch) if isMultiLibArch(arch): arch = getBaseArch(myarch=arch) results = [arch] if arch == 'x86_64' or arch.startswith('sparcv9'): for (k, v) in arches.items(): if v == arch: results.append(k) return results def canCoinstall(arch1, arch2): """Take two arches and return True if it is possible that they can be installed together with the same nevr. Ex: arch1=i386 and arch2=i686 then it will return False. arch1=i386 and arch2=x86_64 will return True. It does not determine whether or not the arches make any sense. Just whether they could possibly install w/o conflict""" # if both are a multlibarch then we can't coinstall (x86_64, ia32e) # if both are not multilibarches then we can't coinstall (i386, i686) if 'noarch' in [arch1, arch2]: # noarch can never coinstall return False if isMultiLibArch(arch=arch1) == isMultiLibArch(arch=arch2): return False # this section keeps arch1=x86_64 arch2=ppc from returning True if arch1 in getArchList(arch2) or arch2 in getArchList(arch1): return True return False # this computes the difference between myarch and targetarch def archDifference(myarch, targetarch): if myarch == targetarch: return 1 if myarch in arches: ret = archDifference(arches[myarch], targetarch) if ret != 0: return ret + 1 return 0 return 0 def score(arch): return archDifference(canonArch, arch) def isMultiLibArch(arch=None): """returns true if arch is a multilib arch, false if not""" if arch is None: arch = canonArch if arch not in arches: # or we could check if it is noarch return 0 if arch in multilibArches: return 1 if arches[arch] in multilibArches: return 1 return 0 def getBestArchFromList(archlist, myarch=None): """ return the best arch from the list for myarch if - myarch is not given, then return the best arch from the list for the canonArch. """ if len(archlist) == 0: return None if myarch is None: myarch = canonArch mybestarch = getBestArch(myarch) bestarch = getBestArch(myarch) if bestarch != myarch: bestarchchoice = getBestArchFromList(archlist, bestarch) if bestarchchoice != None and bestarchchoice != "noarch": return bestarchchoice thisarch = archlist[0] for arch in archlist[1:]: val1 = archDifference(myarch, thisarch) val2 = archDifference(myarch, arch) if val1 == 0 and val2 == 0: continue if val1 < val2: if val1 == 0: thisarch = arch if val2 < val1: if val2 != 0: thisarch = arch if val1 == val2: pass # thisarch should now be our bestarch # one final check to make sure we're not returning a bad arch val = archDifference(myarch, thisarch) if val == 0: return None return thisarch def getArchList(thisarch=None): # this returns a list of archs that are compatible with arch given if not thisarch: thisarch = canonArch archlist = [thisarch] while thisarch in arches: thisarch = arches[thisarch] archlist.append(thisarch) # hack hack hack # sparc64v is also sparc64 compat if archlist[0] == "sparc64v": archlist.insert(1,"sparc64") # if we're a weirdo arch - add noarch on there. if len(archlist) == 1 and archlist[0] == thisarch: 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": for line in _try_read_cpuinfo(): if line.startswith("model name") and line.find("Geode(TM)") != -1: return "geode" return arch # only athlon vs i686 isn't handled with uname currently if arch != "i686": return arch # if we're i686 and AuthenticAMD, then we should be an athlon 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 elif line.startswith("flags") and line.find("cmov") == -1: return "i586" return arch def getCanonPPCArch(arch): # FIXME: should I do better handling for mac, etc? if arch != "ppc64": return arch machine = None for line in _try_read_cpuinfo(): if line.find("machine") != -1: machine = line.split(':')[1] break if machine is None: return arch if machine.find("CHRP IBM") != -1: return "ppc64pseries" if machine.find("iSeries") != -1: return "ppc64iseries" return arch def getCanonSPARCArch(arch): # Deal with sun4v, sun4u, sun4m cases SPARCtype = None for line in _try_read_cpuinfo(): if line.startswith("type"): SPARCtype = line.split(':')[1] break if SPARCtype is None: return arch if SPARCtype.find("sun4v") != -1: if arch.startswith("sparc64"): return "sparc64v" else: return "sparcv9v" if SPARCtype.find("sun4u") != -1: if arch.startswith("sparc64"): return "sparc64" else: return "sparcv9" if SPARCtype.find("sun4m") != -1: return "sparcv8" return arch def getCanonX86_64Arch(arch): if arch != "x86_64": return arch vendor = None for line in _try_read_cpuinfo(): if line.startswith("vendor_id"): vendor = line.split(':')[1] break if vendor is None: return arch if vendor.find("Authentic AMD") != -1 or vendor.find("AuthenticAMD") != -1: return "amd64" if vendor.find("GenuineIntel") != -1: return "ia32e" return arch def getCanonArch(skipRpmPlatform = 0): if not skipRpmPlatform and os.access("/etc/rpm/platform", os.R_OK): try: f = open("/etc/rpm/platform", "r") line = f.readline() f.close() (arch, vendor, opersys) = line.split("-", 2) return arch except: pass arch = os.uname()[4] if (len(arch) == 4 and arch[0] == "i" and arch[2:4] == "86"): return getCanonX86Arch(arch) if arch.startswith("ppc"): return getCanonPPCArch(arch) if arch.startswith("sparc"): return getCanonSPARCArch(arch) if arch == "x86_64": return getCanonX86_64Arch(arch) return arch canonArch = getCanonArch() # this gets you the "compat" arch of a biarch pair def getMultiArchInfo(arch = canonArch): if arch in multilibArches: return multilibArches[arch] if arch in arches and arches[arch] != "noarch": return getMultiArchInfo(arch = arches[arch]) return None # get the best usual userspace arch for the arch we're on. this is # our arch unless we're on an arch that uses the secondary as its # userspace (eg ppc64, sparc64) def getBestArch(myarch=None): if myarch: arch = myarch else: arch = canonArch if arch.startswith("sparc64"): arch = multilibArches[arch][1] if arch.startswith("ppc64"): arch = 'ppc' return arch def getBaseArch(myarch=None): """returns 'base' arch for myarch, if specified, or canonArch if not. base arch is the arch before noarch in the arches dict if myarch is not a key in the multilibArches.""" if not myarch: myarch = canonArch if myarch not in arches: # this is dumb, but return myarch if myarch.startswith("sparc64"): return "sparc" elif myarch.startswith("ppc64"): return "ppc" elif myarch.startswith("arm"): return "arm" if isMultiLibArch(arch=myarch): if myarch in multilibArches: return myarch else: return arches[myarch] if myarch in arches: basearch = myarch value = arches[basearch] while value != 'noarch': basearch = value value = arches[basearch] return basearch class ArchStorage(object): """class for keeping track of what arch we have set and doing various permutations based on it""" def __init__(self): self.canonarch = None self.basearch = None self.bestarch = None self.compatarches = [] self.archlist = [] self.multilib = False self.setup_arch() def setup_arch(self, arch=None, archlist_includes_compat_arch=True): if arch: self.canonarch = arch else: self.canonarch = getCanonArch() 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) self.legit_multi_arches = legitMultiArchesInSameLib(arch = self.canonarch) def get_best_arch_from_list(self, archlist, fromarch=None): if not fromarch: fromarch = self.canonarch return getBestArchFromList(archlist, myarch=fromarch) def score(self, arch): return archDifference(self.canonarch, arch) def get_arch_list(self, arch): if not arch: return self.archlist return getArchList(thisarch=arch) yum-3.4.3/rpmUtils/tests/0000775000076400007640000000000011602434452014307 5ustar jamesjamesyum-3.4.3/rpmUtils/tests/updates-test.py0000664000076400007640000000423211602434452017304 0ustar jamesjames import rpmUtils.updates import rpmUtils.arch instlist = [('foo', 'i386', '0', '1', '1'), ('do', 'i386', '0', '2', '3'), ('glibc', 'i386', '0', '1', '1'), ('bar', 'noarch', '0', '2', '1'), ('baz', 'i686', '0', '2', '3'), ('baz', 'x86_64', '0','1','4'), ('foo', 'i686', '0', '1', '1'), ('cyrus-sasl','sparcv9', '0', '1', '1')] availlist = [('foo', 'i686', '0', '1', '3'), ('do', 'noarch', '0', '3', '3'), ('do', 'noarch', '0', '4', '3'), ('foo', 'i386', '0', '1', '3'), ('foo', 'i686', '0', '1', '2'), ('glibc', 'i686', '0', '1', '2'), ('glibc', 'i386', '0', '1', '2'), ('bar', 'noarch', '0', '2', '2'), ('baz', 'noarch', '0', '2', '4'), ('baz', 'i686', '0', '2', '4'), ('baz', 'x86_64', '0', '1', '5'), ('baz', 'ppc', '0', '1', '5'), ('cyrus-sasl','sparcv9', '0', '1', '2'), ('cyrus-sasl','sparc64', '0', '1', '2'),] obslist = {('quux', 'noarch', '0', '1', '3'): [('bar', None, (None, None, None))], ('quuxish', 'noarch', '0', '1', '3'):[('foo', 'GE', ('0', '1', None))], } up = rpmUtils.updates.Updates(instlist, availlist) up.debug=1 up.exactarch=1 #up.myarch = 'sparc64' up._is_multilib = rpmUtils.arch.isMultiLibArch(up.myarch) up._archlist = rpmUtils.arch.getArchList(up.myarch) print up._archlist up._multilib_compat_arches = rpmUtils.arch.getMultiArchInfo(up.myarch) up.doUpdates() up.condenseUpdates() for tup in up.updatesdict.keys(): (old_n, old_a, old_e, old_v, old_r) = tup for (n, a, e, v, r) in up.updatesdict[tup]: print '%s.%s %s:%s-%s updated by %s.%s %s:%s-%s' % (old_n, old_a, old_e, old_v, old_r, n, a, e, v, r) up.rawobsoletes = obslist up.doObsoletes() for tup in up.obsoletes.keys(): (old_n, old_a, old_e, old_v, old_r) = tup for (n, a, e, v, r) in up.obsoletes[tup]: print '%s.%s %s:%s-%s obsoletes %s.%s %s:%s-%s' % (old_n, old_a, old_e, old_v, old_r, n, a, e, v, r) yum-3.4.3/rpmUtils/oldUtils.py0000664000076400007640000002567711602434452015337 0ustar jamesjames#!/usr/bin/python -tt import rpm import types import os import gzip import sys from gzip import write32u, FNAME from urlgrabber.grabber import URLGrabError from zlib import error as zlibError def log(num, msg): print >>sys.stderr, msg errorlog = log def _(msg): return msg # pylint: disable-msg=E0602 def checkheader(headerfile, name, arch): """check a header by opening it and comparing the results to the name and arch we believe it to be for. if it fails raise URLGrabError(-1)""" h = Header_Work(headerfile) fail = 0 if h.hdr is None: fail = 1 else: if name != h.name() or arch != h.arch(): fail = 1 if fail: raise URLGrabError(-1, _('Header cannot be opened or does not match %s, %s.') % (name, arch)) return def checkRpmMD5(package, urlgraberror=0): """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) try: ts.hdrFromFdno(fdno) except rpm.error, e: good = 0 else: good = 1 os.close(fdno) ts.sigChecking('default') if urlgraberror: if not good: raise URLGrabError(-1, _('RPM %s fails md5 check') % (package)) else: return else: return good def checkSig(package): """ take a package, check it's sigs, return 0 if they are all fine, return 1 if the gpg key can't be found, 2 if the header is in someway damaged, 3 if the key is not trusted, 4 if the pkg is not gpg or pgp signed""" ts.sigChecking('default') fdno = os.open(package, os.O_RDONLY) try: hdr = ts.hdrFromFdno(fdno) except rpm.error, e: if str(e) == "public key not availaiable": return 1 if str(e) == "public key not available": return 1 if str(e) == "public key not trusted": return 3 if str(e) == "error reading package header": return 2 else: error, siginfo = getSigInfo(hdr) if error == 101: os.close(fdno) del hdr return 4 else: del hdr os.close(fdno) return 0 def getSigInfo(hdr): """checks if a computerhand back signature information and an error code""" string = '%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|' siginfo = hdr.sprintf(string) if siginfo != '(none)': error = 0 sigtype, sigdate, sigid = siginfo.split(',') else: error = 101 sigtype = 'MD5' sigdate = 'None' sigid = 'None' infotuple = (sigtype, sigdate, sigid) return error, infotuple def getProvides(header): provnames = [] provides = header[rpm.RPMTAG_PROVIDENAME] if provides is None: pass elif type(provides) is types.ListType: provnames.extend(provides) else: provnames.append(provides) return provnames 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 def rpmOutToStr(arg): if type(arg) != types.StringType and arg != None: arg = str(arg) return arg e1 = rpmOutToStr(e1) v1 = rpmOutToStr(v1) r1 = rpmOutToStr(r1) e2 = rpmOutToStr(e2) v2 = rpmOutToStr(v2) r2 = rpmOutToStr(r2) rc = rpm.labelCompare((e1, v1, r1), (e2, v2, r2)) log(6, '%s, %s, %s vs %s, %s, %s = %s' % (e1, v1, r1, e2, v2, r2, rc)) return rc def formatRequire (name, version, flags): if flags: if flags & (rpm.RPMSENSE_LESS | rpm.RPMSENSE_GREATER | rpm.RPMSENSE_EQUAL): name = name + ' ' if flags & rpm.RPMSENSE_LESS: name = name + '<' if flags & rpm.RPMSENSE_GREATER: name = name + '>' if flags & rpm.RPMSENSE_EQUAL: name = name + '=' name = name + ' %s' % version return name def openrpmdb(): try: db = rpm.TransactionSet(conf.installroot) except rpm.error, e: errorlog(0, _("Could not open RPM database for reading. Perhaps it is already in use?")) return db # this is done to make the hdr writing _more_ sane for rsync users especially __all__ = ["GzipFile","open"] class GzipFile(gzip.GzipFile): def _write_gzip_header(self): self.fileobj.write('\037\213') # magic header self.fileobj.write('\010') # compression method fname = self.filename[:-3] flags = 0 if fname: flags = FNAME self.fileobj.write(chr(flags)) write32u(self.fileobj, long(0)) self.fileobj.write('\002') self.fileobj.write('\377') if fname: self.fileobj.write(fname + '\000') def _gzipOpen(filename, mode="rb", compresslevel=9): return GzipFile(filename, mode, compresslevel) class RPM_Base_Work: def __init__(self): self.hdr = None def _getTag(self, tag): if self.hdr is None: errorlog(0, _('Got an empty Header, something has gone wrong')) #FIXME should raise a yum error here sys.exit(1) return self.hdr[tag] def isSource(self): if self._getTag('sourcepackage') == 1: return 1 else: return 0 def name(self): return self._getTag('name') def arch(self): return self._getTag('arch') def epoch(self): return self._getTag('epoch') def version(self): return self._getTag('version') def release(self): return self._getTag('release') def evr(self): e = self._getTag('epoch') v = self._getTag('version') r = self._getTag('release') return (e, v, r) def nevra(self): n = self._getTag('name') e = self._getTag('epoch') v = self._getTag('version') r = self._getTag('release') a = self._getTag('arch') return (n, e, v, r, a) def writeHeader(self, headerdir, compress): # write the header out to a file with the format: name-epoch-ver-rel.arch.hdr # return the name of the file it just made - no real reason :) (name, epoch, ver, rel, arch) = self.nevra() if epoch is None: epoch = '0' if self.isSource(): headerfn = "%s/%s-%s-%s-%s.src.hdr" % (headerdir, name, epoch, ver, rel) else: headerfn = "%s/%s-%s-%s-%s.%s.hdr" % (headerdir, name, epoch, ver, rel, arch) if compress: headerout = _gzipOpen(headerfn, "w") else: headerout = open(headerfn, "w") headerout.write(self.hdr.unload(1)) headerout.close() return(headerfn) class Header_Work(RPM_Base_Work): """for operating on hdrs in and out of the rpmdb if the first arg is a string then it's a filename otherwise it's an rpm hdr""" def __init__(self, header): if type(header) is types.StringType: try: fd = gzip.open(header, 'r') try: h = rpm.headerLoad(fd.read()) except rpm.error, e: errorlog(0,_('Damaged Header %s') % header) h = None except IOError,e: fd = open(header, 'r') try: h = rpm.headerLoad(fd.read()) except rpm.error, e: errorlog(0,_('Damaged Header %s') % header) h = None except ValueError, e: errorlog(0,_('Damaged Header %s') % header) h = None except zlibError, e: errorlog(0,_('Damaged Header %s') % header) h = None fd.close() else: h = header self.hdr = h class RPM_Work(RPM_Base_Work): def __init__(self, rpmfn): ts.setVSFlags(~(rpm._RPMVSF_NOSIGNATURES)) fd = os.open(rpmfn, os.O_RDONLY) try: self.hdr = ts.hdrFromFdno(fd) except rpm.error, e: errorlog(0, _('Error opening rpm %s - error %s') % (rpmfn, e)) self.hdr = None os.close(fd) class Rpm_Ts_Work: """This should operate on groups of headers/matches/etc in the rpmdb - ideally it will operate with a list of the Base objects above, so I can refer to any one object there not sure the best way to do this yet, more thinking involved""" def __init__(self, dbPath='/'): try: if conf.installroot: if conf.installroot != '/': dbPath = conf.installroot except NameError, e: pass self.ts = rpm.TransactionSet(dbPath) self.methods = ['addInstall', 'addErase', 'run', 'check', 'order', 'hdrFromFdno', 'closeDB', 'dbMatch', 'setFlags', 'setVSFlags', 'setProbFilter'] def __getattr__(self, attribute): if attribute in self.methods: return getattr(self.ts, attribute) else: raise AttributeError, attribute def match(self, tag = None, search = None, mire = None): """hands back a list of Header_Work objects""" hwlist = [] # hand back the whole list of hdrs if mire is None and tag is None and search is None: hdrlist = self.ts.dbMatch() else: #just do a non-mire'd search if mire == None: hdrlist = self.ts.dbMatch(tag, search) else: # mire search if mire == 'glob': hdrlist = self.ts.dbMatch() hdrlist.pattern(tag, rpm.RPMMIRE_GLOB, search) elif mire == 'regex': hdrlist = self.ts.dbMatch() hdrlist.pattern(tag, rpm.RPMMIRE_REGEX, search) elif mire == 'strcmp': hdrlist = self.ts.dbMatch() hdrlist.pattern(tag, rpm.RPMMIRE_STRCMP, search) else: hdrlist = self.ts.dbMatch() hdrlist.pattern(tag, rpm.RPMMIRE_DEFAULT, search) for hdr in hdrlist: hdrobj = Header_Work(hdr) hwlist.append(hdrobj) return hwlist def sigChecking(self, sig): """pass type of check you want to occur, default is to have them off""" if sig == 'md5': #turn off everything but md5 - and we need to the check the payload self.ts.setVSFlags(~(rpm.RPMVSF_NOMD5|rpm.RPMVSF_NEEDPAYLOAD)) elif sig == 'none': # turn off everything - period self.ts.setVSFlags(~(rpm._RPMVSF_NOSIGNATURES)) elif sig == 'default': # set it back to the default self.ts.setVSFlags(rpm.RPMVSF_DEFAULT) else: raise AttributeError, sig yum-3.4.3/po/0000775000076400007640000000000011602434452011744 5ustar jamesjamesyum-3.4.3/po/fi.po0000664000076400007640000023233011602434452012705 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Ville-Pekka Vainio , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Päivitetään" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Poistetaan" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Asennetaan" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Vanhennettu" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Päivitetty" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Poistettu" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Asennettu" #: ../callback.py:130 msgid "No header - huh?" msgstr "Ei otsaketta – häh?" #: ../callback.py:168 msgid "Repackage" msgstr "Uudelleenpaketoi" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Virhe: virheellinen tulostetila: %s, paketti %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Poistettiin: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Poistetaan" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Siivotaan" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Komento â€%s†on jo määritelty" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Tehdään asennuslähdeasetuksia" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Luetaan asennuslähteiden metadataa paikallisista tiedostoista" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Asetusvirhe: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Valitsinvirhe: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Asennettiin : %s-%s ajassa %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Käännettiin : %s ajassa %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Suoritettiin: %s ajassa %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Jokin komento on annettava" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Komentoa %s ei ole olemassa. Käytä komentoa %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Vaadittu levytila:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Vähintään %d Mt levytilaa tarvitaan tiedostojärjestelmällä %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Yhteenveto virheistä\n" "--------------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Yritettiin suorittaa transaktio, mutta ei ole mitään tehtävää. Lopetetaan." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Lopetetaan, käyttäjä antoi lopetuskomennon" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Ladataan paketteja:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Virhe pakettien latauksessa:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "VIRHE RPM on päivitettävä, jotta se osaa käsitellä:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM on päivitettävä" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Ilmoita tästä ongelmasta osoitteeseen %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Suoritetaan transaktiotestiä" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Transaktiotarkistuksen virhe:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Transaktiotesti onnistui" #: ../cli.py:600 msgid "Running Transaction" msgstr "Suoritetaan transaktiota" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Avaimia ei tuoda automaattisesti, kun yumia suoritetaan ilman valvontaa.\n" "Käytä valitsinta â€-y†tämän muuttamiseksi." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Tarkoititko: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" "Paketti tai paketit %s%s%s ovat saatavilla, mutta niitä ei ole asennettu." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Pakettia %s%s%s ei ole saatavilla." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Asennettavat paketit" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Ei mitään tehtävää" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pakettia merkitty päivitettäväksi" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Yhtään pakettia ei ole merkitty päivitettäväksi" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d pakettia merkitty jakelusynkronointia varten" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Yhtään pakettia ei ole merkitty jakelusynkronointia varten" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pakettia merkitty poistettavaksi" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Yhtään pakettia ei ole merkitty poistettavaksi" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Vanhennettavat paketit" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (asennuslähteestä %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Asennettua pakettia %s%s%s%s ei ole saatavilla." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Uudelleenasennettavat paketit" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Yhtään pakettia ei annettu" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Löytyi: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Varoitus: hakutuloksia ei löytynyt hakusanalle %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Hakutuloksia ei löytynyt" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Hakusanalla %s ei löytynyt pakettia" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Siivotaan asennuslähteitä:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Siivotaan kaikki" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Siivotaan otsakkeet" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Siivotaan paketit" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Siivotaan XML-metadata" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Siivotaan tiedokannan välimuisti" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Siivotaan välimuistin vanhentumiseen liittyvä metadata" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Siivotaan välimuistissa oleva rpm-tietokannan data" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Siivotaan liitännäiset" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Asennetut ryhmät:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Saatavilla olevat ryhmät:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Valmis" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Varoitus: Ryhmää %s ei ole olemassa." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Missään pyydetyssä ryhmässä ei ole yhtään asennettavaa tai päivitettävää " "pakettia" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pakettia asennettavana" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Ryhmää nimeltä %s ei ole olemassa" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Ei yhtään poistettavaa pakettia ryhmien perusteella" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d poistettavaa pakettia" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Paketti %s on jo asennettu, ohitetaan" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Hylätään paketti %s.%s, jota ei voi verrata" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Toista pakettia nimeltä %s ei ole asennettuna, lisätään mahdollisesti " "asennettavien luetteloon" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Liitännäisten valitsimet" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Komentorivivirhe: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: valitsin %s vaatii argumentin" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color vaatii yhden seuraavista argumenteista: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "näytä tämä ohjeviesti ja lopeta" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "hyväksy virheet" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "toimi kokonaan välimuistista, älä päivitä sitä" #: ../cli.py:1652 msgid "config file location" msgstr "asetustiedoston sijainti" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "komennon suurin odotusaika" #: ../cli.py:1657 msgid "debugging output level" msgstr "virheenjäljitystulosteiden taso" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "näytä duplikaatit asennuslähteissä ja list/search-komennoissa" #: ../cli.py:1663 msgid "error output level" msgstr "virhetulostustaso" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "rpm:n virheenjäljitystulosteiden taso" #: ../cli.py:1669 msgid "quiet operation" msgstr "hiljainen toiminta" #: ../cli.py:1671 msgid "verbose operation" msgstr "yksityiskohtaset tulosteet" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "vastaa kyllä kaikkiin kysymyksiin" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "näytä Yumin versio ja lopeta" #: ../cli.py:1676 msgid "set install root" msgstr "aseta asennusjuuri" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" "ota käyttöön yksi tai usempi asennuslähde (jokerimerkit ovat sallittuja)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" "poista käytöstä yksi tai usempi asennuslähde (jokerimerkit ovat sallittuja)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "jätä pois paketteja nimen tai jokerimerkkien perusteella" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" "ota pakettien pois jättäminen pois käytöstä pääasetuksille, jollekin " "asennuslähteelle tai kaikelle" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "ota käyttöön vanhentuneiden pakettien käsittely päivitysten aikana" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "poista Yumin liitännäiset käytöstä" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "poista GPG-allekirjoitusten tarkistus käytöstä" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "poista liitännäisiä käytöstä nimen perusteella" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "ota liitännäisiä käyttöön nimen perusteella" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "ohita paketit, joilla on riippuvuusongelmia" #: ../cli.py:1706 msgid "control whether color is used" msgstr "käytetäänkö värejä" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "aseta $releasever-muuttujan arvo yumin asetuksissa ja " "asennuslähdetiedostoissa" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "aseta mielivaltaisia asetus- ja asennuslähdevalitsimia" #: ../output.py:307 msgid "Jan" msgstr "tammi" #: ../output.py:307 msgid "Feb" msgstr "helmi" #: ../output.py:307 msgid "Mar" msgstr "maalis" #: ../output.py:307 msgid "Apr" msgstr "huhti" #: ../output.py:307 msgid "May" msgstr "touko" #: ../output.py:307 msgid "Jun" msgstr "kesä" #: ../output.py:308 msgid "Jul" msgstr "heinä" #: ../output.py:308 msgid "Aug" msgstr "elo" #: ../output.py:308 msgid "Sep" msgstr "syys" #: ../output.py:308 msgid "Oct" msgstr "loka" #: ../output.py:308 msgid "Nov" msgstr "marras" #: ../output.py:308 msgid "Dec" msgstr "joulu" #: ../output.py:318 msgid "Trying other mirror." msgstr "Kokeillaan toista peilipalvelinta." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nimi : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arkkitehtuuri : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoch : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Versio : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Julkaisu : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Koko : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Asennuslähde : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Asennuslähteestä: %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Toimittaja : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Toimitusaika : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Käännösaika : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Asennusaika : %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Asentaja : %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Muuttanut : %s" #: ../output.py:612 msgid "Summary : " msgstr "Yhteenveto :" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Lisenssi :" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Kuvaus : " #: ../output.py:684 msgid "y" msgstr "k" #: ../output.py:684 msgid "yes" msgstr "kyllä" #: ../output.py:685 msgid "n" msgstr "e" #: ../output.py:685 msgid "no" msgstr "ei" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Onko tämä ok [k/E]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Ryhmä: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Ryhmätunnus: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Kuvaus: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Pakolliset paketit:" #: ../output.py:791 msgid " Default Packages:" msgstr " Oletuspaketit:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Valinnaiset paketit:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Ehdolliset paketit:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paketti: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Tällä paketilla ei ole riippuvuuksia" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " riippuvuus: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Toteutumaton riippuvuus" #: ../output.py:901 msgid "Matched from:" msgstr "Vastaavuus :" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Lisenssi : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Tiedostonimi: %s" #: ../output.py:923 msgid "Other : " msgstr "Muuta : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Kokonaislatausmäärää laskettaessa tapahtui virhe" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Koko yhteensä: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Ladattavaa yhteensä: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Koko asennettuna: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Asennuskokoa laskettaessa tapahtui virhe" #: ../output.py:1039 msgid "Reinstalling" msgstr "Asennetaan uudelleen" #: ../output.py:1040 msgid "Downgrading" msgstr "Varhennetaan" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Asennetaan riippuvuuksien vuoksi" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Päivitetään riippuvuuksien vuoksi" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Poistetaan riippuvuuksien vuoksi" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Ohitettiin (riippuvuusongelmia)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Ei asennettu" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paketti" #: ../output.py:1075 msgid "Arch" msgstr "Arkkitehtuuri" #: ../output.py:1076 msgid "Version" msgstr "Versio" #: ../output.py:1076 msgid "Repository" msgstr "Asennuslähde" #: ../output.py:1077 msgid "Size" msgstr "Koko" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " korvaa %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Transaktion yhteenveto\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Asennetaan %5.5s paketti(a)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Päivitetään %5.5s paketti(a)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Poistetaan %5.5s paketti(a)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Asennetaan uudelleen %5.5s paketti(a)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Varhennetaan %5.5s paketti(a)\n" #: ../output.py:1165 msgid "Removed" msgstr "Poistettu" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Poistettu riippuvuuksia" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Asennettu riippuvuuksia" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Päivitetty riippuvuuksia" #: ../output.py:1172 msgid "Replaced" msgstr "Korvattu" #: ../output.py:1173 msgid "Failed" msgstr "Epäonnistui" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "kahden" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Nykyinen lataus peruttiin, %skeskeytä (ctrl-c) uudelleen%s %s%s%s sekunnin aikana\n" "ohjelman lopettamiseksi.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "käyttäjä keskeytti" #: ../output.py:1300 msgid "Total" msgstr "Yhteensä" #: ../output.py:1322 msgid "I" msgstr "A" #: ../output.py:1323 msgid "O" msgstr "Vanh." #: ../output.py:1324 msgid "E" msgstr "P" #: ../output.py:1325 msgid "R" msgstr "U" #: ../output.py:1326 msgid "D" msgstr "Varh." #: ../output.py:1327 msgid "U" msgstr "P" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Järjestelmä" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Annettu virheellinen transaktiotunnus tai paketit" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Kirjautunut käyttäjä" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "Tunniste" #: ../output.py:1489 msgid "Date and time" msgstr "Päivämäärä ja kellonaika" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Toiminnot" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Muutettu" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Transaktiotunnusta ei annettu" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Annettiin virheellinen transaktiotunnus" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Annettua transaktiotunnusta ei löytynyt" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Löytyi useampi kuin yksi transaktiotunnus!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Transaktiotunnusta tai pakettia ei annettu" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Varhennettu" #: ../output.py:1688 msgid "Older" msgstr "Vanhempi" #: ../output.py:1688 msgid "Newer" msgstr "Uudempi" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Transaktiotunnus :" #: ../output.py:1728 msgid "Begin time :" msgstr "Aloitusaika :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "RPM-tietokanta alussa :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "Lopetusaika :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "RPM-tietokanta lopussa:" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Käyttäjä :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Lopetuskoodi :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Keskeytetty" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "Epäonnistui:" #: ../output.py:1779 msgid "Success" msgstr "Onnistui" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Komentorivi :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Tallennetut lisätiedot: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transaktio suoritettiin:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Muutetut paketit:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Ohitetut paketit:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb:n ongelmia:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Sovelman tuloste:" #: ../output.py:1831 msgid "Errors:" msgstr "Virheet:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Asennus" #: ../output.py:1839 msgid "Dep-Install" msgstr "Riippuvuuden asennus" #: ../output.py:1841 msgid "Obsoleting" msgstr "Vanhentava" #: ../output.py:1842 msgid "Erase" msgstr "Poisto" #: ../output.py:1843 msgid "Reinstall" msgstr "Uudelleenasennus" #: ../output.py:1844 msgid "Downgrade" msgstr "Varhennus" #: ../output.py:1846 msgid "Update" msgstr "Päivitys" #: ../output.py:1909 msgid "Time" msgstr "Aika" #: ../output.py:1935 msgid "Last day" msgstr "Eilen" #: ../output.py:1936 msgid "Last week" msgstr "Viime viikolla" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Viimeisen kahden viikon aikana" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Viimeisen kolmen kuukauden aikana" #: ../output.py:1939 msgid "Last 6 months" msgstr "Viimeisen kuuden kuukauden aikana" #: ../output.py:1940 msgid "Last year" msgstr "Viime vuonna" #: ../output.py:1941 msgid "Over a year ago" msgstr "Yli vuosi sitten" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Transaktiota %s ei löytynyt" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Transaktiotunnus:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Käytettävissä olevaa historiatietoa:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Lisätietoja ei löytynyt tällä nimellä" #: ../output.py:2106 msgid "installed" msgstr "asennettavaksi" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "poistettavaksi" #: ../output.py:2109 msgid "reinstalled" msgstr "asennettavaksi uudelleen" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "päivitettäväksi" #: ../output.py:2113 msgid "obsoleted" msgstr "vanhennettavaksi" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Suoritetaan transaktiotarkistusta" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" "--> Aloitetaan riippuvuuksien tarkistus uudelleen uusien muutosten kanssa." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Riippuvuuksien tarkistus valmistui" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Käsitellään riipuvuutta: %s paketille: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Pidetään paketti: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Ratkaisematon riippuvuus: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paketti: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Vaatii: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Ei löytynyt" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Päivittää" #: ../output.py:2197 msgid "Downgraded By" msgstr "Varhentaa" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Vanhentaa" #: ../output.py:2216 msgid "Available" msgstr "Saatavilla" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Käsitellään ristiriitaa: %s on ristiriidassa paketin %s kanssa" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Täytetään transaktiojoukkoa valituilla paketeilla. Odota hetki." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Ladataan paketin %s otsaketta transaktiojoukkoon lisäämseksi." #: ../utils.py:99 msgid "Running" msgstr "Suoritetaan" #: ../utils.py:100 msgid "Sleeping" msgstr "Unessa" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Ei voi keskeyttää" #: ../utils.py:102 msgid "Zombie" msgstr "Zombi" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Jäljitetään/Pysäytetty" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Tuntematon" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Toinen ohjelma on: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Toinen ohjelma on: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Muisti : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Aloitettu : %s - %s sitten" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Tila : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Lopetetaan käyttäjän peruttua" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Lopetetaan putken katkettua" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Toinen ohjelma pitää tällä hetkellä yumin lukkoa. Lopetetaan, kuten " "exit_on_lock määrää" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit-virhe: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum-virhe: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Virhe: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Ongelman pystyy ehkä kiertämään valitsimella --skip-broken" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" " Kannattaa myös kokeilla komennon rpm -Va --nofiles --nodigest suorittamista" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Tuntematon virhe: lopetuskoodi: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Riippuvuudet on ratkaistu" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Valmis!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Vain pääkäyttäjä voi suorittaa tämän komennon." #: ../yumcommands.py:59 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" "Pakettien tarkistaminen GPG-avainten avulla on käytössä, se on hyvä.\n" "Yhtään GPG-avainta ei kuitenkaan ole asennettuna. Asennettavaksi aiottuja\n" "paketteja varten on ladattava ja asennettava GPG-avaimet.\n" "Avaimet voi asentaa suorittamalla komennon:\n" " rpm --import julkinen.gpg.avain\n" "\n" "\n" "Käytettävän avaimen URL:n voi määritellä asennuslähteen asetusten\n" "â€gpgkeyâ€-valitsimella. Tällöin yum asentaa avaimen automaattisesti.\n" "\n" "Lisätietoja saattaa olla jakelun tai pakettien tarjoajan ohjeissa.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Virhe: komennolle %s on annettava luettelo paketeista" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Virhe: Tarvitaan vastaava kohta" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Virhe: Tarvitaan ryhmä tai ryhmäluettelo" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Virhe: clean vaatii valitsimen: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Virhe: virheellinen clean-argumentti: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "shellille ei annettu argumenttia" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Tiedostonimi välitettiin shellille: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" "Tiedosto %s annettiin argumenttina shellille, mutta sitä ei ole olemassa." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Virhe: useampi kuin yksi tiedosto annettiin argumenttina shellille." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Yhtään asennuslähdettä ei ole käytössä.\n" " Suorita â€yum repolist all†kaikkien asennuslähteiden luettelemiseksi.\n" " Voit ottaa asennuslähteitä käyttöön komennolla yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKETTI..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Asenna paketti tai paketteja järjestelmään" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Aloitetaan asennusprosessi" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKETTI...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Päivitä paketti tai paketteja järjestelmään" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Aloitetaan päivitysprosessi" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Synkronoi asennetut paketit uusimpiin saatavilla oleviin versioihin" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Aloitetaan jakelusynkronointiprosessi" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Näytä tietoja paketista tai pakettiryhmästä" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Asennetut paketit" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Saatavilla olevat paketit" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Lisäpaketit" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Päivitetyt paketit" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Vanhentavat paketit" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Äskettäin lisätyt paketit" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Ei yhtään vastaavaa pakettia lueteltavaksi" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Luettele paketti tai pakettiryhmä" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Poista paketti tai paketteja järjestelmästä" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Aloitetaan poistoprosessi" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Aloitetaan ryhmäprosessi" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ei ryhmiä joille suorittaa komentoa" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Luettele saatavilla olevat pakettiryhmät" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Asenna ryhmään kuuluvat paketit järjestelmään" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Poista ryhmään kuuluvat paketit järjestelmästä" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Näytä tietoja pakettiryhmästä" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Luo metadatavälimuisti" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Luodaan välimuistitiedostoja kaikille metadatatiedostoille" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Tämä voi kestää jonkin aikaa riippuen tietokoneen nopeudesta" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Metadatavälimuisti on luotu" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Poista välimuistissa oleva data" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Etsi annetun arvon tarjoava paketti" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Etsi saatavilla olevia pakettipäivityksiä" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Etsi pakettitiedoista annettua merkkijonoa" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Etsitään paketteja: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Päivitä paketit ottaen vanhennukset huomioon" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Aloitetaan päivitysprosessi" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Asenna paikallinen RPM-tiedosto" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Aloitetaan paikallinen pakettiprosessi" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Selvitä mikä paketti tarjoaa annetun riippuvuuden" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Etsitään riippuvuutta paketeista:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Suorita interaktiivinen yum-komentorivi" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Asetetaan Yum-komentoriviä" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Luettele paketin riippuvuudet" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Etsitään riippuvuuksia: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Näytä asetetut asennuslähteet" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "käytössä" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "poissa käytöstä" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Lähdetunnus : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Lähdenimi : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Lähteen tila : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Lähderevisio : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Lähteen tagit : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Lähteen jakelutagit: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Lähde päivitetty : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Lähteen paketit : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Lähteen koko : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Lähteen baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Lähteen metalink : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Päivitetty : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Lähteen peilit : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Ei koskaan (viimeksi: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Heti (viimeksi: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s sekunti(a) (viimeksi: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Lähde vanhentuu : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Lähde ohittaa : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Lähde sisältää : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Lähde ohitettu : " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "lähdetunnus" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "tila" #: ../yumcommands.py:1062 msgid "repo name" msgstr "lähdenimi" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Näytä käyttöohjeviesti" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Ei ohjeita komennolle %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "muut nimet: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "toinen nimi: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Aloitetaan uudelleenasennusprosessi" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "asenna paketti uudelleen" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Aloitetaan varhennusprosessi" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "varhenna paketti" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" "Näytä koneella ja/tai käytettävissä olevissa asennuslähteissä oleva versio" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum-versioryhmät:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Ryhmä:" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Paketit:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Asennettu:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Asennettu ryhmässä:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Saatavilla:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Saatavilla ryhmässä:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Näytä tai käytä transaktiohistoriaa" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Virheellinen historyn alikomento, käytä: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Sinulla ei ole historiatietokannan käyttöoikeutta" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Etsi ongelmia rpm-tietokannasta" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Toinen ohjelma pitää tällä hetkellä yumin lukkoa, odotetaan että se " "lopettaa..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Ratkaistaan riippuvuuksia" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Lopetetaan käyttäjän peruttua." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Asetetaan TransactionSetsit ennen kuin asetusluokka on käytössä" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Virheellinen tsflag asetustiedostossa: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Etsitään pkgSackista riippuvuutta: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Jäsen: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s muutettu asennukseksi" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Lisätään paketti %s tilassa %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Poistetaan paketti %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s vaatii: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s vaatii %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Tarvittava vaatimus on jo etsitty, huijataan" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Tarvittava vaatimus ei ole pakettinimi. Etsitään: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Mahdollinen tarjoaja: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Tila %s riippuvuuden %s: %s tarjoajalla" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Riippuvuuden %s: %s tarjoavan paketin tila" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" "TSINFO: paketti %s, joka vaatii riippuvuuden %s on merkitty poistettavaksi" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: Vanhennetaan paketti %s paketilla %s riippuvuuden ratkaisemiseksi." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Päivitetään paketti %s riippuvuuden ratkaisemiseksi." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Päivityspolkua ei löydetty riippuvuudelle: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Pikavastaavuus %s vaatimukselle %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s on tarjoavissa paketeissa, mutta se on jo asennettuna, poistetaan." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Mahdollisella ratkaisevalla paketilla %s on uudempi instanssi ts:ssä." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" "Mahdollisella ratkaisevalla paketilla %s on uudempi instanssi asennettuna." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "paketti %s on jo ts:ssä, ohitetaan" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Merkitään paketti %s päivitykseksi paketille %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Merkitään %s asennukseksi paketille %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Onnistui - tyhjä transaktio" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Käynnistetään silmukka uudelleen" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Riippuvuuksien käsittely päättyy" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Onnistui – riippuvuudet on ratkaistu" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Tarkistetaan paketin %s riippuvuuksia" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "etsitään riippuvuutta %s paketille %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Suoritetaan compare_providers() paketeille %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "po:ssa %s on parempi arkkitehtuuri" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "paketti %s vanhentaa paketin %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist vertasi paketteja %s ja %s arkkitehtuurilla %s\n" " Voittaja: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "paketeilla %s ja %s on yhteinen lähde-RPM" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "peruspaketti %s on asennettu paketille %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "yhteinen %s merkin mittainen etuliite paketeilla %s ja %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "vaatii vähintään: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Voittaja: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Häviäjä (arvolla %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Paras järjestys %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Asennuslähde %r: Virhe jäsennettäessä asetuksia: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Asennuslähteen %r asetuksista puuttuu nimi, käytetään tunnistetta" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "liitännäiset on jo alustettu" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Luetaan paikallista RPM-tietokantaa" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Asetetaan pakettisäkkejä" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "asennuslähteen %s oliosta puuttuu _resetSack-metodi\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "siksi tätä asennuslähdettä ei voi palauttaa alkutilaan.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Rakennetaan päivitysoliota" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() poistetaan jossakin Yumin tulevassa versiossa.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Haetaan ryhmien metadataa" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Lisätään ryhmätiedosto asennuslähteestä: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Ryhmätiedoston lisääminen asennuslähteelle epäonnistui: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Yhtään ryhmää ei ole saatavilla mistään asennuslähteestä" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Haetaan pakettitagien metadataa" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Lisätään tagit asennuslähteestä: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Pakettitagien lisääminen asennuslähteelle epäonnistui: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Tuodaan lisää tiedostoluettelotietoa" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Ohjelma %s%s%s on paketissa yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Keskeneräisiä transaktioita on jäljellä. Niiden päättämiseksi on suositeltua" " suorittaa ensin yum-complete-transaction." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Yritettiin poistaa paketti â€%sâ€, mutta se on suojattu" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Riippuvuusongelmien vuoksi ohitetut paketit:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s asennuslähteestä %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "** Löytyi %d rpmdb-ongelma(a), â€yum check†-tuloste:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Varoitus: RPM-tietokantaa on muutettu yumin ulkopuolella." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "puuttuvia riippuvuuksia" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "asennettu konflikti" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Varoitus: sovelmien virheitä tai muita virheitä, jotka eivät ole vakavia, " "tapahtui transaktion aikana." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Transaktiota ei voitu aloittaa:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Transaktiota ei voitu suorittaa." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Transaktiotiedoston %s poistaminen epäonnistui" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s piti olla asennettuna, mutta se ei ole!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s piti olla poistettu, mutta se ei ole!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Lukkoa %s ei voitu avata: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Ei voida tarkistaa onko PID %s aktiivinen" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Lukko %s on olemassa: toinen kopio on suorituksessa pidillä %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Ei voitu luoda lukkoa sijaintiin %s: %s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Paketti ei vastaa odotettua latausta. Ehdotus: suorita yum --enablerepo=%s " "clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ei voitu laskea tarkistussummaa" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Paketti ei vastaa tarkistussummaa" #: ../yum/__init__.py:1946 #, 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:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "käytetään paikallista kopiota paketista %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Lataushakemistossa %s ei ole tarpeeksi vapaata tilaa\n" " * vapaana %s\n" " * tarvitaan %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Otsake ei ole täydellinen." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" 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:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Julkista avainta pakettia %s varten ei ole asennettu" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Ongelma paketin %s avaamisessa" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Paketin %s julkiseen avaimeen ei luoteta" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Pakettia %s ei ole allekirjoitettu" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Ei voida poistaa tiedostoa %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "tiedosto %s on poistettu" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Ei voida poistaa %s-tyyppistä tiedostoa %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s-tyyppinen tiedosto %s on poistettu" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s-tyyppistä tiedostoa on poistettu" #: ../yum/__init__.py:2327 #, 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:2333 #, 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:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() poistetaan jossakin Yumin tulevassa versiossa. Käytä sen " "sijaan searchGenerator()-metodia.\n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Etsitään %d pakettia" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "etsitään pakettia %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "etsitään tiedostoista" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "etsitään tarjoajista" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Asetetuille asennuslähteille ei ole saatavilla ryhmädataa" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Ryhmää nimeltä %s ei ole olemassa" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "pakettia %s ei ollut merkitty kuuluvaksi ryhmään %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Lisätään paketti %s ryhmästä %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Pakettia nimeltä %s ei ole saatavilla asennusta varten" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Paketti-tuplea %s ei löytynyt pakettisäkistä" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Paketti-tuplea %s ei löytynyt RPM-tietokannasta" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Riippuvuudelle %s ei löytynyt pakettia" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Pakettiolio ei ollutkaan pakettiolioinstanssi" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Mitään ei määritelty asennettavaksi" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Etsitään virtuaalista tai tiedostotarjoajaa argumentille %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Mikään ei vastaa argumenttia: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Paketti %s on asennettu, mutta ei saatavilla" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Yhtään pakettia ei ole saatavilla asennettavaksi" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paketti: %s – on jo transaktiojoukossa" #: ../yum/__init__.py:3550 #, 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:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Paketin %s vanhentaa paketti %s, mutta vanhentava paketti ei tarjoa " "riippuvuuksia" #: ../yum/__init__.py:3558 #, 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:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Paketti %s on jo asennettuna ja uusin versio" #: ../yum/__init__.py:3580 #, 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:3684 msgid "Updating Everything" msgstr "Päivitetään kaikki" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, 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:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, 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:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Ei päivitetä vanhennettua pakettia: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, 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:3982 msgid "No package matched to remove" msgstr "Yhtään poistopyyntöä vastaavaa pakettia ei ole" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Ohitetaan käytössä oleva ydin: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Poistetaan %s transaktiosta" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Ei voida avata pakettia: %s. Ohitetaan." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Tutkitaan %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Deltarpm:ää %s ei voi asentaa paikallisesti. Ohitetaan." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, 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:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "Pakettia %s ei voi asentaa. Asennettu paketti %s vanhentaa sen." #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Pakettia %s ei ole asennettu, sitä ei voida päivittää. Suorita yum install " "-komento paketin asentamiseksi." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Ohitetaan paketti %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Merkitään paketti %s asennettavaksi" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Merkitään paketti %s päivitykseksi paketille %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: ei päivitä asennettua pakettia" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Ei voida avata tiedostoa: %s. Ohitetaan." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Ongelma uudelleenasennuksessa: poistopyyntöä vastaavaa pakettia ei ole" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Ongelma uudelleenasennuksessa: asennuspyyntöä vastaavaa pakettia %s ei ole" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Yhtään pakettia ei ole saatavilla varhennettavaksi" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Paketille %s sallitaan useita asennuksia, ohitetaan." #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ei vastaavuutta saatavilla olevalle paketille: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Vain päivitys saatavilla paketille: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Varhentaminen epäonnistui: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG-avaimen nouto epäonnistui: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Virheellinen GPG-avain osoitteesta %s: %s" #: ../yum/__init__.py:4576 #, 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:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "Osoitteesta %s ladattu GPG-avain (0x%s) on jo asennetuna" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Avaimen tuonti epäonnistui (koodi %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Avaimen tuonti onnistui" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" "Asennuslähteelle â€%s†luetellut GPG-avaimet on jo asennettu, mutta ne eivät vastaa tätä pakettia.\n" "Tarkista että tälle asennuslähteelle on asetettu oikeat avainten URL:t." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Avainten tuonti ei auttanut, ovatko avaimet vääriä?" #: ../yum/__init__.py:4713 #, 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:4754 msgid "Key import failed" msgstr "Avaimen tuonti epäonnistui" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Asennuslähteelle â€%s†luetellut GPG-avaimet on jo asennettu, mutta ne ovat virheelliset.\n" "Tarkista että tälle asennuslähteelle on asetettu oikeat avainten URL:t." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Sopivaa peilipalvelinta ei löytynyt." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Paketteja ladatessa tapahtui virheitä." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Ilmoita tästä ongelmasta: %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Testitransaktion virheitä: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Välimuistihakemiston asettaminen epäonnistui %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Ladatut liitännäiset: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ei vastaavaa liitännäistä pyynnölle: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Ei ladata liitännäistä â€%sâ€, koska se on poissa käytöstä" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Liitännäistä â€%s†ei voi tuoda" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Liitännäinen â€%s†ei määrittele vaadittua API-versiota" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Liitännäinen â€%s†vaatii API:n %s. Tuettu API on %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Ladataan liitännäinen â€%sâ€" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "Liitännäisten hakupolussa on useita liitännäisiä nimeltä â€%sâ€" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Asetustiedostoa %s ei löytynyt" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Liitännäisen %s asetustiedostoa ei löytynyt" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "komentojen rekisteröintiä ei tueta" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "on puuttuvia riippuvuuksia" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "on asennettuja konflikteja" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "paketti %s on paketin %s duplikaatti" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "paketin %s vanhentaa paketti %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s tarjoaa %s, mutta sitä ei löydy" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Paketoidaan uudelleen" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" "Otsaketta ei voi avata tai se ei vastaa nimeä ja arkkitehtuuria %s, %s" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM %s ei läpäise md5-tarkistusta" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "RPM-tietokantaa ei voitu avata lukemista varten. Onko se jo käytössä?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Saatiin tyhjä otsake, virhetilanne" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Vioittunut otsake %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Virhe avattaessa RPM:ää %s – virhe %s" yum-3.4.3/po/it.po0000664000076400007640000023127511602434452012732 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Italian (http://www.transifex.net/projects/p/yum/team/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Aggiornamento" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Eliminazione" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installazione" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Reso obsoleto" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Aggiornato" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Eliminato" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Installato" #: ../callback.py:130 msgid "No header - huh?" msgstr "Nessun header - come?" #: ../callback.py:168 msgid "Repackage" msgstr "Reimpacchetto" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Errore: stato di output non valido: %s per %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Eliminato: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Rimozione in corso" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Pulizia" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Comando \"%s\" già definito" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Settaggio repository" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Lettura dei metadati dei repository dai file locali" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Errore di configurazione: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Errore opzioni: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Installato: %s-%s da %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Build : %s su %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Committed: %s su %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "È necessario specificare un comando" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Comando sconosciuto: %s. Eseguire %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Requisiti disco:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Servono almeno altri %dMB sul filesystem %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Riepilogo errori\n" "----------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "La transazione non contiene alcuna operazione da eseguire." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Uscita richiesta dall'utente" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Download dei pacchetti:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Errore nel download dei pacchetti:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ERRORE Occorre aggiornare rpm per gestire:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM deve essere aggiornato" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Riportare questo errore su %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Test di transazione in corso" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Errore nel controllo transazione:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Test di transazione eseguito con successo" #: ../cli.py:600 msgid "Running Transaction" msgstr "Transazione in corso" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "L'importazione automatica delle chiavi è disabilitata in modalità non interattiva.\n" "Usare \"-y\" per abilitarla." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Forse si intendeva: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Pacchetto %s%s%s disponibile, ma non installato." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Nessun pacchetto %s%s%s disponibile." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Pacchetto(i) da installare" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Niente da fare" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pacchetti marcati per l'aggiornamento" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Nessun pacchetto marcato per l'aggiornamento" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d pacchetti marcati per la Distribution Synchronization" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Nessun pacchetto marcato per la Distribution Synchronization" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pacchetti marcati per la rimozione" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Nessun pacchetto marcato per la rimozione" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Downgrade dei pacchetti" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (da %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Pacchetto installato %s%s%s%s non disponibile." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Pacchetto(i) da reinstallare" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Nessun pacchetto specificato" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Trovato: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Attenzione: Nessun pacchetto trovato per: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Nessuna corrispondenza trovata" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nessun pacchetto trovato per %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Pulizia dei repository:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Pulizia completa" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Pulizia header" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Pulizia pacchetti" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Pulizia metadati xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Pulizia cache database" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Pulizia metadati expire-cache" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Pulizia cache di rpmdb" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Pulizia plugin" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Gruppi installati:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Gruppi disponibili:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Fatto" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Attenzione: Il gruppo %s non esiste." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Nessun pacchetto in alcun gruppo richiesto è disponibile per l'installazione" " o l'aggiornamento" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pacchetto(i) da installare" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Non esiste nessun gruppo con nome %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Nessun pacchetto da rimuovere dai gruppi" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d pacchetto(i) da eliminare" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Il pacchetto %s è già installato, verrà ignorato" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Esclusione del pacchetto non comparabile %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Nessun altro %s installato, inserimento in lista per potenziale " "installazione" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opzioni plugin" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Errore di linea di comando: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: l'opzione %s richiede un argomento" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color deve specificare uno tra: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "mostra questo messaggio di aiuto ed esce" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "tollera gli errori" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "esegui esclusivamente in cache, senza aggiornarla" #: ../cli.py:1652 msgid "config file location" msgstr "percorso del file di configurazione" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "tempo massimo di attesa comando" #: ../cli.py:1657 msgid "debugging output level" msgstr "livello output di debug" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "mostra i duplicati nei repo, per i comandi list/search" #: ../cli.py:1663 msgid "error output level" msgstr "livello output per gli errori" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "livello output di debug per rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "modalità silenziosa" #: ../cli.py:1671 msgid "verbose operation" msgstr "mostra più messaggi di log" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "risponde si a tutte le domande" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "mostra la versione di yum ed esce" #: ../cli.py:1676 msgid "set install root" msgstr "imposta la root d'installazione" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "abilita uno o più repository (wildcard consentite)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "disabilita uno o più repository (wildcard consentite)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "esclude pacchetti per nome o glob" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "disabilita l'esclusione dal main, per un repo o per tutto" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "abilita l'elaborazione degli obsoleti durante l'aggiornamento" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "disabilita i plugin di Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "disabilita il controllo della firma gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "disabilita i plugin per nome" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "abilita i plugin per nome" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "ignora pacchetti con problemi di risoluzione dipendenze" #: ../cli.py:1706 msgid "control whether color is used" msgstr "controlla se il colore è usato" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "imposta $releasever nella configurazione di yum e nei file dei repo" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "imposta configurazioni arbitrarie e opzioni dei repository" #: ../output.py:307 msgid "Jan" msgstr "Gen" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Apr" #: ../output.py:307 msgid "May" msgstr "Mag" #: ../output.py:307 msgid "Jun" msgstr "Giu" #: ../output.py:308 msgid "Jul" msgstr "Lug" #: ../output.py:308 msgid "Aug" msgstr "Ago" #: ../output.py:308 msgid "Sep" msgstr "Set" #: ../output.py:308 msgid "Oct" msgstr "Ott" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Dic" #: ../output.py:318 msgid "Trying other mirror." msgstr "Connessione ad un altro mirror in corso." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nome : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arch : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoch : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Versione : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Rilascio : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Dimensione : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Dal repo : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Committer : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Data commit : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Data build : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Data inst. : %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Installato da: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Modificato da: %s" #: ../output.py:612 msgid "Summary : " msgstr "Sommario : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licenza : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Descrizione : " #: ../output.py:684 msgid "y" msgstr "s" #: ../output.py:684 msgid "yes" msgstr "si" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "no" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Procedere [s/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Gruppo: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Id-Gruppo: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Descrizione: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Pacchetti necessari:" #: ../output.py:791 msgid " Default Packages:" msgstr " Pacchetti di default:" #: ../output.py:792 msgid " Optional Packages:" msgstr "Pacchetti opzionali:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Pacchetti condizionali:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "pacchetto: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Nessuna dipendenza per questo pacchetto" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " dipendenze: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Dipendenza non soddisfatte" #: ../output.py:901 msgid "Matched from:" msgstr "Corrispondenza trovata in:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licenza : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Nome file : %s" #: ../output.py:923 msgid "Other : " msgstr "Altro : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" "Si è verificato un errore nel calcolo della dimensione totale di download" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Dimensione totale: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Dimensione totale del download: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Dimensione installata: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" "Si è verificato un errore nel calcolo della dimensione del pacchetto " "installato" #: ../output.py:1039 msgid "Reinstalling" msgstr "Reinstallazione" #: ../output.py:1040 msgid "Downgrading" msgstr "Downgrade" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Installazioni per dipendenze" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Aggiornamenti per dipendenze" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Rimozioni per dipendenze" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Saltato (problemi di dipendenze)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Non installato" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Pacchetto" #: ../output.py:1075 msgid "Arch" msgstr "Arch" #: ../output.py:1076 msgid "Version" msgstr "Versione" #: ../output.py:1076 msgid "Repository" msgstr "Repository" #: ../output.py:1077 msgid "Size" msgstr "Dim." #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " in sostituzione di %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Riepilogo della transazione\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Installa %5.5s pacchetti\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Aggiorna %5.5s pacchetti\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Elimina %5.5s pacchetti\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Reinstalla %5.5s pacchetti\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Downgrade %5.5s pacchetti\n" #: ../output.py:1165 msgid "Removed" msgstr "Eliminato" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Dipendenza rimossa" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Dipendenza installata" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Dipendenza aggiornata" #: ../output.py:1172 msgid "Replaced" msgstr "Sostituito" #: ../output.py:1173 msgid "Failed" msgstr "Fallito" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "due" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Download interrotto, %spremi nuovamente (ctrl-c)%s entro %s%s%s secondi\n" "per uscire.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "interruzione utente" #: ../output.py:1300 msgid "Total" msgstr "Totale" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Sistema" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "L'ID transazione, o il pacchetto specificato, non è corretto" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Utente loggato" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Data e ora" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Azione/i" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Modifiche" #: ../output.py:1538 msgid "No transaction ID given" msgstr "ID transazione non specificato" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "L'ID transazione specificato non è corretto" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "L'ID transazione specificato non è stato trovato" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Sono stati trovati ID transazione multipli!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "ID transazione o pacchetto non specificato" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Downgraded" #: ../output.py:1688 msgid "Older" msgstr "Meno recente" #: ../output.py:1688 msgid "Newer" msgstr "Più recente" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "ID transazione :" #: ../output.py:1728 msgid "Begin time :" msgstr "Ora inizio :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "rpmdb iniziale :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "Ora termine :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "rpmdb finale :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Utente :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Return-Code : " #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Interrotto" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "Errore:" #: ../output.py:1779 msgid "Success" msgstr "Completato" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Linea di comando :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Informazioni non predefinite addizionali salvate: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transazione eseguita con:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Pacchetti modificati:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Pacchetti ignorati:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problemi di rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Output della scriptlet:" #: ../output.py:1831 msgid "Errors:" msgstr "Errori:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Install" #: ../output.py:1839 msgid "Dep-Install" msgstr "Dep-Install" #: ../output.py:1841 msgid "Obsoleting" msgstr "Obsoleto" #: ../output.py:1842 msgid "Erase" msgstr "Eliminato" #: ../output.py:1843 msgid "Reinstall" msgstr "Reinstall" #: ../output.py:1844 msgid "Downgrade" msgstr "Downgrade" #: ../output.py:1846 msgid "Update" msgstr "Update" #: ../output.py:1909 msgid "Time" msgstr "Data" #: ../output.py:1935 msgid "Last day" msgstr "Ultime 24 ore" #: ../output.py:1936 msgid "Last week" msgstr "Ultima settimana" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Ultime 2 settimane" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Ultimi 3 mesi" #: ../output.py:1939 msgid "Last 6 months" msgstr "Ultimi 6 mesi" #: ../output.py:1940 msgid "Last year" msgstr "Ultimi 12 mesi" #: ../output.py:1941 msgid "Over a year ago" msgstr "Più di un anno" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Transazione %s non trovata" #: ../output.py:1990 msgid "Transaction ID:" msgstr "ID transazione:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Informazioni addizionali sulla cronologia:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: nessuna informazione addizionale trovata con questo nome" #: ../output.py:2106 msgid "installed" msgstr "installato" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "eliminato" #: ../output.py:2109 msgid "reinstalled" msgstr "reinstallato" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "aggiornato" #: ../output.py:2113 msgid "obsoleted" msgstr "reso obsoleto" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Esecuzione del controllo di transazione" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" "--> Riavvio della risoluzione delle dipendenze con i nuovi cambiamenti." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Risoluzione delle dipendenze completata" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Elaborazione dipendenza: %s per il pacchetto: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Pacchetto mantenuto: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Dipendenza non risolta: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Pacchetto: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Richiede: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Non trovato" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Aggiornato da" #: ../output.py:2197 msgid "Downgraded By" msgstr "Downgraded da" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Reso obsoleto da" #: ../output.py:2216 msgid "Available" msgstr "Disponibile" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Analisi conflitto: %s va in conflitto con %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Inizializzazione della transazione con i pacchetti selezionati. " "Attendere prego." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Download dell'header per includere %s nel set di transazione." #: ../utils.py:99 msgid "Running" msgstr "In esecuzione" #: ../utils.py:100 msgid "Sleeping" msgstr "In attesa" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Non interrompibile" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Traced/Interrotto" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Sconosciuto" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " L'altra applicazione è: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " L'altra applicazione è: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memoria : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Avviato: %s - %s fa" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Stato : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Uscita forzata da utente" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Uscita per broken pipe" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Un'altra applicazione sta bloccando l'esecuzione di yum; arresto come " "configurato da exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Errore ritorno del plugin: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Errore di yum: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Errore: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Si può provare ad usare --skip-broken per aggirare il problema" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Provare ad eseguire: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Errore sconosciuto: Codice di uscita: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Dipendenze risolte" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Completo!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Occorre avere i privilegi di root per eseguire questo comando." #: ../yumcommands.py:59 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" "Il controllo dei pacchetti via chiavi GPG è abilitato. Ottima scelta.\n" "Tuttavia, non ci sono chiavi pubbliche GPG installate: è necessario scaricare\n" "installare le chiavi dei repository che si desidera utilizzare.\n" "Per importare una chiave pubblica GPG eseguire il comando:\n" " rpm --import public.gpg.key\n" "\n" "\n" "In alternativa è possibile specificare gli indirizzi delle chiavi dei\n" "repository nell'opzione 'gpgkey' dei relativi file di configurazione; yum\n" "le installerà automaticamente.\n" "\n" "Per altre informazioni contattare il supporto della distribuzione.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Errore: occorre passare una lista di pkg a %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Errore: richiesto un elemento per testare il match" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Errore: un gruppo o una lista di gruppi sono necessari" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Errore: il comando clean richiede l'opzione: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Errore: argomento per il comando clean non valido: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Nessun argomento per la shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Nome file passato alla shell: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Il file %s dato come argomento per la shell non esiste." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Errore: più di un file passato come argomento alla shell." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Non ci sono repository abilitati.\n" " Eseguire \"yum repolist all\" per vedere la lista dei repository.\n" " E' possibile abilitare i repository desiderati con yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PACCHETTO..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Installa uno o più pacchetti nel sistema" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Impostazione processo di installazione" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PACCHETTO...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Aggiorna uno o più pacchetti nel sistema" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Impostazione processo di aggiornamento" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Sincronizza i pacchetti installati con le ultime versioni disponibili" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Impostazione processo di Distribution Synchronization" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Visualizza dettagli su un pacchetto o un gruppo di pacchetti" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Pacchetti installati" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Pacchetti disponibili" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Pacchetti extra" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Aggiornamenti disponibili" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Pacchetti resi obsoleti" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Pacchetti aggiunti di recente" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Nessun pacchetto presente in lista" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Elenca un pacchetto o un gruppo di pacchetti" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Elimina uno o più pacchetti dal sistema" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Impostazione processo di eliminazione" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Impostazione processo di gruppo" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Nessun gruppo sul quale eseguire il comando" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Elenca i gruppi di pacchetti disponibili" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Installa nel sistema i pacchetti di un gruppo" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Elimina dal sistema i pacchetti di un gruppo" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Visualizza i dettagli di un gruppo di pacchetti" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Genera la cache dei metadati" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Creazione dei file di cache per i metadati." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "L'operazione impiegherà del tempo che dipende dalla velocità del computer" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Cache dei metadata creata" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Elimina i dati nella cache" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Determina il pacchetto che fornisce il valore dato" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Controlla la disponibilità di aggiornamenti per i pacchetti" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Cerca il termine passato nei dettagli dei pacchetti" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Ricerca dei pacchetti: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Aggiorna i pacchetti tenendo conto degli obsoleti" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Impostazione processo di upgrade" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Installa un RPM in locale" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Impostazione processo per pacchetti in locale" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Determina quale pacchetto soddisfa la dipendenza specificata" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Ricerca dei pacchetti per le dipendenze:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Esegue una shell di yum interattiva" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Impostazione della shell di yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Elenca le dipendenze di un pacchetto" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Ricerca delle dipendenze: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Mostra i repository di software configurati" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "abilitato" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "disabilitato" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Id-Repo : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Nome-Repo : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Stato-Repo : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Revisione-Repo: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-tags : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tags: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo-updated : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Repo-pkgs : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Dim.-Repo : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Repo-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Aggiornato :" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Repo-mirrors : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Mai (ultimo: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Istantaneo (ultimo: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s secondi (ultimo: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Repo-expire : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-exclude : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-include :" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Repo-excluded: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "id repo" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "stato" #: ../yumcommands.py:1062 msgid "repo name" msgstr "nome repo" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Mostra un'utile guida all'uso" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Nessun aiuto disponibile per %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Impostazione processo di reinstallazione" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "Reinstalla un pacchetto" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Impostazione processo di downgrade" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Esegue il downgrade di un pacchetto" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Mostra una versione del sistema e/o dei repo disponibili." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Gruppi della versione di yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Gruppo :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Pacchetti:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installato:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Group-Installed:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Disponibile:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Group-Available:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Visualizza e gestisci la cronologia delle transazioni" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Sotto comando per history non valido, usare: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Non si dispone dell'accesso alla cronologia." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Identifica gli errori nell'rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Un'altra applicazione sta bloccando l'esecuzione di yum; in attesa che " "esca..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Risoluzione dipendenze" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Uscita su richiesta utente." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() verrà eliminato in una futura versione di yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Impostazione del TransactionSets prima che sia attivo config class" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "tsflag non valido nel file di configurazione: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Ricerca di pkgSack per dip: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Membro: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s convertito in installazione" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Aggiunto il pacchetto %s in modo %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Rimozione pacchetto %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s richiede: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s richiede %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Il requisito necessario è già stato controllato, imbroglio" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Il requisito necessario non è il nome di un pacchetto. Ricerca di: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Provider potenziale: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "La modalità è %s per il provider di %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Modalità per il pacchetto che fornisce %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: il pacchetto %s richiede che %s sia marcato per la rimozione" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: Verrà reso obsoleto %s sostituendolo con %s per risolvere una " "dipendenza." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Aggiornamento di %s per risolvere dip." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" "Impossibile trovare un percorso di aggiornamento delle dipendenze per: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Individuato %s come requisito per %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s è nei pacchetti fornitori ma è già installato, viene rimosso." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" "Il potenziale pacchetto risolutore %s ha già una più recente istanza in ts." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" "Il potenziale pacchetto risolutore %s ha una più recente istanza già " "installata." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s è gia nel set delle transazioni (ts), verrà saltato" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: %s marcato come aggiornamento per %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: %s marcato come da installare per %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Successo - transazione vuota" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Riavvio del ciclo" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Elaborazione delle dipendenze terminata" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Successo - dipendenze risolte" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Controllo delle dipendenze per %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "ricerca di %s come requisito di %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Esecuzione di compare_providers() per %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "migliore architettura in po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s rende obsoleto %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist ha comparato %s a %s su %s\n" " Vincitore: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "sourcerpm comune %s e %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "il pacchetto base %s è installato per %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "prefisso comune di %s tra %s e %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr " richiede almeno: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Vincitore: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Perdente (con %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Ordine migliore: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() verrà eliminato in una futura versione di yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Repository %r: errore nella lettura della configurazione: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" "Nella configurazione non è presente il nome del repo %r, viene usato l'id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "plugin già inizializzati" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() verrà eliminato in una futura versione di yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Lettura del RPMDB locale" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() verrà eliminato in una futura versione di yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() verrà eliminato in una futura versione di yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Impostazione dei Package Sack" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "l'oggetto repo per il repository %s non dispone del metodo _resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "quindi questo repository non può essere resettato.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() verrà eliminato in una futura versione di yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Costruzione oggetto aggiornamenti" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() verrà eliminato in una futura versione di Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Scaricamento metadati del gruppo" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Aggiunta file group dal repository: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Errore durante l'aggiunta del file groups per il repository: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Nessun gruppo disponibile in alcun repository" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Scaricamento metadati pkgtags" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Aggiunta tag dal repository: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Errore aggiungendo i Pkg Tags per il repository: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Import di informazioni addizionali sulla lista di file" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Il programma %s%s%s si trova nel pacchetto yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Ci sono transazioni non completate. Si consiglia di eseguire prima yum-" "complete-transaction per portarle a termine." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Tentativo di rimozione di \"%s\", che è protetto" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Pacchetti ignorati a causa di problemi di dipendenze:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s da %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Trovati %d problemi pre-esistenti nel rpmdb, l'output di 'yum check' è:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Attenzione: RPMDB modificato al di fuori di yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "dipendenze mancanti" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "conflitto installato" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Attenzione: durante la transazione si sono verificati errori di scriptlet o " "altri errori non fatali." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Non è stato possibile iniziare la transazione:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Impossibile eseguire la transazione." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Eliminazione del file di transazione %s fallita" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s doveva essere installato, ma non sembra esserlo!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s doveva essere eliminato, ma non lo è stato!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Impossibile creare il lock su %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Non è possibile controllare se il PID %s è attivo" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Lock %s attivo: altro processo in esecuzione con pid %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Impossibile creare il lock su %s: %s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Il pacchetto non corrisponde al download desiderato. Suggerimento: eseguire " "yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Non è stato possibile calcolare il checksum" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Il pacchetto non corrisponde al checksum" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "il pacchetto ha fallito il checksum ma la cache è abilitata per %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "utilizzo di una copia locale di %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Spazio insufficiente nella cartella di download %s\n" " * libero %s\n" " * necessario %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "L'header non è completo." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Header non presente in cache locale e modalità solo-cache abilitata. " "Impossibile scaricare %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "La chiave pubblica per %s non è installata" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problemi nell'apertura di %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "La chiave pubblica per %s non è trusted" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Il pacchetto %s non è firmato" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Non posso rimuovere %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s eliminato" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Impossibile rimuovere %s file %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s file %s rimosso" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s file rimossi" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Più di una corrispondenza identica nel sack per %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Nessuna corrispondenza per %s.%s %s:%s-%s dall'aggiornamento" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() verrà eliminato in una futura versione di yum. In " "sostituzione usare searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Ricerca dei pacchetti %d" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "ricerca del pacchetto %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "ricerca nelle file entries" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "ricerca nelle provides entries" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Non ci sono informazioni sui gruppi per i repository configurati" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Il gruppo %s non esiste" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "il pacchetto %s non è stato contrassegnato nel gruppo %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Aggiunta del pacchetto %s dal gruppo %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Nessun pacchetto con nome %s disponibile per l'installazione" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Il pacchetto con tupla %s non è stato trovato nel packagesack" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Il pacchetto con tupla %s non è stato trovato nel rpmdb" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nessun pacchetto trovato per %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Package Object non è un'istanza di un oggetto package" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Non è specificato niente da installare" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Controllo dei virtual provide o file-provide per %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Nessuna corrispondenza per l'argomento: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Il pacchetto %s è installato e non disponibile" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Nessun pacchetto disponibile per l'installazione" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Pacchetto: %s - già nel set di transazione" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Il pacchetto %s è reso obsoleto da %s, che è già installato" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Il pacchetto %s è reso obsoleto da %s, ma quest'ultimo non fornisce i " "provide richiesti" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "Il pacchetto %s è reso obsoleto da %s, tentativo di installare %s al suo " "posto" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Il pacchetto %s è già installato e aggiornato all'ultima versione" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Il pacchetto corrispondente a %s è già installato. Controllo aggiornamenti." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Aggiornamento completo" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Il pacchetto obsoleto non verrà aggiornato: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Il pacchetto era già obsoleto: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Il pacchetto obsoleto non verrà aggiornato: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Il pacchetto è già aggiornato: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Nessun pacchetto selezionato per l'eliminazione" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Ignoro il kernel in esecuzione: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Rimozione di %s dalla transazione" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Impossibile aprire: %s. Verrà ignorato." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Analisi di %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "localinstall del deltarpm fallito: %s. Verrà ignorato." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Impossibile aggiungere il pacchetto %s alla transazione. Architettura non " "compatibile: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Impossibile installare il pacchetto %s. E' reso obsoleto dal pacchetto " "installato %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Non è possibile aggiornare il pacchetto %s perchè non è installato. Eseguire" " yum install per installarlo." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Esclusione di %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s contrassegnato per l'installazione" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "%s contrassegnato come aggiornamento di %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: non aggiorna il pacchetto installato." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Impossibile aprire il file: %s. Verrà ignorato." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Problema nella reinstallazione: nessun pacchetto corrispondente per la " "rimozione" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Problema nella reinstallazione: nessun pacchetto corrispondente a %s per " "l'installazione" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Nessun pacchetto disponibile per il downgrade" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Il pacchetto %s permette installazioni multiple, lo salto" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Nessuna corrispondenza per il pacchetto disponibile: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Solo l'upgrade è disponibile per il pacchetto: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Downgrade fallito: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Recupero chiave GPG fallito: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Chiave GPG non valida da %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Analisi chiave GPG fallita: la chiave non ha il valore %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "Chiave GPG in %s (0x%s) già installata" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Importazione chiave fallita (codice %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Chiave importata correttamente" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" "Le chiavi GPG elencate per il repository \"%s\" sono attualmente installate ma non sono corrette per questo pacchetto.\n" "Controllare che gli URL delle chiavi di questo repository siano configurati correttamente." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Importazione delle chiavi non sufficiente, chiave sbagliata?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "Chiave GPG in %s (0x%s) è già stata importata" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Importazione chiave fallita" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Le chiavi GPG elencate per il repository \"%s\" sono attualmente installate ma non sono corrette.\n" "Controllare che gli URL delle chiavi di questo repository siano configurati correttamente." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Impossibile trovare un mirror adatto." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Si sono verificati degli errori durante il download dei pacchetti." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Riportare questo errore su %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Errori nel test di transazione: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Impossibile impostare la cachedir: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Plugin abilitati:" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Nessun plugin corrisponde a: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Il plugin \"%s\" non è stato caricato, perchè è disabilitato" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Il plugin \"%s\" non può essere importato" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Il plugin \"%s\" non specifica la versione API richiesta" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Il plugin \"%s\" richiede l'API %s. L'API supportata è %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Caricamento del plugin \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "Esiste più di un plugin con nome \"%s\" nel percorso di ricerca dei plugin" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "File di configurazione %s non trovato" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Impossibile trovare il file di configurazione per il plugin %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registrazione dei comandi non supportata" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "ha una dipendenza mancante di" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "ha conflitti con pacchetti installati" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s è un duplicato di %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s è reso obsoleto da %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s fornisce %s, ma non è stato possibile trovarlo" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Reimpacchettamento" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "L'header non può essere aperto o non corrisponde a %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "Controllo md5 dell'RPM %s fallito" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Non è stato possibile aprire in lettura il database RPM. Forse è gia in uso?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Ricevuto un header vuoto, qualcosa è andato storto" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Header %s danneggiato" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Errore nell'apertura dell'rpm %s - errore %s" yum-3.4.3/po/lt_LT.po0000664000076400007640000023371211602434452013332 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # aurisc4 , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.net/projects/p/yum/team/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Atnaujinama" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Å alinama" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Diegiama" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "PažymÄ—ta pasenusiu" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Atnaujinta" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "PaÅ¡alinta" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Ä®diegta" #: ../callback.py:130 msgid "No header - huh?" msgstr "NÄ—ra antraÅ¡tÄ—s - keista?" #: ../callback.py:168 msgid "Repackage" msgstr "Perpakuoti" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Klaida: neteisinga iÅ¡vesties bÅ«sena: %s %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "PaÅ¡alinta: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Å alinama" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Valymas" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Komanda „%s“ jau apibrėžta" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Nustatomos saugyklos" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Skaitoma saugyklų informacija iÅ¡ vietinių failų" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "KonfigÅ«racijos klaida: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "ParinkÄių klaida: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Ä®diegta: %s-%s %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Sukurta : %s %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Pateikta : %s %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Reikia pateikti kokiÄ… nors komandÄ…" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "NÄ—ra komandos: %s. Naudokite %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Disko reikalavimai:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Reikia bent %dMB daugiau vietos failų sistemoje %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Klaidos santrauka\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Bandoma paleisti transakcijÄ…, bet nÄ—ra veiksmų. IÅ¡einama." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "IÅ¡einama po naudotojo komandos" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "ParsiunÄiami paketai:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Klaida parsiunÄiant paketus:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Vykdomas transakcijos tikrinimas" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "KLAIDA Reikia atnaujinti rpm norint apdoroti:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "KLAIDA su transakcijos ir priklausomybių tikrinimu:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM turi bÅ«ti atnaujintas" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "PraneÅ¡kite apie Å¡iÄ… klaidÄ… adresu %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Vykdomas transakcijos tikrinimas" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Transakcijos tikrinimo klaida:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Transakcijos tikrinimas sÄ—kmingas" #: ../cli.py:600 msgid "Running Transaction" msgstr "Vykdoma transakcija" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Atsisakoma automatiÅ¡kai importuoti raktus, kai vykdoma neprižiÅ«rint.\n" "Naudokite „-y“ veiksenos pakeitimui." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Gal turÄ—jote omenyje:" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Paketas(-ai) %s%s%s prieinami, bet neįdiegti." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "NÄ—ra prieinamo paketo %s%s%s." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paketas(-ai) diegimui" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "NÄ—ra kÄ… atlikti" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paketas(-ai) pažymÄ—ti atnaujinimui" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "NÄ—ra paketų, pažymÄ—tų atnaujinimui" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d paketas(-ai) pažymÄ—tas(-i) distribucijos sinchronizavimui" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "NÄ—ra paketų, pažymÄ—tų distribucijos sinchronizavimui" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paketas(-ai) pažymÄ—tas(-i) paÅ¡alinimui" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "NÄ—ra paketų, pažymÄ—tų paÅ¡alinimui" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paketas(-ai) grąžinimui" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (iÅ¡ %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Ä®diegtas paketas %s%s%s%s neprieinamas." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paketas(-ai) pakartotiniam diegimui" #: ../cli.py:960 msgid "No Packages Provided" msgstr "NÄ—ra pateiktų paketų" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "PaieÅ¡kos atitikmenu: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " %sTik%s pavadinimo ir santraukos atitikmenys, naudokite „search all“ " "paieÅ¡kai visur." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " %sTik%s pilno pavadinimo ir santraukos atitikmenys, naudokite „search all“" " paieÅ¡kai visur." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Atitinka: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " %sDaugiausia%s pavadinimo ir santraukos atitikmenys, naudokite „search " "all“ paieÅ¡kai visur." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Ä®spÄ—jimas: nerasta atitikmenų: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Nerasta atitikmenų" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nerasta paketų užklausai %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "IÅ¡valomos saugyklos:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "IÅ¡valoma viskas" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "IÅ¡valomos antraÅ¡tÄ—s" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "IÅ¡valomi paketai" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "IÅ¡valomi xml metaduomenys" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "IÅ¡valomas duomenų bazÄ—s podÄ—lis" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "IÅ¡valomas pasenÄ™ podÄ—lio metaduomenys" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "IÅ¡valomi podÄ—lio rpmdb duomenys" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "IÅ¡valomi įskiepiai" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Ä®spÄ—jimas: nÄ—ra grupių atitikmenų: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Ä®diegto grupÄ—s:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Ä®diegtos kalbų grupÄ—s:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Prieinamos grupÄ—s:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "Prieinamos kalbų grupÄ—s:" #: ../cli.py:1285 msgid "Done" msgstr "Atlikta" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Ä®spÄ—jimas: nÄ—ra grupÄ—s %s." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "NÄ—ra paketų diegimui ar atnaujinimui jokioje pageidaujamoje grupÄ—je" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d diegtinas(-i) paketai(-ai)" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "NÄ—ra grupÄ—s %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "NÄ—ra paketų paÅ¡alinimui iÅ¡ grupių" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d paketas(-ai) paÅ¡alinimui" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Paketas %s jau įdiegtas, praleidžiama" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Atmetami nepalyginami paketai %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "NÄ—ra įdiegto kito %s, įtraukiama į sÄ…rašą galimam diegimui" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Ä®skiepių parinktys" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "KomandinÄ—s eilutÄ—s klaida: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s parinktis reikalauja argumento" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color gali bÅ«ti: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot turi bÅ«ti absoliutus kelias: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "rodyti šį pagalbos praneÅ¡imÄ… ir iÅ¡eiti" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "toleruoti klaidas" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "vykdyti tik iÅ¡ sistemos podÄ—lio jo neatnaujinant" #: ../cli.py:1652 msgid "config file location" msgstr "konfigÅ«racijos failo vieta" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "didžiausias komandos laukimo laikas" #: ../cli.py:1657 msgid "debugging output level" msgstr "derinimo iÅ¡vesties lygmuo" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "rodyti dublikatus saugyklose, sÄ…raÅ¡o/paieÅ¡kos komandose" #: ../cli.py:1663 msgid "error output level" msgstr "klaidų iÅ¡vesties lygmuo" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "derinimo iÅ¡vesties lygmuo rpm komandai" #: ../cli.py:1669 msgid "quiet operation" msgstr "tyli operacija" #: ../cli.py:1671 msgid "verbose operation" msgstr "iÅ¡sami operacija" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "atsakyti „taip“ į visus klausimus" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "rodyti Yum versijÄ… ir iÅ¡eiti" #: ../cli.py:1676 msgid "set install root" msgstr "nustatyti diegimo Å¡aknį" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "leisti vienÄ… ar daugiau saugyklų (leidžiami pakaitos simboliai)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "drausti vienÄ… ar daugiau saugyklų (leidžiami pakaitos simboliai)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "iÅ¡skirti paketÄ…(-us) pagal pavadinimÄ… arba globalų vardÄ…" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "drausti iÅ¡kyrimÄ… iÅ¡ pagrindinio saugyklai arba viskam" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "leisti pasenusių apdorojimÄ… atnaujinimo metu" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "drausti Yum įskiepius" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "drausti gpg paraÅ¡o tikrinimÄ…" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "drausti įskiepius pagal pavadinimÄ…" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "leisti įskiepius pagal pavadinimÄ…" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "praleisti paketus su priklausomybių tikrinimo problemomis" #: ../cli.py:1706 msgid "control whether color is used" msgstr "valdyti, ar naudojama spalva" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "nustatyti $releasever reikÅ¡mÄ™ yum konfigÅ«racijoje ir saugyklų failuose" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "nustatyti savavaliÅ¡kas konfigÅ«racijos ir saugyklų parinktis" #: ../output.py:307 msgid "Jan" msgstr "Sau" #: ../output.py:307 msgid "Feb" msgstr "Vas" #: ../output.py:307 msgid "Mar" msgstr "Kov" #: ../output.py:307 msgid "Apr" msgstr "Bal" #: ../output.py:307 msgid "May" msgstr "Ge" #: ../output.py:307 msgid "Jun" msgstr "Bir" #: ../output.py:308 msgid "Jul" msgstr "Lie" #: ../output.py:308 msgid "Aug" msgstr "Rug" #: ../output.py:308 msgid "Sep" msgstr "Rgs" #: ../output.py:308 msgid "Oct" msgstr "Spa" #: ../output.py:308 msgid "Nov" msgstr "Lap" #: ../output.py:308 msgid "Dec" msgstr "Gr" #: ../output.py:318 msgid "Trying other mirror." msgstr "Bandoma kita dubliuojamoji tinklavietÄ—" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Pavadinimas : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "ArchitektÅ«ra: %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epocha : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Versija : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Leidimas : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Dydis : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Saugykla : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "IÅ¡ saugyklos : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "PateikÄ—jas : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Pateikta : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "SukÅ«rimo laikas: %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Ä®diegimo laikas: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Ä®diegÄ— : %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "PakeitÄ— : %s" #: ../output.py:612 msgid "Summary : " msgstr "Santrauka : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licencija : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "ApraÅ¡ymas : " #: ../output.py:684 msgid "y" msgstr "t" #: ../output.py:684 msgid "yes" msgstr "taip" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "ne" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Ar tai tinka [t/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "GrupÄ—: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " GrupÄ—s id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " ApraÅ¡ymas: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "Kalba: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Privalomi paketai:" #: ../output.py:791 msgid " Default Packages:" msgstr " Numatytieji paketai:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Papildomi paketai:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " SÄ…lyginiai paketai:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paketas: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Å is paketas neturi priklausomybių" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " priklausomybÄ—: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Nepatenkinta priklausomybÄ—" #: ../output.py:901 msgid "Matched from:" msgstr "Atitinka:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licencija : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Failo pavadinimas: %s" #: ../output.py:923 msgid "Other : " msgstr "Kita : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Ä®vyko klaida skaiÄiuojant visÄ… parsiuntimo dydį" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Visas dydis: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Visas parsiuntimo dydis: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Ä®diegimo dydis: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Ä®vyko klaida skaiÄiuojant įdiegimo dydį" #: ../output.py:1039 msgid "Reinstalling" msgstr "Perdiegiama" #: ../output.py:1040 msgid "Downgrading" msgstr "Grąžinama" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Diegiamos priklausomybÄ—s" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Atnaujinama priklausomybÄ—ms" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Å alinama dÄ—l priklausomybių" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Praleista (priklausomybių problemos)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Neįdiegtas" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paketas" #: ../output.py:1075 msgid "Arch" msgstr "ArchitektÅ«ra" #: ../output.py:1076 msgid "Version" msgstr "Versija" #: ../output.py:1076 msgid "Repository" msgstr "Saugykla" #: ../output.py:1077 msgid "Size" msgstr "Dydis" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " pakeiÄiama %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Transakcijos santrauka\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Ä®diegti %5.5s pektÄ…(-us)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Atnaujinti %5.5s paketÄ…(-us)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "PaÅ¡alinti %5.5s paketÄ…(-us)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Perdiegti %5.5s paketą„-u)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Grąžinti %5.5s paketÄ…(-us)\n" #: ../output.py:1165 msgid "Removed" msgstr "PaÅ¡alinta" #: ../output.py:1166 msgid "Dependency Removed" msgstr "PriklausomybÄ— paÅ¡alinta" #: ../output.py:1168 msgid "Dependency Installed" msgstr "PriklausomybÄ— įdiegta" #: ../output.py:1170 msgid "Dependency Updated" msgstr "PriklausomybÄ— atnaujinta" #: ../output.py:1172 msgid "Replaced" msgstr "Pakeista" #: ../output.py:1173 msgid "Failed" msgstr "Nepavyko" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "du" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Dabartinis parsiuntimas atÅ¡auktas, %snutraukite (ctrl-c) vÄ—l%s per %s%s%s sekundes\n" "išėjimui.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "naudotojo nutraukimas" #: ../output.py:1300 msgid "Total" msgstr "IÅ¡ viso" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Sistema" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Praleidžiama persidengianti transakcija %d, apjungta į %d" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "NÄ—ra transakcijų" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Pateikti blogi transakcijų ID arba paketai" #: ../output.py:1484 msgid "Command line" msgstr "Komandų eilutÄ—" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "PrisijungÄ™s naudotojas" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Data ir laikas" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Veiksmas(-ai)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Pakeista" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Nepateiktas transakcijos ID" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Pateiktas blogas transakcijos ID" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Nerastas pateiktas transakcijos ID" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Rastas daugiau nei vienas transakcijos ID!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Nepateiktas transakcijos ID arba paketas" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Grąžintas" #: ../output.py:1688 msgid "Older" msgstr "Senesnis" #: ../output.py:1688 msgid "Newer" msgstr "Naujesnis" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Transakcijos ID:" #: ../output.py:1728 msgid "Begin time :" msgstr "Pradžios laikas:" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "PradÄ—ti rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u sekundžių)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minuÄių)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u valandų)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u dienų)" #: ../output.py:1756 msgid "End time :" msgstr "Pabaigos laikas:" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Baigti rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Naudotojas :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Grąžinimo kodas:" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Nutraukta" #: ../output.py:1773 msgid "Failures:" msgstr "Klaidos:" #: ../output.py:1777 msgid "Failure:" msgstr "Klaida:" #: ../output.py:1779 msgid "Success" msgstr "SÄ—kminga" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Komandų eilutÄ— :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "IÅ¡saugota papildoma nenumatyta informacija: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transakcija atlikta su:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Pakeisti paketai:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Praleisti paketai:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb problemos:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scenarijaus iÅ¡vestis:" #: ../output.py:1831 msgid "Errors:" msgstr "Klaidos:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Ä®diegti" #: ../output.py:1839 msgid "Dep-Install" msgstr "Ä®diegti priklausomybes" #: ../output.py:1841 msgid "Obsoleting" msgstr "Pažymima pasenusiu" #: ../output.py:1842 msgid "Erase" msgstr "PaÅ¡alinti" #: ../output.py:1843 msgid "Reinstall" msgstr "Perdiegti" #: ../output.py:1844 msgid "Downgrade" msgstr "Grąžinti" #: ../output.py:1846 msgid "Update" msgstr "Atnaujinti" #: ../output.py:1909 msgid "Time" msgstr "Laikas" #: ../output.py:1935 msgid "Last day" msgstr "Vakar" #: ../output.py:1936 msgid "Last week" msgstr "PraÄ—jusiÄ… savaitÄ™" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "PraÄ—jusias 2 savaites" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "PraÄ—jusius 3 mÄ—nesius" #: ../output.py:1939 msgid "Last 6 months" msgstr "PraÄ—jusius 6 mÄ—nesius" #: ../output.py:1940 msgid "Last year" msgstr "PraÄ—jusiais metais" #: ../output.py:1941 msgid "Over a year ago" msgstr "Daugiau nei prieÅ¡ metus" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Nerasta transakcija %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Transakcijos ID:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Prieinama papildoma istorijos informacija:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: nerasta papildomų duomenų su Å¡iuo pavadinimu" #: ../output.py:2106 msgid "installed" msgstr "įdiegta" #: ../output.py:2107 msgid "an update" msgstr "atnaujinimas" #: ../output.py:2108 msgid "erased" msgstr "paÅ¡alinta" #: ../output.py:2109 msgid "reinstalled" msgstr "perdiegta" #: ../output.py:2110 msgid "a downgrade" msgstr "grąžinimas" #: ../output.py:2111 msgid "obsoleting" msgstr "žymima pasenusiu" #: ../output.py:2112 msgid "updated" msgstr "atnaujinta" #: ../output.py:2113 msgid "obsoleted" msgstr "pažymÄ—ta pasenusiu" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Paketas %s.%s %s:%s-%s bus %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Vykdomas transakcijos tikrinimas" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" "--> IÅ¡ naujo paleidžiamas priklausomybių sprendimas su naujais pakeitimais" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Baigtas priklausomybių sprendimas" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Apdorojama priklausomybÄ—: %s paketui: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Paliekamas paketas: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Nerasta priklausomybÄ—: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paketas: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Reikalauja: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Nerasta" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Atnaujino" #: ../output.py:2197 msgid "Downgraded By" msgstr "Grąžino" #: ../output.py:2198 msgid "Obsoleted By" msgstr "PažymÄ—jo pasenusiu" #: ../output.py:2216 msgid "Available" msgstr "Prieinamas" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Sprendžiamas konfliktas: %s konfliktuoja su %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> TÄ™siama transakcija su pasirinktais paketais. Palaukite." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Grąžinama %s antraÅ¡tÄ— įpakavimui į transakcijos aibÄ™." #: ../utils.py:99 msgid "Running" msgstr "Vykdoma" #: ../utils.py:100 msgid "Sleeping" msgstr "Miegama" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Nepertraukiama" #: ../utils.py:102 msgid "Zombie" msgstr "Zombis" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Sekamas/Sustabdytas" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Nežinomas" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Kita programa yra: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Kita programa yra: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Atmintis : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Paleista: %s - prieÅ¡ %s" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " BÅ«sena : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "IÅ¡einama naudotojui nutraukus" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "IÅ¡einama dÄ—l nutraukto konvejerio" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Kita programa Å¡iuo metu turi yum užraktÄ…; iÅ¡einama, kaip nustatyta parametru" " exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit klaida: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum klaida: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Klaida: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Galite mÄ—ginti --skip-broken problemai apeiti" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Galite pamÄ—ginti paleisti: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Nežinoma(-os) klaida(-os): išėjimo kodas: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "IÅ¡sprÄ™stos priklausomybÄ—s" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Baigta!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Mini naudojimas:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "JÅ«s turite bÅ«ti root Å¡iai komandai atlikti." #: ../yumcommands.py:59 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" "JÅ«s įjungÄ—te paketų tikrinimÄ… naudojant GPG raktus. Tai yra gerai. \n" "TaÄiau jÅ«s neturite įdiegÄ™ jokių GPG viešų raktų. Jums reikia parsiÅ«sti\n" "ir įdiegti raktus paketams, kuriuos jÅ«s norite įdiegti.\n" "TÄ… galite padaryti įvykdydami komandÄ…:\n" " rpm --import public.gpg.key\n" "\n" "\n" "JÅ«s taip pat galite nurodyti rakto url, kurį norite naudoti\n" "saugyklai „gpgkey“ parinktyje saugyklos sekcijoje ir yum \n" "jį jums įdiegs.\n" "\n" "Daugiau informacijos gausite susisiekÄ™ su jÅ«sų distribucijos ar paketo tiekÄ—ju.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Klaida: %s reikia perduoti paketų sÄ…rašą" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Klaida: reikia atitikimens" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Klaida: reikia grupÄ—s arba grupių sÄ…raÅ¡o" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Klaida: clean reikalauja parinkties: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Klaida: netinkamas clean argumentas: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "NÄ—ra argumento apvalkalui" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Failo pavadinimas, perduotas apvalkalui: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Failas %s, perduotas kaip argumentas apvalkalui, neegzistuoja." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" "Klaida: daugiau nei vienas failas perduotas kaip argumentas apvalkalui." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "NÄ—ra įjungtų saugyklų.\n" " Paleiskite „yum repolist all“ visam saugyklų sÄ…raÅ¡ui gauti.\n" " JÅ«s galite įjungti saugyklas su yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKETAS..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Ä®diegti paketÄ… arba paketus jÅ«sų sistemoje" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Nustatomas diegimo procesas" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKETAS...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Atnaujinti paketÄ… arba paketus jÅ«sų sistemoje" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Nustatomas atnaujinimo procesas" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Sinchronizuoti įdiegtus paketus į naujausias prieinamas versijas" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Nustatomas distribucijos sinchronizacijos procesas" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Rodyti informacijÄ… apie paketÄ… arba paketų grupÄ™" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Ä®diegti paketai" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Prieinami paketai" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Papildomi paketai" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Atnaujinti paketai" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Paketai žymimi pasenusiais" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Neseniai pridÄ—ti paketai" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "NÄ—ra atitinkanÄių paketų iÅ¡vardinimui" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "IÅ¡vardinti paketus arba paketų grupes" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "PaÅ¡alinti paketÄ… arba paketus iÅ¡ sistemos" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Nustatomas Å¡alinimo procesas" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Nustatomas grupÄ—s procesas" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "NÄ—ra grupių, kurioms vykdyti komandÄ…" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "IÅ¡vardinti prieinamas paketų grupes" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Ä®diegti grupÄ—s paketus jÅ«sų sistemoje" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "PaÅ¡alinti grupÄ—s paketus iÅ¡ jÅ«sų sistemos" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Parodyti informacijÄ… apie paketų grupÄ™" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Generuoti metaduomenų podÄ—lį" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Kuriami podÄ—lio failai visiems metaduomenų failams." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Tai gali užtrukti priklausomai nuo Å¡io kompiuterio greiÄio" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Metaduomenų podÄ—lis sukurtas" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "PaÅ¡alinti podÄ—lio duomenis" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Rasti, kuris paketas teikia pateiktÄ… reikÅ¡mÄ™" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Tikrinti prieinamus paketų atnaujinimus" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "IeÅ¡koti paketų informacijos pateiktai eilutei" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "IeÅ¡koma paketų:" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Atnaujinti paketus įvertinant pasenusius" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Nustatomas atnaujinimo procesas" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Ä®diegti vietinį RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Nustatomas vietinio paketo procesas" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Nustatyti, kuris paketas teikia pateiktÄ… priklausomybÄ™" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "IeÅ¡koti paketų priklausomybei:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Paleisti interaktyvų yum apvalkalÄ…" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Nustatomas Yum apvalkalas" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "IÅ¡vardinti paketo priklausomybes" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Randamos priklausomybÄ—s:" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Rodyti nustatytas programinÄ—s įrangos saugyklas" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "įjungta" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "iÅ¡jungta" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Saugyklos id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Saugyklos pavadinimas: " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Saugyklos bÅ«sena: " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Saugyklos poversijis: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Saugyklos žymos: " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Saugyklos distribucijos žymos: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Saugykla atnaujinta: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Saugyklos paketai: " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Saugyklos dydis: " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Saugyklos bazinis url: " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Saugyklos metasaitas: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Atnaujinta : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Saugyklos tinklavietÄ—s: " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Niekada (paskutinis: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "NeatdÄ—liotinas (paskutinis: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s sekundÄ—(s) (paskutinis: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Saugykla pasensta: " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Saugykla iÅ¡skiria: " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Saugykla įtraukia: " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Saugykloje iÅ¡skirta: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "Saugyklos id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "bÅ«sena" #: ../yumcommands.py:1062 msgid "repo name" msgstr "saugyklos pavadinimas" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Parodyti naudingÄ… naudojimo praneÅ¡imÄ…" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "NÄ—ra pagalbos veiksmui %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "alternatyvÅ«s vardai: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alternatyvus vardas: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Nustatomas perdiegimo procesas" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "perdiegti paketÄ…" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Nustatomas grąžinimo procesas" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "grąžinti paketÄ…" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Parodyti maÅ¡inos ir prieinamų saugyklų versijÄ…." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "Yum versijų grupÄ—s:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " GrupÄ— :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Paketai:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr " Ä®diegti:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Ä®diegti per grupes:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Prieinami:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Prieinami per grupes:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Parodyti arba naudoti transakcijų istorijÄ…" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Netinkama istorijos po-komanda, naudokite: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "JÅ«s neturite priÄ—jimo prie istorijos DB." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "IeÅ¡koti problemų rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "įkelti iÅ¡saugotÄ… transakcijÄ… iÅ¡ failo" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Nenurodytas įšsaugotos transakcijos failas." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "įkeliama transakcija iÅ¡ %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Transakcija, įkelta iÅ¡ %s su %s nariais" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Yum ckeck nepavyko: %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "Kita programa turi yum užraktÄ…; laukiama jos pabaigos..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "Nepavyko sukurti užrakto failo; iÅ¡einama" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Spredžiamos priklausomybÄ—s" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" "JÅ«sų transakcija iÅ¡saugota, paleiskite jÄ… su komanda: yum load-transaction " "%s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "IÅ¡einama po naudotojo atÅ¡aukimo." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Nustatoma TransactionSets prieÅ¡ konfigÅ«racijos klasÄ—s pakrovimÄ…" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Netinkama tsflag konfigÅ«racijos faile: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "IeÅ¡koma pkgSack priklausomybei: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Narys: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s pakeistas diegimui" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Pridedamas paketas %s veiksenoje %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Å alinamas paketas %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s reikalauja: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s reikalauja %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Reikalingo reikalavimo jau ieÅ¡kota, apgaunama" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Reikalavimas nÄ—ra paketo pavadinimas. IeÅ¡koma: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Potencialus tiekÄ—jas: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Veiksena %s %s tiekÄ—jui : %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Veiksena paketui, teikianÄiam %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Bandoma atnaujinti %s priklausomybių iÅ¡sprendimui" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Nerasta %s atnaujinimo kelių. Klaida!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s paketas, reikalaujantis %s pažymÄ—tas paÅ¡alinimui" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: %s žymimas pasenusiu su %s, siekiant iÅ¡sprÄ™sti priklausomybÄ™." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Atnaujinamas %s, siekiant iÅ¡sprÄ™sti priklausomybÄ™." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Nepavyko rasti priklausomybÄ—s atnaujinimo kelio: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Greitas atitikmuo %s %s reikalavimui" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s yra teikianÄių paketų sÄ…raÅ¡e, bet jis jau įdiegtas, paÅ¡alinama." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Potencialiai sprendžiantis paketas %s ts turi naujesnį variantÄ…." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Potencialiai sprendžiantis paketas %s turi įdiegtÄ… naujesnį variantÄ…." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s jau ts, praleidžiama" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: pažymima %s kaip %s atnaujinimÄ…" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: pažymima %s kaip %s diegimÄ…" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "SÄ—kminga - tuÅ¡Äia transakcija" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "IÅ¡ naujo paleidžiamas ciklas" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Užbaigiamas priklausomybių procesas" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "SÄ—kminga - priklausomybÄ—s iÅ¡sprÄ™stos" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "IeÅ¡koma %s priklausomybių" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "ieÅ¡koma %s kaip %s reikalavimo" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "%s vykdoma compare_providers()" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "po %s geresnÄ— architektÅ«ra" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s žymi pasenusiu %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist palygino %s su %s vietoje %s\n" " NugalÄ—tojas: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "bendras iÅ¡eities rpm %s ir %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "bazinis paketas %s įdiegtas paketui %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "bendras prieÅ¡dÄ—lis %s abiems %s ir %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "reikalauja mažiausiai: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " NugalÄ—tojas: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " PralaimÄ—tojas (su %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Geriausia tvarka: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Saugykla %r: klaida skaitant konfigÅ«racijÄ…: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Saugyklai %r trÅ«ksta pavadinimo konfigÅ«racijoje, naudojamas id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "įskiepiai jau pakrauti" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Skaitoma vietinÄ— RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Nustatomos paketų aibÄ—s" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "saugyklos objektui %s trÅ«ksta metodo _resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "todÄ—l Å¡i saugykla negali bÅ«ti iÅ¡jungta.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Kuriami atnaujinimo objektai" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() bus paÅ¡alinta ateities Yum versijose.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Gaunami grupÄ—s metaduomenys" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Pridedamas grupÄ—s failas iÅ¡ saugyklos: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Nepavyko pridÄ—ti grupių failo saugyklai: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "NÄ—ra prieinamų grupių jokioje saugykloje" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Gaunami pkgtags metaduomenys" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Pridedamos žymos iÅ¡ saugyklos: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Nepavyko pridÄ—ti paketų žymų saugyklai: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Importuojama papildoma failų sÄ…rašų informacija" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Programa %s%s%s rasta yum-utils pakete." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Yra likusių nebaigtų transakcijų. JÅ«s turbÅ«t norite paleisti yum-complete-" "transaction joms užbaigti." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Randamos nereikalingos paliktos priklausomybÄ—s" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Apsaugotos daugiabibliokekÄ—s versijos: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Bandoma paÅ¡alinti „%s“, kuris yra apsaugotas" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Paketai, praleisti dÄ—l priklausomybių problemų:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s iÅ¡ %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "** Rasta %d esamų rpmdb problemų, „yum check“ iÅ¡vestis:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Ä®spÄ—jimas: RPMDB pakeista už yum ribų." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "trÅ«ksta reikalavimų" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "įdiegtas konfliktas" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Ä®spÄ—jimas: scenarijaus arba kitos negalutinÄ—s klaidos įvyko transakcijos " "metu." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Transakcijos paleisti nepavyko:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Nepavyko paleisti transakcijos." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Nepavyko paÅ¡alinti transakcijos failo %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s turÄ—jo bÅ«ti įdiegtas, bet nebuvo!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s turÄ—jo bÅ«ti paÅ¡alintas, bet nebuvo!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Nepavyko atverti užrakto %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Nepavyksta patikrinti, ar PID %s yra aktyvus" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Esamas užraktas %s: kito kopija veikia kaip pid %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Nepavyko sukurti užrakto %s: %s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Paketai nesutampa su pageidautu parsiuntimu. PasiÅ«lymas: paleisti yum " "--enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Nepavyko patikrinti kontrolinÄ—s sumos" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Paketo kontrolinÄ— suma nesutampa" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "paketo kontrolinÄ— suma nesutampa, bet %s podÄ—lis yra įjungtas" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "naudojama vietinÄ— %s kopija" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Nepakanka vietos parsiuntimų kataloge %s\n" " * laisva %s\n" " * reikia %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "AntraÅ¡tÄ— nepilna." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "AntraÅ¡tÄ— ne vietiniame podÄ—lyje, o tik podÄ—lio veiksena yra įjungta. " "Negalima parsiÅ«sti %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "%s vieÅ¡as raktas neįdiegtas" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problema atveriant paketÄ… %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "%s vieÅ¡asis raktas nepatikimas" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Paketas %s nepasiraÅ¡ytas" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Nepavyksta paÅ¡alinti %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s paÅ¡alintas" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Nepavyksta paÅ¡alinti %s failo %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s failas %s paÅ¡alintas" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s failai paÅ¡alinti" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Daugiau nei vienas identiÅ¡kas atitikmuo ieÅ¡komam %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "NÄ—ra %s.%s %s:%s-%s atitikmenų atnaujinime" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() bus paÅ¡alinta ateities Yum versijose. " "Naudokite searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "IeÅ¡koma %d paketų" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "ieÅ¡koma paketo %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "ieÅ¡koma failų įraÅ¡uose" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "ieÅ¡koma teikimo įraÅ¡uose" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "NÄ—ra prieinamų grupių duomenų nustatytose saugyklose" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "NÄ—ra grupÄ—s %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "paketas %s nebuvo pažymÄ—tas grupÄ—je %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Pridedamas paketas %s iÅ¡ grupÄ—s %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "NÄ—ra paketo %s, prieinamo diegimui" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Ä®spÄ—jimas: grupÄ— %s neturi jokių paketų." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "GrupÄ— %s turi %u sÄ…lyginių paketų, kurie gali bÅ«ti įdiegti." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Nepavyksta rasti paketų rinkinio %s krepÅ¡yje" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Nepavyksta rasti paketų rinkinio %s rpmdb" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Netinkamas versijos požymis iÅ¡: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nerastas paketas %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Paketo objektas nebuvo paketo objekto egzempliorius" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Nieko nenurodyta įdiegti" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Tikrinamas virtualus tiekimas arba failo tiekimas %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "NÄ—ra atitikmens argumentui: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Paketas %s įdiegtas ir neprieinamas" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "NÄ—ra paketo(-ų), prieinamo diegimui" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paketas: %s - jau transakcijos aibÄ—je" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Paketas %s yra pažymÄ—tas pasenusiu paketo %s, kuris jau įdiegtas" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Paketas %s pažymÄ—tas pasenusiu paketo %s, bet žymÄ—jimas pasenusiu neatitinka" " reikalavimų" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "Paketas %s pažymÄ—tas pasenusiu paketo %s, todÄ—l bandoma įdiegti %s" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Paketas %s jau įdiegtas ir paskutinÄ—s versijos" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "Paketas, atitinkantis %s, jau įdiegtas. Tikrinamas atnaujinimas." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Atnaujinti viskÄ…" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Neatnaujinamas paketas, kuris jau yra pasenÄ™s: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Paketas jau yra pasenÄ™s: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Neatnaujinamas paketas, kuris yra pasenÄ™s: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Neatnaujinamas paketas, kuris jau yra atnaujintas: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "NÄ—ra paketo atitikmens paÅ¡alinimui" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Praleidžiama ir vykdomas branduolys: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "PaÅ¡alinamas %s iÅ¡ transakcijos" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Nepavyksta atverti: %s. Praleidžiama." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Tikrinama %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Nepavyksta vietinis deltarpm diegimas: %s. Praleidžiama." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Nepavyksta pridÄ—ti paketo %s į transakcijÄ…. Nesuderinama architektÅ«ra: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Nepavyksta įdiegti paketo %s. Jis pažymÄ—tas pasenusiu įdiegto paketo %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Paketas %s neįdiegtas, negalima jo atnaujinti. Paleiskite yum install jo " "įdiegimui." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Paketas %s.%s neįdiegtas, negalima jo atnaujinti. Paleiskite yum install jam" " įdiegti." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "IÅ¡skiriamas %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Žymimas %s įdiegimui" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Žymimas %s kaip %s atnaujinimas" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: neatnaujina įdiegto paketo." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Nepavyksta atverti failo: %s. Praleidžiama." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Perdiegimo problema: nÄ—ra paketo atitikmens paÅ¡alinimui" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "Perdiegimo problema: nÄ—ra paketo %s atitikmens diegimui" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "NÄ—ra paketo(-ų) grąžinimui" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Paketas %s leidžia daugkartinius diegimus, praleidžiama" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "NÄ—ra atitikmens prieinamam paketui: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Tik atnaujinimas yra prieinamas paketui: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Nepavyko grąžinti: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Gaunamas raktas iÅ¡ %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG rakto gavimas nepavyko: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "GPG rakto paraÅ¡as raktui %s neatitinka saugyklos CA rakto: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "GPG rakto paraÅ¡as patikrinas su CA raktu(-ais)." #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Netinkamas GPG raktas iÅ¡ %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "GPG rakto skaitymas nepavyko: raktas neturi %s reikÅ¡mÄ—s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Importuojamas %s raktas 0x%s:\n" " Naudotojo id: %s\n" " Paketas : %s (%s)\n" " IÅ¡ : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Importuojamas %s raktas 0x%s:\n" " Naudotojo id: \"%s\"\n" " IÅ¡ : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG raktas iÅ¡ %s (0x%s) jau įdiegtas" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Rakto importas neapvyko (kodas %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Raktas sÄ—kmingai importuotas" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Neįdiegta jokių raktų" #: ../yum/__init__.py:4680 #, 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 raktai, iÅ¡vardinti „%s“ saugyklai, jau yra įdiegti, bet nÄ—ra teisingi Å¡iam paketui.\n" "Patikrinkite, ar teisingi URL yra nustatyti Å¡iai saugyklai." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Rakto(-ų) importas nepadÄ—jo, neteisingas(-i) raktas(-ai)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG raktas iÅ¡ %s (0x%s) jau importuotas" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Rakto importas nepavyko" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Neįdiegta jokių raktų saugyklai %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "GPG raktai, iÅ¡vardinti „%s“ saugyklai, jau yra įdiegti, bet nÄ—ra teisingi.\n" "Patikrinkite, ar teisingi URL yra nustatyti Å¡iai saugyklai." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Nepavyksta rasti tinkamos dubliuojanÄios tinklavietÄ—s." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Kilo klaidų parsiunÄiant paketus." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "PraneÅ¡kite apie Å¡iÄ… klaidÄ… adresu %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Transakcijos testavimo klaidos: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Nepavyko nustatyti podÄ—lio katalogo: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "PriklausomybÄ—s neįšsprÄ™sto. NeiÅ¡saugoma neiÅ¡sprÄ™sta transakcija." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Nepavyko iÅ¡saugoti transakcijos į failÄ… %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Nepavyko pasiekti/perskaityti iÅ¡saugotos transakcijos %s : %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "rpmdb versija nesutampa su iÅ¡saugotos transakcijos versija, " #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " nepaisoma, kaip nurodyta." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " atÅ¡aukiama." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "nepavyksta rasti tsflags arba tai nÄ—ra sveikas skaiÄius." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Rastas txmbr nežinomoje bÅ«senoje: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Nepavyksta rasti txmbr: %s bÅ«senoje %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Nepavyksta rasti txmbr: %s iÅ¡ Å¡altinio: %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "TrÅ«ksta transakcijos narių, ryÅ¡ių arba transakcija buvo pakeista," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " nepaisoma, kaip nurodyta. JÅ«s turite iÅ¡sprÄ™sti priklausomybes!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Ä®kelti įskiepiai: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "NÄ—ra įskiepio atitikmens : %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Neįkeliamas įskiepis „%s“, nes jis iÅ¡jungtas" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Ä®skiepis „%s“ negali bÅ«ti importuotas" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Ä®skiepis „%s“ nenurodo reikalingos API versijos" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Ä®skiepis „%s“ reikalauja API %s. Palaikoma API yra %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Ä®keliamas įskiepis „%s“" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "Vienas ar daugiau įskiepių pavadinimu „%s“ yra įskiepių ieÅ¡kojimo kelyje" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "KonfigÅ«racijos failas %s nerastas" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Nepavyksta rasti konfigÅ«racijos failo įskiepiui %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "komandų registravimas nepalaikomas" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "turi trÅ«kstamų reikalavimų" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "turi įdiegtų konfliktų" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s yra %s dublikatas" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s yra apžymÄ—tas pasenusio paketo %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s teikia %s, bet nepavyksta jo rasti" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Perpakuojama" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "AntraÅ¡tÄ— negali bÅ«ti atverta ir neatitinka %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM %s neatitinka md5 tikrinimo" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Nepavyksta atverti RPM duomenų bazÄ—s skaitymui. GalbÅ«t ji jau naudojama?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Gauta tuÅ¡Äia antraÅ¡tÄ—, kažkas nepavyko" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Sugadinta antraÅ¡tÄ— %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Klaida atveriant rpm %s - klaida %s" yum-3.4.3/po/ru.po0000664000076400007640000027050211602434452012740 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Misha Shnurapet , 2011 # Misha Shnurapet , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Russian (http://www.transifex.net/projects/p/yum/team/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Обновление" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Удаление" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "УÑтановка" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "ИÑключено" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Обновлено" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Удалено" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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:1038 ../output.py:2193 msgid "Removing" msgstr "Удаление" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "ОчиÑтка" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Команда \"%s\" уже иÑпользуетÑÑ" #: ../cli.py:127 msgid "Setting up repositories" msgstr "ÐаÑтройка репозиториев" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Чтение локальных метаданных Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸ÐµÐ²" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Ошибка в наÑтройке: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Ошибка в параметре: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " УÑтановлено: %s-%s из %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Собрано : %s из %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Передано : %s из %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Ðеобходимо задать команду" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Ðе найдена команда: %s ПожалуйÑта, воÑпользуйтеÑÑŒ %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Требование к ноÑителю:\n" #: ../cli.py:402 #, 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:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Сводка ошибок\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Попытка предпринÑта, делать нечего. Завершение." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Выход по запроÑу пользователÑ" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Загрузка пакетов:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Ошибка загрузки пакетов:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Проверка ÑценариÑ" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ОШИБКР— необходимо обновить RPM Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "ОШИБКРпри проверке ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð½Ð° Ñтапе завиÑимоÑтей:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "Следует обновить RPM" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "ПожалуйÑта, Ñообщите об ошибке в %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "ПроверÑем Ñценарий" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Проверка ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð° Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Проверка ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð¿Ñ€Ð¾ÑˆÐ»Ð° уÑпешно" #: ../cli.py:600 msgid "Running Transaction" msgstr "Выполнение ÑценариÑ" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Отмена автоматичеÑкого импорта ключей во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка без контролÑ.\n" "ИÑпользуйте \"-y\" Ð´Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Возможно, вы имели в виду: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Пакет %s%s%s доÑтупен, но не уÑтановлен." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Пакета Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ %s%s%s не найдено." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Пакет(Ñ‹) Ð´Ð»Ñ ÑƒÑтановки" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "ВыполнÑть нечего" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d пакеты отмечены Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Пакетов, отмеченных Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ, нет." #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "Отмечено пакетов Ð´Ð»Ñ Ñинхронизации: %d" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Пакетов, отмеченных Ð´Ð»Ñ Ñинхронизации, нет" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d пакеты отмечены Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Пакетов, отмеченных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ, нет." #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Пакет(Ñ‹) Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° верÑии" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (из %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "УÑтановленный пакет %s%s%s%s недоÑтупен." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Пакет(Ñ‹) Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑƒÑтановки" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Пакеты не предоÑтавлены" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "Совпадений: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Ðазвание и опиÑание Ñовпадают только Ñ %sonly%s, иÑпользуйте «search all»," " чтобы иÑкать везде." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Полное название и опиÑание Ñовпадают только Ñ %sonly%s, иÑпользуйте " "«search all», чтобы иÑкать везде." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Совпадений: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Ðазвание и опиÑание Ñовпадают Ñ %smostly%s, иÑпользуйте «search all», " "чтобы иÑкать везде." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Внимание: Ñовпадений Ð´Ð»Ñ %s не найдено" #: ../cli.py:1109 msgid "No Matches found" msgstr "Совпадений не найдено" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Пакет Ð´Ð»Ñ %s не найден" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¸Ñточников:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "ОчиÑтка вÑего" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "ОчиÑтка заголовков" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "ОчиÑтка пакетов" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "ОчиÑтка xml метаданных" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "ОчиÑтка кÑша данных" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "ОчиÑтка уÑтаревшего кÑша" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "ОчиÑтка кÑша данных базы RPM" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Предупреждение: Ðи одна группа не Ñовпадает: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "УÑтановлены коллекции:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "УÑтановлены Ñзыковые пакеты:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "ДоÑтупные коллекции:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "ДоÑтупные Ñзыковые пакеты:" #: ../cli.py:1285 msgid "Done" msgstr "Выполнено" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Внимание: коллекции %s не ÑущеÑтвует." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Во вÑех указанных коллекциÑÑ… пакеты Ð´Ð»Ñ ÑƒÑтановки или Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÑутÑтвуют" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d Пакет(Ñ‹) Ð´Ð»Ñ ÑƒÑтановки" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Коллекции Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ %s не ÑущеÑтвует" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Ðет пакетов Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· коллекций" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d Пакет(Ñ‹) Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Пакет %s уже уÑтановлен, пропуÑкаем" #: ../cli.py:1397 #, 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:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "Других %s не уÑтановлено, добавлÑем в ÑпиÑок Ð´Ð»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ð¹ уÑтановки" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Опции модулÑ" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Ошибка команды: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s опцию необходимо указать Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color возможное значение: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot должен указывать абÑолютный путь: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "отобразить помощь и выйти" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "игнорировать ошибки" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "брать полноÑтью из ÑиÑтемного кÑша, не обновлÑть его" #: ../cli.py:1652 msgid "config file location" msgstr "раÑположение файла конфигурации" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "макÑимальное Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹" #: ../cli.py:1657 msgid "debugging output level" msgstr "уровень отладочных Ñообщений" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" "показывать повторÑющиеÑÑ Ð² репозиториÑÑ… пакеты, Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ list/search" #: ../cli.py:1663 msgid "error output level" msgstr "уровень Ñообщений об ошибках" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "уровень отладочных Ñообщений Ð´Ð»Ñ rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "работать без вывода Ñообщений" #: ../cli.py:1671 msgid "verbose operation" msgstr "подробно опиÑывать дейÑтвиÑ" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "Отвечать утвердительно на вÑе вопроÑÑ‹" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "показать верÑию Yum и выйти" #: ../cli.py:1676 msgid "set install root" msgstr "наÑтройка корневой папки" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" "включение одного и более репозиториев (поиÑк по шаблону поддерживаетÑÑ)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" "выключение одного и более репозиториев (поиÑк по шаблону поддерживаетÑÑ)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "иÑключение пакета(ов) по имени или регулÑрному выражению" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "отключает иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð»Ð¸ Ð´Ð»Ñ Ð²Ñех" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "включить обработку уÑтаревших во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "отключить модули Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "отключить проверку подпиÑи gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "отключить модуль по названию" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "включить модуль по названию" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "пропуÑкать пакеты, Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°Ð¼Ð¸ в завиÑимоÑÑ‚ÑÑ…" #: ../cli.py:1706 msgid "control whether color is used" msgstr "ИÑпользовать ли цветовые Ñхемы" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "уÑтановите значение $releasever в конфигурационном файле yum и в файлах " "репозиториев (repo)" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "другие наÑтройки и ÑвойÑтва иÑточников" #: ../output.py:307 msgid "Jan" msgstr "Янв" #: ../output.py:307 msgid "Feb" msgstr "Фев" #: ../output.py:307 msgid "Mar" msgstr "Мар" #: ../output.py:307 msgid "Apr" msgstr "Ðпр" #: ../output.py:307 msgid "May" msgstr "Май" #: ../output.py:307 msgid "Jun" msgstr "Июн" #: ../output.py:308 msgid "Jul" msgstr "Июл" #: ../output.py:308 msgid "Aug" msgstr "Ðвг" #: ../output.py:308 msgid "Sep" msgstr "Сен" #: ../output.py:308 msgid "Oct" msgstr "Окт" #: ../output.py:308 msgid "Nov" msgstr "ÐоÑ" #: ../output.py:308 msgid "Dec" msgstr "Дек" #: ../output.py:318 msgid "Trying other mirror." msgstr "Пробуем другое зеркало." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Ðазвание: %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Ðрхитектура: %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Период: %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "ВерÑиÑ: %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "ВыпуÑк: %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Объем: %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "ИÑточник: %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Из иÑточника: %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Создатель: %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑозданиÑ: %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ñборки: %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑƒÑтановки: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "УÑтановил: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Изменил: %s" #: ../output.py:612 msgid "Summary : " msgstr "ÐннотациÑ: " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "СÑылка: %s" #: ../output.py:615 msgid "License : " msgstr "ЛицензиÑ: " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "ОпиÑание: " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "да" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "нет" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Продолжить? [y/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "КоллекциÑ: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Код коллекции: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " ОпиÑание: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Язык: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " ОбÑзательные пакеты:" #: ../output.py:791 msgid " Default Packages:" msgstr " Пакеты по умолчанию:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Опциональные пакеты:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " ЗавиÑимые пакеты:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "пакет: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " У Ñтого пакета нет завиÑимоÑтей" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " завиÑимоÑть: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " ÐÐµÑƒÐ´Ð¾Ð²Ð»ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть" #: ../output.py:901 msgid "Matched from:" msgstr "Ð¡Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ñ:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° : %s" #: ../output.py:923 msgid "Other : " msgstr "Другое : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Произошла ошибка при подÑчете общего объема загрузки" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Общий размер: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Объем загрузки: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Объем изменений: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Ошибка при подÑчете объема уÑтановки" #: ../output.py:1039 msgid "Reinstalling" msgstr "ПереуÑтановка" #: ../output.py:1040 msgid "Downgrading" msgstr "Откат верÑии" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "УÑтановка завиÑимоÑтей" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Обновление завиÑимоÑтей" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Удаление завиÑимоÑтей" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Пропущено (ошибка завиÑимоÑтей)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Ðе уÑтановлено" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Пакет" #: ../output.py:1075 msgid "Arch" msgstr "Ðрхитектура" #: ../output.py:1076 msgid "Version" msgstr "ВерÑиÑ" #: ../output.py:1076 msgid "Repository" msgstr "Репозиторий " #: ../output.py:1077 msgid "Size" msgstr "Размер" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " замена %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Результат операции\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "УÑтановить %5.5s пакет(а,ов)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Обновить %5.5s пакет(а,ов)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Удалить %5.5s пакет(а,ов)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "ПереуÑтановить %5.5s пакет(а,ов)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Откатить %5.5s пакет(а,ов)\n" #: ../output.py:1165 msgid "Removed" msgstr "Удалено" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Удалены завиÑимоÑти" #: ../output.py:1168 msgid "Dependency Installed" msgstr "УÑтановлены завиÑимоÑти" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Обновлены завиÑимоÑти" #: ../output.py:1172 msgid "Replaced" msgstr "Заменено" #: ../output.py:1173 msgid "Failed" msgstr "Ðеудача" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, 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:1282 msgid "user interrupt" msgstr "прервано пользователем" #: ../output.py:1300 msgid "Total" msgstr "Общий размер" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "СиÑтема" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Переход от %d к %d, Ñ‚.к. Ñценарии переÑекаютÑÑ" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Сценарии отÑутÑтвуют" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Заданы неверный код ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð¸Ð»Ð¸ пакеты" #: ../output.py:1484 msgid "Command line" msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Вход пользователÑ" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Дата и времÑ" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "ДейÑтвиÑ" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Изменено" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Код дейÑÑ‚Ð²Ð¸Ñ Ð½Ðµ задан" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Код дейÑÑ‚Ð²Ð¸Ñ Ð½ÐµÐ²ÐµÑ€ÐµÐ½" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Указанный код дейÑÑ‚Ð²Ð¸Ñ Ð½Ðµ найден" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Указано более одной операции!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Ðе задан код дейÑÑ‚Ð²Ð¸Ñ Ð¸Ð»Ð¸ пакет" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Откачено" #: ../output.py:1688 msgid "Older" msgstr "Старее" #: ../output.py:1688 msgid "Newer" msgstr "Ðовее" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Код операции :" #: ../output.py:1728 msgid "Begin time :" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Ðачало rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u Ñекунд)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u минут)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u чаÑов)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u дней)" #: ../output.py:1756 msgid "End time :" msgstr "Конечное Ð²Ñ€ÐµÐ¼Ñ :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Конец rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Пользователь :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Код возврата :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Прекращено" #: ../output.py:1773 msgid "Failures:" msgstr "Ошибки:" #: ../output.py:1777 msgid "Failure:" msgstr "Ðеудача:" #: ../output.py:1779 msgid "Success" msgstr "УÑпешно" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Команда:" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "ИмеетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "ДейÑтвие выполнено:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Пакеты изменены:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Пропущены пакеты:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Ошибки в rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Вывод ÑценариÑ:" #: ../output.py:1831 msgid "Errors:" msgstr "Ошибки:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "УÑтановка " #: ../output.py:1839 msgid "Dep-Install" msgstr "УÑтановка завиÑимоÑтей" #: ../output.py:1841 msgid "Obsoleting" msgstr "ИÑключаем" #: ../output.py:1842 msgid "Erase" msgstr "Удаление" #: ../output.py:1843 msgid "Reinstall" msgstr "ПереуÑтановка" #: ../output.py:1844 msgid "Downgrade" msgstr "Откат верÑии" #: ../output.py:1846 msgid "Update" msgstr "Обновление" #: ../output.py:1909 msgid "Time" msgstr "ВремÑ" #: ../output.py:1935 msgid "Last day" msgstr "За поÑледний день" #: ../output.py:1936 msgid "Last week" msgstr "За поÑледнюю неделю" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "За поÑледние 2 недели" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "За поÑледние 3 меÑÑца" #: ../output.py:1939 msgid "Last 6 months" msgstr "За поÑледние 6 меÑÑцев" #: ../output.py:1940 msgid "Last year" msgstr "За поÑледний год" #: ../output.py:1941 msgid "Over a year ago" msgstr "Более года назад" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "ДейÑтвие %s не найдено" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Код операции:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "ИмеетÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ ранних дейÑтвиÑÑ…:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: По Ñтому названию других данных нет" #: ../output.py:2106 msgid "installed" msgstr "Ð´Ð»Ñ ÑƒÑтановки" #: ../output.py:2107 msgid "an update" msgstr "обновление" #: ../output.py:2108 msgid "erased" msgstr "Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" #: ../output.py:2109 msgid "reinstalled" msgstr "Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑƒÑтановки" #: ../output.py:2110 msgid "a downgrade" msgstr "откат" #: ../output.py:2111 msgid "obsoleting" msgstr "иÑключение" #: ../output.py:2112 msgid "updated" msgstr "Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ" #: ../output.py:2113 msgid "obsoleted" msgstr "как недейÑтвительный" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Пакет %s.%s %s:%s-%s помечен %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Проверка ÑценариÑ" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Перепроверка завиÑимоÑтей Ñ Ð½Ð¾Ð²Ñ‹Ð¼Ð¸ параметрами." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Проверка завиÑимоÑтей окончена" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Обработка завиÑимоÑтей: %s пакета: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Сохранен пакет: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> ÐÐµÑ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½Ð½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Пакет: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Ðеобходимо: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Ðе найдено" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Обновил" #: ../output.py:2197 msgid "Downgraded By" msgstr "Откатил" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Заменил" #: ../output.py:2216 msgid "Available" msgstr "ДоÑтупно" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Обработка конфликта: %s конфликтует Ñ %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Заполнение ÑпиÑка дейÑтвий выбранными пакетами. Подождите, пожалуйÑта." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Загрузка заголовка %s Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² ÑпиÑок." #: ../utils.py:99 msgid "Running" msgstr "ЗапуÑк" #: ../utils.py:100 msgid "Sleeping" msgstr "Ожидание" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Ðепрерываемый" #: ../utils.py:102 msgid "Zombie" msgstr "Зомби" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "ТраÑÑировано/ОÑтановлено" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "ÐеизвеÑтно" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Другое приложение: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Другое приложение: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " ПамÑть : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Запущено : %s — %s назад" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Ð¡Ñ‚Ð°Ñ‚ÑƒÑ : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Выход по запроÑу пользователÑ" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Выход из-за разрыва ÑвÑзи" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "Другое приложение удерживает данные yum; выход ÑоглаÑно exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Ошибка PluginExit: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Ошибка Yum: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Ошибка: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Ð’Ñ‹ можете попробовать --skip-broken чтобы обойти проблему" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Ð’Ñ‹ можете попробовать запуÑтить: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°(ошибки): Код выхода: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "ЗавиÑимоÑти определены" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Выполнено!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Сокращённое иÑпользование:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Ð”Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñтой команды необходимы привилегии ÑуперпользователÑ." #: ../yumcommands.py:59 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" "Ð’Ñ‹ также можете ввеÑти Ð°Ð´Ñ€ÐµÑ ÐºÐ»ÑŽÑ‡, который будет иÑпользоватьÑÑ\n" "Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ. ÐžÐ¿Ñ†Ð¸Ñ 'gpgkey' в Ñекции Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¸ Yum\n" "уÑтановит его за ВаÑ.\n" "\n" "Чтобы узнать больше, пожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð¿Ð¾Ñтавщиком диÑтрибутива или пакета.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Ошибка: Ðеобходимо указать ÑпиÑок пакетов Ð´Ð»Ñ %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Ошибка: Ðеобходим параметр Ð´Ð»Ñ ÑоответÑтвиÑ" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Ошибка: нужна ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ ÑпиÑок групп" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Ошибка: очиÑтка требует опции: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Ошибка: неверный параметр очиÑтки: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ðет аргумента Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ оболочки" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° принÑтое Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ оболочки: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" "Файл %s переданный в качеÑтве аргумента Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ оболочки не " "ÑущеÑтвует." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" "Ошибка: более чем один файл указан в качеÑтве аргумента Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ " "оболочки." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Ð’Ñе иÑточники пакетов отключены.\n" "Выполните «yum repolist all» Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° ÑпиÑка доÑтупных.\n" "Включение производитÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ yum-config-manager --enable [иÑточник]" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "ПÐКЕТ..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "УÑтановка пакета(ов) в ÑиÑтему" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Подготовка к уÑтановке" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[ПÐКЕТ...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Обновление пакета(ов) в ÑиÑтеме" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Подготовка к обновлению" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Обновить уÑтановленные пакеты до новейших доÑтупных верÑий" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Подготовка к Ñинхронизации" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Отобразить информацию о пакете или о коллекции пакетов" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "УÑтановленные пакеты" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "ДоÑтупные пакеты" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Дополнительные пакеты" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Обновленные пакеты" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "ИÑключенные пакеты" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Ðедавно добавленные пакеты" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Совпадений Ñреди пакетов не найдено" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "ВывеÑти ÑпиÑок пакетов или коллекций пакетов" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Удаление пакета(ов) из ÑиÑтемы" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Подготовка к удалению" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Подготовка к обработке коллекции" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Коллекций пакетов к обработке нет" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "СпиÑок доÑтупных коллекций пакетов" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "УÑтановка коллекции пакетов в ÑиÑтему" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Удаление коллекции пакета(ов) из ÑиÑтемы" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Показать информацию о коллекции пакетов" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Создание кÑша метаданных" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Создание кÑша Ð´Ð»Ñ Ð²Ñех метаданных файлов." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Это займет немного времени, в завиÑимоÑти от ÑкороÑти компьютера" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "КÑш метаданных Ñоздан" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Удаление кÑшированных данных" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Ðайти пакет по заданному значению" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Проверка доÑтупных обновлений пакетов" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "ПоиÑк информации о пакете по заданной Ñтроке" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "ПоиÑк пакетов:" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Обновить пакеты, ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ Ð½ÐµÐ´ÐµÐ¹Ñтвительные" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "ÐŸÑ€Ð¸Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ðº процеÑÑу обновлениÑ" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "УÑтановка локального пакета" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Подготовка дейÑтвий Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ пакетом" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "ОпределÑет какой пакет предоÑтавлÑет данную завиÑимоÑть" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "ПоиÑк завиÑимых пакетов" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "ЗапуÑк интерактивной командной оболочки yum" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "ÐаÑтройка командной оболочки Yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Отображение завиÑимоÑтей пакета" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "ПоиÑк завиÑимоÑтей:" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Отобразить Ñконфигурированные репозитории ПО" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "включено" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "отключено" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Код Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Ð˜Ð¼Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "СоÑтоÑние репозиториÑ: " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Ð ÐµÐ²Ð¸Ð·Ð¸Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Метки Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Метки диÑтрибутива : " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Репозиторий обновлен : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Пакеты Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Размер Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "baseurl Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "metalink Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Обновлено : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Зеркала Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Ðикогда (поÑледний: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "момент (оÑталоÑÑŒ:%s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s Ñекунд(а) (оÑталоÑÑŒ: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Окончание Ñрока репозиториÑ: " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "ИÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Включено в репозиторий : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "ИÑключено из Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ : " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "Идентификатор репозиториÑ" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "ÑоÑтоÑние" #: ../yumcommands.py:1062 msgid "repo name" msgstr "репозиторий" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Отобразить подÑказку к иÑпользованию" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Помощь недоÑтупна Ð´Ð»Ñ %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "альтернативные названиÑ: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "альтернативное название: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Подготовка к повторной уÑтановке" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "переуÑтановка пакета" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Подготовка к откату верÑии" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "откат к предыдущей верÑии пакета" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Отображает верÑию Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ архитектуры и/или доÑтупные репозитории." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Группы верÑий Yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Пакеты :" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "УÑтановлен(Ñ‹):" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "УÑтановлены коллекции:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "ДоÑтупен(Ñ‹):" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "ДоÑтупны коллекции :" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Отобразить (или иÑпользовать) журнал операций" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° журнала, иÑпользуйте: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Ðет доÑтупа к ÑпиÑкам предыдущих дейÑтвий." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Проверка проблем в базе данных RPM" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "загрузить Ñохранённый Ñценарий из файла" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Ðе указан файл ÑценариÑ." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "загрузка ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð¸Ð· %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Сценарий загружен из %s Ñ %s членами" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Ðеудачных проверок Yum: %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "Еще одно приложение, в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€ÑƒÐµÑ‚ Yum. Подождите..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "Ðе удалоÑÑŒ Ñоздать файл блокировки; завершение" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Разрешение завиÑимоÑтей" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "Сценарий Ñохранён, запуÑкайте командой: yum-load-transaction %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Выход по запроÑу пользователÑ" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() будет уÑтранен в Ñледующей верÑии Yum\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "СоÑтавление ÑпиÑка дейÑтвий до Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑа конфигурации" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Ðеверный tsflag в конфигурационном файле: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "ПоиÑк набора пакетов Ð´Ð»Ñ Ð·Ð°Ð²Ð¸ÑимоÑти: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Член: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s преобразован Ð´Ð»Ñ ÑƒÑтановки" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Добавление пакета %s в режиме %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Удаление пакета %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s требуетÑÑ: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s требуетÑÑ %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Ðеобходимое требование уже было было уже найдено, Ñжульничаем" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Ð¢Ñ€ÐµÐ±ÑƒÐµÐ¼Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть не ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ пакета. ПоиÑк: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Возможный поÑтавщик: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Режим %s Ð´Ð»Ñ Ð¿Ð¾Ñтавщика %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Режим Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð°, предоÑтавÑющего %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Пробую обновить %s чтобы решить завиÑимоÑть" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Ðе найдено путей Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s. Срыв!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s пакет необходимый Ð´Ð»Ñ %s был помечен Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: Замена уÑтаревшего %s пакета пакетом %s чтобы разрешить завиÑимоÑти." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Обновление %s Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑтей." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Ðе удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ путь Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑти длÑ: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "БыÑтро подобран пакет %s в качеÑтве требуемого Ð´Ð»Ñ %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "ЗавиÑимый пакет %s уже уÑтановлен и будет пропущен" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Пакет %s в Ñценарии новее доÑтупного" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Более новый пакет %s уже уÑтановлен в ÑиÑтему." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s уже в ÑпиÑке к дейÑтвию, пропуÑкаем его" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: %s отмечен как обновление Ð´Ð»Ñ %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Отмечен %s чтобы уÑтановить %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "УÑпешно — пуÑтой Ñценарий" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "ПерезапуÑк цикла" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Завершение процеÑÑа Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑтей" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "УÑпешно — завиÑимоÑти определены" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Проверка завиÑимоÑтей Ð´Ð»Ñ %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "поиÑк %s требуетÑÑ Ð´Ð»Ñ %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "ЗапуÑк compare_providers() Ð´Ð»Ñ %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "Лучший архив в %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s иÑключает %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "Сравнение archdist %s Ñ %s в %s\n" " Лучший: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "общий иÑточник RPM %s и %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "базовый пакет %s уÑтановлен Ð´Ð»Ñ %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "Общий Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ %s Ð´Ð»Ñ %s и %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "минимально: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "Лучший: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "Худший (c %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Лучший выбор: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() будет уÑтранен в Ñледующей верÑии Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "ИÑточник %r: Сбой обработки наÑтроек: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Репозиторий %r не имеет Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð² конфигурации, иÑпользуетÑÑ ID" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "модули уже загружены" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() будет уÑтранен в Ñледующей верÑии Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Чтение локальной базы данных RPM" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() будет уÑтранен в Ñледующей верÑии Yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() будет уÑтранен в Ñледующей верÑии Yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "ÐаÑтройка набора пакетов" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "Объект Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ %s не имеет метода _resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "поÑтому Ñтот репозиторий не может быть Ñброшен.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() будет уÑтранен в Ñледующей верÑии Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "ПоÑтроение объекта обновлений" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() будет уÑтранен в Ñледующей верÑии Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Получение метаданных коллекции" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Добавление файла коллекций из репозиториÑ: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° коллекций Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ: %s — %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Ðи в одном репозитории нет доÑтупных коллекций" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Загрузка метаданных меток пакета" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Добавление меток из репозиториÑ: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Ошибка добавление меток пакета Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ: %s — %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Импорт дополнительной информации о ÑпиÑке файлов" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Программа %s%s%s найдена в пакете yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "ОÑталиÑÑŒ незавершенные дейÑтвиÑ. Возможно, Ñначала Ñледует выполнить yum-" "complete-transaction Ð´Ð»Ñ Ð¸Ñ… завершениÑ." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> ПоиÑк ненужных оÑтаточных завиÑимоÑтей" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Защищённые верÑии multilib: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Попытка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ñ‰Ð¸Ñ‰ÐµÐ½Ð½Ð¾Ð³Ð¾ «%s»" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Пакеты пропущены из-за проблем Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚Ñми:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s из %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "** Предварительно ошибок в rpmdb: %d, «yum check» выдает Ñледующее:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "ПРЕДУПРЕЖДЕÐИЕ: база данных RPM была изменена вне yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "недоÑтающие завиÑимоÑти" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "уÑтановленный конфликтующий пакет" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "Внимание: в ходе операции возникли некоторые некритичеÑкие ошибки." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ начата:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Ðевозможно выполнить дейÑтвие." #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s должен был быть удален, но не был удален!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Ðевозможно открыть блокировку %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Ðевозможно проверить активен ли процеÑÑ %s" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Ð’Ñ‹ не можете Ñоздать блокировку %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Пакет не ÑоответÑтвует предложенному Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.\r\n" "ПредлагаетÑÑ Ð·Ð°Ð¿ÑƒÑтить run yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ðевозможно проверить контрольную Ñумму" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Пакет не Ñовпадает Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ Ñуммой" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "проверка контрольной Ñуммы неудачна, но кÑширование включено Ð´Ð»Ñ %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "иÑпользование локальной копии %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "ÐедоÑтаточно меÑта в директории %s\n" " * Ñвободно %s\n" " * необходимо %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Заголовок не полный." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Заголовок не в локальном кÑше. Включен режим только из кÑша. Ðевозможно " "загрузить %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Публичный ключ Ð´Ð»Ñ %s не уÑтановлен" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Проблема Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Публичный ключ Ð´Ð»Ñ %s не заÑлуживает довериÑ" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Пакет %s не подпиÑан" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Ðевозможно удалить %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s удален(Ñ‹)" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Ðевозможно удалить %s файл %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s файл %s удален" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s файлы удалены" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Более одного идентичных Ñовпадений найдено в наборе Ð´Ð»Ñ %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Совпадений не найдено %s.%s %s:%s-%s из обновлений" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() будет убрано в Ñледующей верÑии Yum." " ИÑпользуйте searchGenerator() взамен. \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "ПоиÑк %d пакетов" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "поиÑк пакета %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "поиÑк Ñреди файлов" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "поиÑк по Ñодержимому" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Ð”Ð»Ñ Ð½Ð°Ñтроенных репозиториев данных коллекций нет" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Коллекции Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ %s не ÑущеÑтвует" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "пакет %s не отмечен в коллекции %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Добавление пакета %s из коллекции %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Пакет Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %s не доÑтупен Ð´Ð»Ñ ÑƒÑтановки" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Предупреждение: Группа %s не имеет никаких пакетов." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ %s дейÑтвительно Ñодержит %u уÑловных пакетов, и возможна их " "уÑтановка." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Кортеж пакетов %s не найден в наборе пакетов" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Кортеж пакетов %s не найден в базе RPM" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Ðеверный флаг верÑии от: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Пакет %s не найден" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Package Object не ÑвлÑетÑÑ ÑкземплÑром объекта пакета" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Ðичего не отмечено Ð´Ð»Ñ ÑƒÑтановки" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Проверка виртуального провайдера или файлового провайдера Ð´Ð»Ñ %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Совпадений Ñ %s не найдено." #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Пакет %s уже уÑтановлен и недоÑтупен" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Ðет доÑтупных Ð´Ð»Ñ ÑƒÑтановки пакетов" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Пакет: %s — уже в ÑпиÑке к дейÑтвию" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Пакет %s недейÑтвителен из-за уÑтановленного %s" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "Пакет %s заменен %s, но поÑледний не отвечает завиÑимоÑÑ‚Ñм" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "Пакет %s недейÑтвителен из-за %s, попытка уÑтановки %s взамен" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Пакет %s уже уÑтановлен, и Ñто поÑледнÑÑ Ð²ÐµÑ€ÑиÑ." #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "Пакет %s уже уÑтановлен. Проверка обновлений." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Полное обновление" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "УÑтаревший и уже необновлÑемый пакет: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Пакет уже уÑтарел: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "УÑтаревший необновлÑемый пакет: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Ðеобновленный пакет, который был обновлен ранее: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Ðет пакетов Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "ПропуÑк выполнÑющегоÑÑ Ñдра: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "ИÑключение %s из ÑпиÑка дейÑтвий" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Ðевозможно открыть: %s. ПропуÑк." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Проверка %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÑти localinstall deltarpm %s. ПропуÑк." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Ðевозможно добавить пакет %s в ÑпиÑок дейÑтвий. ÐеÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°: " "%s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "УÑтановка пакета %s невозможна. Его заменил уÑтановленный пакет %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Пакет %s не уÑтановлен, невозможно обновить его. ЗапуÑтите yum install Ð´Ð»Ñ " "его уÑтановки." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Пакет %s.%s не уÑтановлен, не возможно его обновить. ЗапуÑтите yum install " "чтобы уÑтановить вмеÑто него." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "ИÑключаем %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s отмечен Ð´Ð»Ñ ÑƒÑтановки" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "%s отмечен как обновление Ð´Ð»Ñ %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: не обновлÑет уÑтановленный пакет." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Ðевозможно открыть файл %s. ПропуÑк." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Проблема при переуÑтановке: не найден пакет Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "Проблема при переуÑтановке: пакет %s не найден Ð´Ð»Ñ ÑƒÑтановки" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Пакеты Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° верÑии отÑутÑтвуют" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Пакет %s может быть повторно уÑтановлен, пропуÑк" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Пакеты недоÑтупны: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Только переход к Ñледующей верÑии доÑтупен Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð°: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Ошибка отката верÑии: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Получение ключа из %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Ðеудача Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° GPG:" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" "ПодпиÑÑŒ GPG ключа на ключе %s не Ñовпадает Ñ CA ключом Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "ПодпиÑÑŒ GPG ключа проверена через CA ключ(и)" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Ðеверный GPG ключ %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Ошибка обработки GPG ключа: ключ не имеет Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Импорт %s ключа 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Импорт %s ключа 0x%s:\n" " Userid: \"%s\"\n" " From : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG ключ %s (0x%s) уже уÑтановлен" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Ðеудача импорта ключа (code %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Импорт ключа уÑпешно завершен" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Ðе уÑтановлены какие-либо ключи" #: ../yum/__init__.py:4680 #, 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:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Импорт ключа(ключей) не помог, неверный ключ(ключи)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG ключ из %s (0x%s) уже был импортирован" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Импорт ключа неудачен" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Ðе уÑтановлены какие-либо ключи Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Ключи подпиÑей GPG Ð´Ð»Ñ Ð¸Ñточника «%s» уже уÑтановлены, но они неверные.\n" "\r\n" "УбедитеÑÑŒ в правильноÑти заданных URL Ñ ÐºÐ»ÑŽÑ‡Ð°Ð¼Ð¸ Ð´Ð»Ñ Ñтого иÑточника." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Ðе удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ подходÑщее зеркало" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Были обнаружены ошибки во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ пакетов." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "ПожалуйÑта, Ñообщите об Ñтой ошибке в %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Ошибки проверки ÑценариÑ:" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Ðевозможно задать кÑш-папку: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "ЗавиÑимоÑти не определены. ДейÑтвие не будет Ñохранено." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Ðе удалоÑÑŒ Ñохранить файл ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Ðе удалоÑÑŒ прочеÑть Ñохранённый Ñценарий %s : %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "ВерÑÐ¸Ñ Ð±Ð°Ð·Ñ‹ данных RPM не Ñовпала Ñ Ð²ÐµÑ€Ñией ÑценариÑ," #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " игнорирование, как потребуетÑÑ" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " прерывание" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "tsflags не найдены или не целочиÑленные." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Ðайден txmbr в неопределенном ÑоÑтоÑнии: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Ðе найден txmbr: %s в ÑоÑтоÑнии %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Ðе найден txmbr: %s %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "ОтÑутÑтвует чаÑть ÑценариÑ, нарушены ÑвÑзи, или Ñценарий изменилÑÑ," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " пропущено по требованию. Проверьте завиÑимоÑти!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Загружены модули: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ðет модулÑ: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Модуль \"%s\" не был загружен, поÑкольку отключен" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Ðевозможен импорт Ð¼Ð¾Ð´ÑƒÐ»Ñ \"%s\"" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Модулем \"%s\" не указана Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ API" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Модуль \"%s\" требует API %s. ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ API — %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Загрузка Ð¼Ð¾Ð´ÑƒÐ»Ñ \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "Ð’ каталоге модулей обнаружено два или более Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ \"%s\"" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Конфигурационный файл %s не найден" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Ðе найден файл наÑтройки Ð¼Ð¾Ð´ÑƒÐ»Ñ %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ не поддерживаетÑÑ" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "имеет недоÑтающие завиÑимоÑти от" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "конфликтует Ñ ÑƒÑтановленными" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s Ñовпадает Ñ %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s заменен на %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s предоÑтавлÑет %s, но он не найден" #: ../yum/rpmtrans.py:80 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 "ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма md5 пакета %s не Ñовпадает Ñ Ð´ÐµÐ¹Ñтвительной" #: ../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 "Ðевозможно открыть пакет %s — ошибка %s" yum-3.4.3/po/ja.po0000664000076400007640000024432211602434452012705 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Hajime Taira , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Japanese (http://www.transifex.net/projects/p/yum/team/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "æ›´æ–°" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "削除中" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "インストールã—ã¦ã„ã¾ã™" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "ä¸è¦" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "æ›´æ–°" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "削除" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 for %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "削除ã—ã¾ã—ãŸ: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "削除" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "æ•´ç†ä¸­" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "コマンド「%sã€ã¯ã™ã§ã«å®šç¾©æ¸ˆã¿ã§ã™" #: ../cli.py:127 msgid "Setting up repositories" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®è¨­å®š" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "ローカルファイルã‹ã‚‰ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "設定エラー: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "オプションエラー: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "インストール: %s-%s (日時: %s)" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " 構築 : %s (日時: %s)" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " コミット : %s (日時: %s)" #: ../cli.py:336 msgid "You need to give some command" msgstr "ã„ãã¤ã‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "コマンド「%sã€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。「%s --helpã€ã‚’実行ã—ã¦ãã ã•ã„。" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "ãƒ‡ã‚£ã‚¹ã‚¯è¦æ±‚:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " å°‘ãªãã¨ã‚‚ %dMB ã®ç©ºã容é‡ãŒãƒ•ァイルシステム %s ã§å¿…è¦ã§ã™ã€‚\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "エラーã®è¦ç´„\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "トランザクションã®å®Ÿè¡Œã‚’試ã¿ã¾ã—ãŸãŒã€ä½•ã‚‚ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚終了ã—ã¾ã™ã€‚" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "ユーザーコマンドを終了ã—ã¦ã„ã¾ã™" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "パッケージをダウンロードã—ã¦ã„ã¾ã™:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "パッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ã‚¨ãƒ©ãƒ¼:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "トランザクションã®ãƒã‚§ãƒƒã‚¯ã‚’実行ã—ã¦ã—ã¾ã™ã€‚" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "エラー: RPM ã®æ›´æ–°ã®ãŸã‚ã®ãƒãƒ³ãƒ‰ãƒ«ã‚’æ›´æ–°ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "æ›´æ–°ã«ã¯ RPM ãŒå¿…è¦ã§ã™" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "%s ã«ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ã¦ãã ã•ã„" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "トランザクションã®ãƒ†ã‚¹ãƒˆã‚’実行ã—ã¦ã„ã¾ã™" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "トランザクションã®ç¢ºèªã‚¨ãƒ©ãƒ¼\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "トランザクションã®ãƒ†ã‚¹ãƒˆã‚’æˆåŠŸã—ã¾ã—ãŸ" #: ../cli.py:600 msgid "Running Transaction" msgstr "トランザクションを実行ã—ã¦ã„ã¾ã™" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * ãŠãらãã®æ„味: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "パッケージ %s%s%s ã¯åˆ©ç”¨ã§ãã¾ã™ãŒã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã›ã‚“ã§ã—ãŸã€‚" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "パッケージ %s%s%s ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "インストールã™ã‚‹ãƒ‘ッケージ" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "何もã—ã¾ã›ã‚“" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d 個ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒæ›´æ–°ã®è¨­å®šã—ã¾ã—ãŸã€‚" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "æ›´æ–°ã¨è¨­å®šã•れãŸãƒ‘ッケージãŒã‚りã¾ã›ã‚“。" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d 個ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã‚’åŒæœŸé…ä¿¡ã«è¨­å®šã—ã¾ã—ãŸã€‚" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "パッケージãŒåŒæœŸé…ä¿¡ã«è¨­å®šã—ãŸãƒ‘ッケージã¯ã‚りã¾ã›ã‚“。" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d 個ã®ãƒ‘ッケージを削除ã«è¨­å®šã—ã¾ã—ãŸã€‚" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "削除ã¨è¨­å®šã—ãŸãƒ‘ッケージã¯ã‚りã¾ã›ã‚“。" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "ダウングレードã™ã‚‹ãƒ‘ッケージ" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (%s ã‹ã‚‰)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "インストール済ã¿ãƒ‘ッケージ %s%s%s%s ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ãƒ‘ッケージ" #: ../cli.py:960 msgid "No Packages Provided" msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒæä¾›ã•れã¦ã„ã¾ã›ã‚“。" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "一致: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "警告: 一致ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "%s ã®ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã‚’清掃ã—ã¦ã„ã¾ã™: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "ã™ã¹ã¦æŽƒé™¤ã—ã¦ã„ã¾ã™" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "ヘッダーを掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "パッケージを掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "XML メタデータを掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "データベースキャッシュを掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "期é™åˆ‡ã‚Œã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "キャッシュ済㿠rpmdb データを掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "プラグインを掃除ã—ã¦ã„ã¾ã™" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "インストール済ã¿ã‚°ãƒ«ãƒ¼ãƒ—:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "利用å¯èƒ½ãªã‚°ãƒ«ãƒ¼ãƒ—" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "完了" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "警告: グループ %s ãŒå­˜åœ¨ã—ã¾ã›ã‚“。" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "インストールã¾ãŸã¯æ›´æ–°ã«åˆ©ç”¨ã§ãã‚‹ã„ãã¤ã‹ã®è¦æ±‚ã•れãŸã‚°ãƒ«ãƒ¼ãƒ—ã«ãƒ‘ッケージãŒã‚りã¾ã›ã‚“" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d 個ã®ãƒ‘ッケージをインストールã—ã¾ã™" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "グループå %s ãŒå­˜åœ¨ã—ã¾ã›ã‚“" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "グループã‹ã‚‰å‰Šé™¤ã™ã‚‹ãƒ‘ッケージãŒã‚りã¾ã›ã‚“" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d 個ã®ãƒ‘ッケージを削除ã—ã¾ã™" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "パッケージ %s ã¯æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã®ã§é£›ã°ã—ã¾ã™" #: ../cli.py:1397 #, 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:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "プラグインã®ã‚ªãƒ—ション" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "コマンドライン エラー: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: オプション %s ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ " #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color ãŒã¨ã‚‹ã“ã¨ãŒã§ãã‚‹å€¤ãªæ¬¡ã®ã†ã¡ã²ã¨ã¤ã§ã™: autoã€alwaysã€never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "ã“ã®ãƒ˜ãƒ«ãƒ— メッセージを表示ã—ã¦çµ‚了ã™ã‚‹" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "エラーを黙èªã™ã‚‹" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "キャッシュã‹ã‚‰å®Œå…¨ã«å®Ÿè¡Œã—ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’æ›´æ–°ã—ã¾ã›ã‚“" #: ../cli.py:1652 msgid "config file location" msgstr "æ§‹æˆãƒ•ァイルã®å ´æ‰€" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "ã‚³ãƒžãƒ³ãƒ‰ã®æœ€å¤§å¾…ã¡æ™‚é–“" #: ../cli.py:1657 msgid "debugging output level" msgstr "デãƒãƒƒã‚°æƒ…å ±ã®å‡ºåŠ›ãƒ¬ãƒ™ãƒ«" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "一覧/検索コマンドã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã®é‡è¤‡ã®è¡¨ç¤º" #: ../cli.py:1663 msgid "error output level" msgstr "エラー出力レベル" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "rpm ã®ãƒ‡ãƒãƒƒã‚°æƒ…å ±ã®å‡ºåŠ›ãƒ¬ãƒ™ãƒ«" #: ../cli.py:1669 msgid "quiet operation" msgstr "é™ã‹ã«å‡¦ç†ã‚’ã™ã‚‹" #: ../cli.py:1671 msgid "verbose operation" msgstr "冗長ã«å‡¦ç†ã‚’ã™ã‚‹" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "ã™ã¹ã¦ã®å•ã„åˆã‚ã›ã«ã€Œyesã€ã§ç­”ãˆã‚‹" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "Yum ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã—ã¦çµ‚了ã™ã‚‹" #: ../cli.py:1676 msgid "set install root" msgstr "インストールã®ãƒ™ãƒ¼ã‚¹ ディレクトリーを設定ã™ã‚‹" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "ã²ã¨ã¤ä»¥ä¸Šã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã‚’有効ã«ã™ã‚‹ (ワイルドカード許å¯)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "ã²ã¨ã¤ä»¥ä¸Šã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã‚’無効ã«ã™ã‚‹ (ワイルドカード許å¯)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "åå‰ã‹ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã§ãƒ‘ッケージを除外ã™ã‚‹" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "mainã€ã‚るリãƒã‚¸ãƒˆãƒªãƒ¼ã€ã¾ãŸã¯ã™ã¹ã¦ã‹ã‚‰ã®é™¤å¤–を無効ã«ã—ã¾ã™ã€‚" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "更新中ã«ä¸è¦ãªå‡¦ç†ã‚’有効ã«ã—ã¾ã™" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "Yum プラグインを無効ã«ã™ã‚‹" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "GPG ç½²åã®ç¢ºèªã‚’無効ã«ã™ã‚‹" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "åå‰ã§ãƒ—ラグインを無効ã«ã™ã‚‹" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "åå‰ã§ãƒ—ラグインを有効ã«ã™ã‚‹" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "ä¾å­˜æ€§ã«å•題ãŒã‚るパッケージを飛ã°ã™" #: ../cli.py:1706 msgid "control whether color is used" msgstr "色を使ã†ã‹ã©ã†ã‹åˆ¶å¾¡ã™ã‚‹" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "yum 設定㨠repo ファイル㫠$releasever ã®å€¤ã‚’設定ã™ã‚‹" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "全体設定ã¨ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ オプションã®ä»»æ„ã«è¨­å®šã™ã‚‹" #: ../output.py:307 msgid "Jan" msgstr "1 月" #: ../output.py:307 msgid "Feb" msgstr "2 月" #: ../output.py:307 msgid "Mar" msgstr "3 月" #: ../output.py:307 msgid "Apr" msgstr "4 月" #: ../output.py:307 msgid "May" msgstr "5 月" #: ../output.py:307 msgid "Jun" msgstr "6 月" #: ../output.py:308 msgid "Jul" msgstr "7 月" #: ../output.py:308 msgid "Aug" msgstr "8 月" #: ../output.py:308 msgid "Sep" msgstr "9 月" #: ../output.py:308 msgid "Oct" msgstr "10 月" #: ../output.py:308 msgid "Nov" msgstr "11 月" #: ../output.py:308 msgid "Dec" msgstr "12 月" #: ../output.py:318 msgid "Trying other mirror." msgstr "ä»–ã®ãƒŸãƒ©ãƒ¼ã‚’試ã—ã¾ã™ã€‚" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "åå‰ : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "アーキテクãƒãƒ£ : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "エãƒãƒƒã‚¯ : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "リリース : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "å®¹é‡ : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "æä¾›å…ƒãƒªãƒã‚¸ãƒˆãƒªãƒ¼ : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "コミット者 : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "コミット日時 : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "ビルド日時 : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "インストール日時 : %s " #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "インストール済ã¿å®¹é‡: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "変更者 : %s" #: ../output.py:612 msgid "Summary : " msgstr "è¦ç´„ : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "ライセンス : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "説明 : " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "ã¯ã„" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "ã„ã„ãˆ" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "ã“れã§ã„ã„ã§ã™ã‹? [y/N]" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "グループ: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " グループ ID: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " 説明: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " 強制的ãªãƒ‘ッケージ:" #: ../output.py:791 msgid " Default Packages:" msgstr " 標準パッケージ:" #: ../output.py:792 msgid " Optional Packages:" msgstr " オプション パッケージ:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " æ¡ä»¶ä»˜ãƒ‘ッケージ:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "パッケージ : %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " ã“ã®ãƒ‘ッケージã®ä¾å­˜ã¯ã‚りã¾ã›ã‚“" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " ä¾å­˜æ€§ : %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " 満ãŸã•れã¦ã„ãªã„ä¾å­˜æ€§" #: ../output.py:901 msgid "Matched from:" msgstr "一致 :" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "ライセンス : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "ファイルå : %s" #: ../output.py:923 msgid "Other : " msgstr "ãã®ä»– : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "ç·ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å®¹é‡ã®è¨ˆç®—中ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "åˆè¨ˆå®¹é‡: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "ç·ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å®¹é‡: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "インストール済ã¿å®¹é‡: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "インストール容é‡ã®è¨ˆç®—中ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: ../output.py:1039 msgid "Reinstalling" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸­" #: ../output.py:1040 msgid "Downgrading" msgstr "ダウングレード中" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "ä¾å­˜æ€§é–¢é€£ã§ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ã—ã¾ã™ã€‚" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "ä¾å­˜æ€§é–¢é€£ã§ã®æ›´æ–°ã‚’ã—ã¾ã™ã€‚" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "ä¾å­˜æ€§é–¢é€£ã§ã®å‰Šé™¤ã‚’ã—ã¾ã™ã€‚" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "飛ã°ã—ã¾ã—㟠(ä¾å­˜æ€§ã®å•題)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "未インストール" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "パッケージ" #: ../output.py:1075 msgid "Arch" msgstr "アーキテクãƒãƒ£" #: ../output.py:1076 msgid "Version" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" #: ../output.py:1076 msgid "Repository" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼" #: ../output.py:1077 msgid "Size" msgstr "容é‡" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " ç½®ãæ›ãˆã¦ã„ã¾ã™ %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "トランザクションã®è¦ç´„\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "インストール %5.5s パッケージ\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "アップグレード %5.5s パッケージ\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "削除 %5.5s パッケージ\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« %5.5s パッケージ\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "ダウングレード %5.5s パッケージ\n" #: ../output.py:1165 msgid "Removed" msgstr "削除ã—ã¾ã—ãŸ" #: ../output.py:1166 msgid "Dependency Removed" msgstr "ä¾å­˜æ€§ã®å‰Šé™¤ã‚’ã—ã¾ã—ãŸ" #: ../output.py:1168 msgid "Dependency Installed" msgstr "ä¾å­˜æ€§é–¢é€£ã‚’インストールã—ã¾ã—ãŸ" #: ../output.py:1170 msgid "Dependency Updated" msgstr "ä¾å­˜æ€§ã‚’æ›´æ–°ã—ã¾ã—ãŸ" #: ../output.py:1172 msgid "Replaced" msgstr "ç½®æ›" #: ../output.py:1173 msgid "Failed" msgstr "失敗" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "2" #. 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:1271 #, 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" #: ../output.py:1282 msgid "user interrupt" msgstr "ユーザーã®å‰²ã‚Šè¾¼ã¿" #: ../output.py:1300 msgid "Total" msgstr "åˆè¨ˆ" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "<未設定>" #: ../output.py:1342 msgid "System" msgstr "システム" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "指定ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ IDã€ã¾ãŸã¯ãƒ‘ッケージãŒãŠã‹ã—ã„ã§ã™" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "ログイン ユーザー" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "日時" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "æ“作" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "変更" #: ../output.py:1538 msgid "No transaction ID given" msgstr "指定ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ ID ãŒã‚りã¾ã›ã‚“。" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "指定ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ ID ãŒãŠã‹ã—ã„ã§ã™" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "指定ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ ID ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "ã²ã¨ã¤ä»¥ä¸Šã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ ID ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "指定ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ IDã€ã¾ãŸã¯ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "ダウングレード済ã¿" #: ../output.py:1688 msgid "Older" msgstr "よりå¤ã„" #: ../output.py:1688 msgid "Newer" msgstr "より新ã—ã„" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "トランザクション ID :" #: ../output.py:1728 msgid "Begin time :" msgstr "開始時間 :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "é–‹å§‹ rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "終了時間 :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "終了 rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "ユーザー :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "終了コード :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "中断ã—ã¾ã—ãŸ" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "失敗ã—ã¾ã—ãŸ:" #: ../output.py:1779 msgid "Success" msgstr "æˆåŠŸ" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "コマンドライン :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "ä¿å­˜æ¸ˆã¿ã®è¿½åŠ ã®éžæ¨™æº–ãªæƒ…å ±: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "トランザクションã®å®Ÿè¡Œ:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "切り替ãˆãŸãƒ‘ッケージ:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "パッケージを飛ã°ã—ã¾ã™:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb ã®å•題:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "スクリプトã®å‡ºåŠ›:" #: ../output.py:1831 msgid "Errors:" msgstr "エラー:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "インストール" #: ../output.py:1839 msgid "Dep-Install" msgstr "ä¾å­˜ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: ../output.py:1841 msgid "Obsoleting" msgstr "ä¸è¦å‰Šé™¤" #: ../output.py:1842 msgid "Erase" msgstr "削除" #: ../output.py:1843 msgid "Reinstall" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: ../output.py:1844 msgid "Downgrade" msgstr "ダウングレード" #: ../output.py:1846 msgid "Update" msgstr "æ›´æ–°" #: ../output.py:1909 msgid "Time" msgstr "時間" #: ../output.py:1935 msgid "Last day" msgstr "昨日" #: ../output.py:1936 msgid "Last week" msgstr "先週" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "最近㮠2 週間" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "最近㮠3 ヶ月間" #: ../output.py:1939 msgid "Last 6 months" msgstr "最近㮠6 ヶ月間" #: ../output.py:1940 msgid "Last year" msgstr "昨年" #: ../output.py:1941 msgid "Over a year ago" msgstr "1 年以上å‰" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "トランザクション %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: ../output.py:1990 msgid "Transaction ID:" msgstr "トランザクション ID:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "追加ã®å±¥æ­´æƒ…å ±ãŒåˆ©ç”¨ã§ãã¾ã™:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: ã“ã®åå‰ã‹ã‚‰è¿½åŠ ã®ãƒ‡ãƒ¼ã‚¿ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: ../output.py:2106 msgid "installed" msgstr "インストール" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "削除" #: ../output.py:2109 msgid "reinstalled" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "æ›´æ–°" #: ../output.py:2113 msgid "obsoleted" msgstr "ä¸è¦" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> トランザクションã®ç¢ºèªã‚’実行ã—ã¦ã„ã¾ã™ã€‚" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> æ–°ã—ã„変更ã¨ä¾å­˜æ€§ã®è§£æ±ºã‚’å†é–‹ã—ã¦ã„ã¾ã™ã€‚" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> ä¾å­˜æ€§è§£æ±ºã‚’終了ã—ã¾ã—ãŸã€‚" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> ä¾å­˜æ€§ã®å‡¦ç†ã‚’ã—ã¦ã„ã¾ã™: %s ã®ãƒ‘ッケージ: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> ç¶­æŒã—ã¦ã„ã¾ã™: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> 未解決ã®ä¾å­˜æ€§: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "パッケージ: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " è¦æ±‚: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " 見ã¤ã‹ã‚Šã¾ã›ã‚“" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "次ã®ã‚‚ã®ã«ã‚ˆã‚Šæ›´æ–°ã•れãŸ: " #: ../output.py:2197 msgid "Downgraded By" msgstr "次ã®ã‚‚ã®ã«ã‚ˆã‚Šãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã•れãŸ: " #: ../output.py:2198 msgid "Obsoleted By" msgstr "次ã®ã‚‚ã®ã«ã‚ˆã‚Šä¸è¦ã«ã•れãŸ: " #: ../output.py:2216 msgid "Available" msgstr "利用å¯èƒ½" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> è¡çªã‚’処ç†ã—ã¦ã„ã¾ã™: %s 㯠%s ã¨è¡çªã—ã¦ã„ã¾ã™" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚»ãƒƒãƒˆã«æŸã­ã‚‹ãŸã‚ã« %s ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã‚’ダウンロードã—ã¦ã„ã¾ã™" #: ../utils.py:99 msgid "Running" msgstr "実行中" #: ../utils.py:100 msgid "Sleeping" msgstr "スリープ中" #: ../utils.py:101 msgid "Uninterruptible" msgstr "割り込ã¿ä¸å¯" #: ../utils.py:102 msgid "Zombie" msgstr "ゾンビ" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "トレース/åœæ­¢" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "䏿˜Ž" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " ä»–ã®ã‚¢ãƒ—リケーション: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " ä»–ã®ã‚¢ãƒ—リケーション: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " メモリー: %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " é–‹å§‹ : %s - %s 秒経éŽ" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " 状態 : %sã€PID: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "ユーザーã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã§çµ‚了ã—ã¦ã„ã¾ã™" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "パイプãŒå£Šã‚ŒãŸãŸã‚終了ã—ã¦ã„ã¾ã™" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "別ã®ã‚¢ãƒ—リケーションãŒç¾åœ¨ yum ã®ãƒ­ãƒƒã‚¯ã‚’æŒã£ã¦ã„ã¾ã™ã€‚exit_on_lock ã«ã‚ˆã‚‹è¨­å®šãŒå­˜åœ¨ã—ã¾ã™" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "プラグインã®ã‚¨ãƒ©ãƒ¼çµ‚了: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum エラー: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "エラー: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " å•題を回é¿ã™ã‚‹ãŸã‚ã« --skip-broken を用ã„ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " ã“れらを試行ã§ãã¾ã™: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼: 終了コード: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "ä¾å­˜æ€§ã‚’解決ã—ã¾ã—ãŸ" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "完了ã—ã¾ã—ãŸ!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹ã«ã¯ root ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "エラー: パッケージã®ä¸€è¦§ã‚’ %s ã«æ¸¡ã™å¿…è¦ãŒã‚りã¾ã™" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "エラー: 一致ã™ã‚‹é …ç›®ãŒå¿…è¦ã§ã™" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "エラー: グループ化グループã®ä¸€è¦§ãŒå¿…è¦ã§ã™" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "エラー: clean ã¯å¼•æ•°ã‚’ã²ã¨ã¤è¦æ±‚ã—ã¾ã™: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "エラー: 䏿­£ãª clean ã®å¼•æ•°ã§ã™: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "シェルã¸ã®å¼•æ•°ãŒã‚りã¾ã›ã‚“" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "ã‚·ã‚§ãƒ«ã«æ¸¡ã™ãƒ•ァイルå: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "シェルã¸ã®å¼•æ•°ã¨ã—ã¦æ¸¡ã—ãŸãƒ•ァイル %s ã¯å­˜åœ¨ã—ã¾ã›ã‚“。" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "エラー: シェルã¸ã®å¼•æ•°ã¨ã—ã¦ã²ã¨ã¤ä»¥ä¸Šã®ãƒ•ァイルを渡ã—ã¾ã—ãŸã€‚" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "有効ãªãƒªãƒã‚¸ãƒˆãƒªãƒ¼ãŒã‚りã¾ã›ã‚“。\n" " 「yum repolist allã€ã‚’実行ã—ã€æ‰€æŒã™ã‚‹ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" " 「yum-config-manager --enable ã€ã§ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã‚’有効ã«ã§ãã¾ã™ã€‚" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "パッケージ..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "システムã«ãƒ‘ッケージをインストールã™ã‚‹" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "インストール処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[パッケージ...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "システムã®ãƒ‘ッケージを更新ã™ã‚‹" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "更新処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "最新ã®åˆ©ç”¨å¯èƒ½ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã‚’åŒæœŸã™ã‚‹" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "åŒæœŸé…信処ç†ã®æº–備をã—ã¦ã„ã¾ã™" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "パッケージもã—ãã¯ãƒ‘ッケージã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¤ã„ã¦ã®è©³ç´°ã‚’表示ã™ã‚‹" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "インストール済ã¿ãƒ‘ッケージ" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "利用å¯èƒ½ãªãƒ‘ッケージ" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "外部パッケージ" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "æ›´æ–°ã—ãŸãƒ‘ッケージ" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "パッケージをä¸è¦ã«ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "最近追加ã—ãŸãƒ‘ッケージ" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "表示ã™ã‚‹ãƒ‘ッケージã¯ã‚りã¾ã›ã‚“" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "パッケージグループã®ä¸€è¦§ã‚’表示ã™ã‚‹" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "システムã‹ã‚‰å‰Šé™¤ã™ã‚‹ãƒ‘ッケージ" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "削除処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "グループ処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "コマンドを実行ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ãŒã‚りã¾ã›ã‚“" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "利用ã§ãるパッケージグループã®ä¸€è¦§" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "システムã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‘ッケージをインストールã™ã‚‹" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "システムã‹ã‚‰ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‘ッケージを削除ã™ã‚‹" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "パッケージグループã«ã¤ã„ã¦ã®è©³ç´°ã‚’表示ã™ã‚‹" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "メタデータキャッシュを生æˆã™ã‚‹" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "ã™ã¹ã¦é£²ã‚ãŸãƒ‡ãƒ¼ã‚¿ãƒ•ァイルã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’作æˆã—ã¾ã™ã€‚" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "ã“れã¯ã€ã“ã®ã‚³ãƒ³ãƒ”ューターã®é€Ÿåº¦ã«ä¾å­˜ã™ã‚‹æ™‚é–“ã‚’ã¨ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "メタデータã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’作æˆã—ã¾ã—ãŸ" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "キャッシュデータを削除ã™ã‚‹" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "指定値をæä¾›ã™ã‚‹ãƒ‘ッケージを検索ã™ã‚‹" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "æ›´æ–°ã«åˆ©ç”¨ã§ãるパッケージを確èªã™ã‚‹" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "指定ã—ãŸæ–‡å­—列ã§ãƒ‘ッケージã®è©³ç´°ã‚’検索ã™ã‚‹" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®æ¤œç´¢ä¸­: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "ä¸è¦ã«ãªã£ãŸãƒ‘ッケージを考慮ã—ãªãŒã‚‰ãƒ‘ッケージを更新ã™ã‚‹" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "更新処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "ローカル RPM ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "ローカルパッケージ処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "指定ã®ä¾å­˜æ€§ã‚’æä¾›ã™ã‚‹ãƒ‘ッケージãŒã©ã‚Œã‹ç‰¹å®šã™ã‚‹" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "ä¾å­˜æ€§ã®ãƒ‘ッケージ検索:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "対話型㮠yum シェルを実行ã™ã‚‹" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Yum シェルã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "パッケージã®ä¾å­˜æ€§ã®ä¸€è¦§ã‚’表示ã™ã‚‹" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "ä¾å­˜æ€§ã®æ¤œç´¢ä¸­: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "ソフトウェアリãƒã‚¸ãƒˆãƒªãƒ¼ã®æ§‹æˆã‚’表示ã™ã‚‹" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "有効" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "無効" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ ID : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®åå‰ : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®çŠ¶æ…‹ : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®ãƒªãƒ“ジョン : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®ã‚¿ã‚° : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼æ›´æ–°æ—¥ : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼å†…パッケージ数 : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼å®¹é‡ : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼åŸºæº– URL : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ãƒ¡ã‚¿ãƒªãƒ³ã‚¯ : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " æ›´æ–°æ—¥ : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®ãƒŸãƒ©ãƒ¼ : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "ãšã£ã¨ (最終: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "インスタント (最終: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s ç§’ (最終: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®æœŸé™ : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®é™¤å¤– : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®å†…包 : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®é™¤å¤–æ•° : " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ ID" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "状態" #: ../yumcommands.py:1062 msgid "repo name" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼å" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "役立ã¤ä½¿ã„æ–¹ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "%s ã®ãƒ˜ãƒ«ãƒ—ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "別å: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "別å: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å‡¦ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "パッケージã®å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "ダウングレード処ç†ã®è¨­å®šã‚’ã—ã¦ã„ã¾ã™" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "パッケージã®ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "ホストã®åˆ©ç”¨ã§ãるリãƒã‚¸ãƒˆãƒªãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum ãƒãƒ¼ã‚¸ãƒ§ãƒ³ グループ" #: ../yumcommands.py:1265 msgid " Group :" msgstr " グループ :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "パッケージ :" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "インストール済㿠:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "グループ インストール済ã¿:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "利用å¯èƒ½ :" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "利用å¯èƒ½ãªã‚°ãƒ«ãƒ¼ãƒ— :" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "トランザクション履歴を表示ã€ä½¿ç”¨ã™ã‚‹" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "使用ã—㟠history ã®ã‚µãƒ–ã‚³ãƒžãƒ³ãƒ‰ãŒæ­£ã—ãã‚りã¾ã›ã‚“: %s" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "履歴 DB ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "rpmdb ã®å•題を確èªã™ã‚‹" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "別ã®ã‚¢ãƒ—リケーションãŒç¾åœ¨ yum ã®ãƒ­ãƒƒã‚¯ã‚’æŒã£ã¦ã„ã¾ã™ã€‚終了ã™ã‚‹ã¾ã§å¾…ã£ã¦ã„ã¾ã™..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "ä¾å­˜æ€§ã®è§£æ±ºã‚’ã—ã¦ã„ã¾ã™" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "\n" "ユーザーã«ã‚ˆã‚‹ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã§çµ‚了ã—ã¦ã„ã¾ã™ã€‚" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "æ§‹æˆã‚¯ãƒ©ã‚¹ãŒçµ‚ã‚ã‚‹å‰ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚»ãƒƒãƒˆã‚’設定ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "æ§‹æˆãƒ•ァイル㮠tsflag ãŒä¸æ­£ã§ã™: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "ä¾å­˜æ€§ã® pkgSack を検索ã—ã¦ã„ã¾ã™: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "メンãƒãƒ¼: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s をインストールã«å¤‰æ›´ã—ã¾ã—ãŸ" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "モード %s ã«ãƒ‘ッケージ %s を追加ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "パッケージ %s ã®å‰Šé™¤ã‚’ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s ã®è¦æ±‚: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s 㯠%s ã‚’è¦æ±‚ã—ã¾ã™" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "å¿…è¦ãªè¦æ±‚ã¯æ—¢ã«èª¿ã¹ã¾ã—ãŸãŒä¸æ­£ã‚’ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "å¿…è¦ãªè¦æ±‚ã¯ãƒ‘ッケージåã§ã¯ã‚りã¾ã›ã‚“。調ã¹ã¦ã„ã¾ã™: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "ä¾å­˜ã™ã‚‹æ›´æ–°ãƒ‘スを見ã¤ã‘られã¾ã›ã‚“: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s ã‚’æä¾›ã™ã‚‹ãƒ‘ッケージã¯ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã™ã€‚削除ã—ã¦ã„ã¾ã™ã€‚" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s ã¯ã™ã§ã« ts ã«ã‚りã¾ã™ã€‚ã“れを飛ã°ã—ã¾ã™" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: %s ã‚’æ›´æ–°ã¨ã—㦠%s ã§è¨­å®šã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: %s をインストールã¨ã—㦠%s ã§è¨­å®šã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "æˆåŠŸ - 空ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "ループをå†é–‹ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "ä¾å­˜æ€§ã®å‡¦ç†ã‚’終了ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "æˆåŠŸ - ä¾å­˜æ€§ã‚’解決ã—ã¾ã—ãŸ" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "%s ã®ä¾å­˜æ€§ã‚’確èªã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "%s ã®è¦æ±‚ã¨ã—㦠%s を検索ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "%s ã® compare_providers() を実行ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s 㯠%s ã§ä¸è¦ã§ã™" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "%s 㨠%s ã®å…±é€šã‚½ãƒ¼ã‚¹ RPM(SRPM)" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "ベースパッケージ %s 㯠%s ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ã¾ã™" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "%s ã‹ã‚‰ %s 㨠%s ã®å…±é€šæŽ¥é ­è¾ž" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "最低é™ã®è¦æ±‚: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " å‹è€…: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " 敗者(%d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "最é©ã®é †åº: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ %r: 設定ã®è§£æžä¸­ã«ã‚¨ãƒ©ãƒ¼: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ %r ã¯æ§‹æˆä¸­ã«åå‰ãŒã‚りã¾ã›ã‚“ã®ã§ ID を使ã„ã¾ã™" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "ãƒ—ãƒ©ã‚°ã‚¤ãƒ³ã¯æ—¢ã«åˆæœŸåŒ–ã•れã¦ã„ã¾ã™" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "dbRpmDBSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "ローカル㮠RPMDB を読ã¿è¾¼ã‚“ã§ã„ã¾ã™" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "ã—ãŸãŒã£ã¦ã€ã“ã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã¯ãƒªã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“。\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ›´æ–°ã‚’構築ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "グループメタデータをå–å¾—ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã‹ã‚‰ã‚°ãƒ«ãƒ¼ãƒ—ファイルを追加ã—ã¦ã„ã¾ã™: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®ã‚°ãƒ«ãƒ¼ãƒ—ファイルã«è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "ã„ãšã‚Œã‹ã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã«åˆ©ç”¨ã§ãるグループã¯ã‚りã¾ã›ã‚“" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "メタデータ pkgtags ã‚’å–å¾—ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã‹ã‚‰ã‚¿ã‚°ã‚’追加ã—ã¦ã„ã¾ã™: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã‹ã‚‰ãƒ‘ッケージタグã®è¿½åŠ ã«å¤±æ•—ã—ã¾ã—ãŸ: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "追加ã®ãƒ•ァイル一覧情報ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "プログラム %s%s%s 㯠yum-utils パッケージ内ã§è¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "終了ã—ã¦ã„ãªã„残作業ãŒã‚りã¾ã™ã€‚ãれらを終了ã™ã‚‹ãŸã‚ã«ã€ã¾ãš yum-complete-transaction ã®å®Ÿè¡Œã‚’検討ã™ã¹ãã‹ã‚‚ã—れã¾ã›ã‚“。" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "パッケージã¯ä¾å­˜é–¢ä¿‚ã«å•題ãŒã‚ã‚‹ãŸã‚ã€é£›ã°ã—ã¾ã™:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "警告: RPMDB 㯠yum 以外ã§å¤‰æ›´ã•れã¾ã—ãŸã€‚" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "è¦æ±‚ã•れãŸã‚‚ã®ä¸è¶³" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "インストール済ã¿ã¨ã®è¡çª" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "警告: スクリプトã€ã‚‚ã—ãã¯ãã®ä»–ã§å‡¦ç†ã®é–“ã«è‡´å‘½çš„ã§ã¯ãªã„エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "トランザクションを解ã—ã§ãã¾ã›ã‚“:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "トランザクションを実行ã§ãã¾ã›ã‚“。" #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s ã®å‰Šé™¤ã‚’想定ã—ãŸãŒãã†ã§ã¯ãªã‹ã£ãŸ!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "%s ã®ãƒ­ãƒƒã‚¯ã‚’é–‹ã‘ã¾ã›ã‚“: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "PID %s ãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã‹ã©ã†ã‹ã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸ" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "%s ã§ãƒ­ãƒƒã‚¯ã‚’作æˆã§ãã¾ã›ã‚“: %s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "パッケージã¯äºˆå®šã—ãŸãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¨ä¸€è‡´ã—ã¾ã›ã‚“。 ææ¡ˆ: 「yum --enablerepo=%s clean metadataã€ã®å®Ÿè¡Œ" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®å®Ÿè¡ŒãŒã§ãã¾ã›ã‚“" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "パッケージã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãŒä¸€è‡´ã—ã¾ã›ã‚“" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "%s ã®ãŸã‚ã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’有効ã«ã—ã¦ã„ã¾ã™ãŒã€ãƒ‘ッケージã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ æ¼”ç®—ã«å¤±æ•—ã—ã¾ã™ã€‚" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "%s ã®ãƒ­ãƒ¼ã‚«ãƒ«ã‚³ãƒ”ーを使ã†" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "ダウンロードディレクトリー %s ã®ç©ºããŒä¸å分ã§ã™\n" " * 空ãå®¹é‡ %s\n" " * å¿…è¦å®¹é‡ %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "ヘッダーãŒå®Œäº†ã—ã¦ã„ã¾ã›ã‚“。" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "ヘッダーã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ã¿ã®ãƒ¢ãƒ¼ãƒ‰ãŒæœ‰åйã§ã€ãƒ­ãƒ¼ã‚«ãƒ«ã«ã‚りã¾ã›ã‚“。%s ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒã§ãã¾ã›ã‚“" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "%s ã®å…¬é–‹éµãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "パッケージ %s ã‚’é–‹ã„ã¦ã„る最中ã«å•題ã§ã™" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "%s ã®å…¬é–‹éµãŒä¿¡é ¼ã•れã¾ã›ã‚“" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "パッケージ %s ã¯ç½²åã•れã¦ã„ã¾ã›ã‚“" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "%s を削除ã§ãã¾ã›ã‚“" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s を削除ã—ã¾ã—ãŸ" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "%s ã®ãƒ•ァイル %s を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s ã®ãƒ•ァイル %s を削除ã—ã¾ã—ãŸ" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %sファイルを削除ã—ã¾ã—ãŸ" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "æ›´æ–°ã‹ã‚‰ %s.%s %s:%s-%s ã«ä¸€è‡´ã—ã¾ã›ã‚“" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() 㯠Yum ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªããªã‚Šã¾ã™ã€‚ 代ã‚り㫠" "searchGenerator() を使ã„ã¾ã™ã€‚\n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "%d 個ã®ãƒ‘ッケージを検索ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "パッケージ %s を検索ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "ファイルã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‹ã‚‰æ¤œç´¢ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "æä¾›ã•れãŸã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’検索ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "æ§‹æˆã•れãŸãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã«åˆ©ç”¨ã§ãるグループã¯ã‚りã¾ã›ã‚“" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "グループå %s ãŒå­˜åœ¨ã—ã¾ã›ã‚“" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "パッケージ%s ã¯ã‚°ãƒ«ãƒ¼ãƒ— %s ã§è¨­å®šã•れã¦ã„ã¾ã›ã‚“" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "パッケージ %s をグループ %s ã‹ã‚‰è¿½åŠ ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "インストールã«åˆ©ç”¨ã§ãるパッケージå %s ãŒã‚りã¾ã›ã‚“" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "%s ã®ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "パッケージ オブジェクトã¯ãƒ‘ッケージ オブジェクト インスタンスã§ã¯ã‚りã¾ã›ã‚“" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "インストールã¸ã®æŒ‡å®šãŒã‚りã¾ã›ã‚“" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "%s ã®ä»®æƒ³æä¾›ã‹ãƒ•ァイルæä¾›ã‚’確èªã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "引数ã«ä¸€è‡´ã—ã¾ã›ã‚“: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "パッケージ %s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã‹åˆ©ç”¨ã§ãã¾ã›ã‚“" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "インストールã«åˆ©ç”¨ã§ãるパッケージã¯ã‚りã¾ã›ã‚“" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "パッケージ: %s - ã™ã§ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³è¨­å®šã‚’ã—ã¦ã„ã¾ã™ã€‚" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "パッケージ %s ã¯æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã® %s ã«ã‚ˆã£ã¦ä¸è¦æ‰±ã„ã«ãªã‚Šã¾ã—ãŸã€‚" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "パッケージ %s 㯠%s ã«ã‚ˆã£ã¦ä¸è¦ã«ãªã‚Šã¾ã—ãŸã€‚ã—ã‹ã—ã€ä¸è¦ã®ãƒ‘ッケージã¯è¦æ±‚ã‚’æä¾›ã—ã¦ã„ã¾ã›ã‚“。" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "パッケージ %s 㯠%s ã«ã‚ˆã£ã¦ä¸è¦ã«ãªã‚Šã¾ã—ãŸã€‚代ã‚り㫠%s ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’試ã¿ã¦ã„ã¾ã™ã€‚" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "パッケージ %s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã‹æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "一致ã—ãŸãƒ‘ッケージ %s ã¯ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã™ã€‚更新を確èªã—ã¦ã„ã¾ã™ã€‚" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "ã™ã¹ã¦æ›´æ–°ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "æ—¢ã«ä¸è¦ãªãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®æ›´æ–°ã¯ã‚りã¾ã›ã‚“: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã¯æ—¢ã«ä¸è¦ã§ã™: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "æ—¢ã«ä¸è¦ãªãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®æ›´æ–°ã¯ã‚りã¾ã›ã‚“: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "æ—¢ã«ã‚¢ãƒƒãƒ—デートã•れã¦ã„ã‚‹ã®ã§ãƒ‘ッケージをアップデートã—ã¾ã›ã‚“: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "削除ã«ä¸€è‡´ã™ã‚‹ãƒ‘ッケージã¯ã‚りã¾ã›ã‚“" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "実行中ã®ã‚«ãƒ¼ãƒãƒ«ã‚’飛ã°ã—ã¾ã™: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "トランザクションã®ä¸­ã‹ã‚‰ %s を削除ã—ã¦ã„ã¾ã™ã€‚" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "ファイルãŒé–‹ã‘ã¾ã›ã‚“: %s を飛ã°ã—ã¾ã™ã€‚" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "%s を調ã¹ã¦ã„ã¾ã™: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "トランザクションã«ãƒ‘ッケージ %s を追加ã§ãã¾ã›ã‚“。アーキテクãƒãƒ£ã«äº’æ›æ€§ãŒã‚りã¾ã›ã‚“: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "パッケージ %s をインストールã§ãã¾ã›ã‚“。ãれã¯ãƒ‘ッケージ %s ã«ã‚ˆã‚Šä¸è¦ã«ãªã£ã¦ã„ã¾ã™ã€‚" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "パッケージ %s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ã®ã§æ›´æ–°ã§ãã¾ã›ã‚“。代ã‚りã«ã€Œyum installã€ã‚’実行ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "%s ã®é™¤å¤–中" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s をインストール済ã¿ã¨ã—ã¦è¨­å®šã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "次ã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã¸ã®æ›´æ–°ã¨ã—㦠%s を設定ã—ã¾ã™: %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: インストールã•れãŸãƒ‘ッケージを更新ã—ã¾ã›ã‚“。" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "ファイル %s ãŒé–‹ã‘ã¾ã›ã‚“。飛ã°ã—ã¾ã™ã€‚" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸­ã«å•題: 削除ã™ã‚‹ãƒ‘ッケージãŒã‚りã¾ã›ã‚“" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ã®å•題: インストールã®ãŸã‚ã® %s ã«ä¸€è‡´ã™ã‚‹ãƒ‘ッケーãŒã‚りã¾ã›ã‚“" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "ダウングレードã«åˆ©ç”¨ã§ãるパッケージã¯ã‚りã¾ã›ã‚“" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "パッケージ %s ã¯è¤‡æ•°ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒè¨±å¯ã•れã¦ã„ã¾ã™ã€‚飛ã°ã—ã¾ã™" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "利用ã§ãるパッケージã«ä¸€è‡´ã—ã¾ã›ã‚“: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "アップグレードã«ã®ã¿åˆ©ç”¨ã§ãるパッケージ: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "ダウングレードã«å¤±æ•—: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "%s ã‹ã‚‰éµã‚’å–得中ã§ã™ã€‚" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG éµã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸ: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "キー %s ã®GPGキーã®ç½²åã¯ã€æ¬¡ã®ãƒ¬ãƒã‚¸ãƒˆãƒªãƒ¼ã®CAéµã¨ä¸€è‡´ã—ã¦ã„ã¾ã›ã‚“。: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "%s ã‹ã‚‰ã® GPG éµãŒæ­£ã—ãã‚りã¾ã›ã‚“: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "GPG éµã®è§£æžã«å¤±æ•—ã—ã¾ã—ãŸ: éµã¯å€¤ %s ã‚’æŒã£ã¦ã„ã¾ã›ã‚“" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG éµ %s (0x%s) ã¯ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—㟠(コード: %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«æˆåŠŸã—ã¾ã—ãŸ" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’助ã‘られã¾ã›ã‚“。éµãŒå£Šã‚Œã¦ã„ã¾ã›ã‚“ã‹?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG éµ %s (0x%s) ã¯ã™ã§ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸ" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "é©å½“ãªãƒŸãƒ©ãƒ¼ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "パッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã«ã‚¨ãƒ©ãƒ¼ã«é­é‡ã—ã¾ã—ãŸã€‚" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "%s ã«ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ã¦ãã ã•ã„" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "テストトランザクションã§ã‚¨ãƒ©ãƒ¼: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "cackedir ãŒè¨­å®šã§ãã¾ã›ã‚“: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "トランザクションファイル %s ãŒä¿å­˜ã§ãã¾ã›ã‚“。: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "ä¿å­˜ã•れã¦ã„るトランザクションファイル %s ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。: %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "ä¿å­˜ã•れã¦ã„るトランザクションファイル㮠rpmdb ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒãƒžãƒƒãƒã—ã¦ã„ã¾ã›ã‚“。" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "読ã¿è¾¼ã‚“ã ãƒ—ラグイン:" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "プラグインãŒä¸€è‡´ã—ã¾ã›ã‚“: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "無効ã«ãªã£ã¦ã„ã‚‹ãŸã‚ã€ãƒ—ラグイン「%sã€ã¯èª­ã¿è¾¼ã¿ã¾ã›ã‚“" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "プラグイン「%sã€ã¯ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "プラグイン「%sã€ã¯è¦æ±‚ã•れ㟠API ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’明記ã—ã¦ã„ã¾ã›ã‚“" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "プラグイン「%sã€ã¯ API %s ã‚’è¦æ±‚ã—ã¦ã„ã¾ã™ã€‚サãƒãƒ¼ãƒˆã—㟠API 㯠%s ã§ã™ã€‚" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "プラグイン「%sã€ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "プラグイン検索パスã®ä¸­ã« \"%s\" ã«è©²å½“ã™ã‚‹åå‰ã®ãƒ—ラグインãŒè¤‡æ•°å­˜åœ¨ã—ã¾ã™ã€‚" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "æ§‹æˆãƒ•ァイル %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "プラグイン %s ã®æ§‹æˆãƒ•ã‚¡ã‚¤ãƒ«ã®æ¤œç´¢ã«å¤±æ•—ã—ã¾ã—ãŸ" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "コマンドã®ç™»éŒ²ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "ã¯æ¬¡ã®è¦æ±‚ãŒä¸è¶³ã¦ã„ã¾ã™: " #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "ã¯æ¬¡ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã¨è¡çªã—ã¦ã„ã¾ã™: " #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s 㯠%s ã®è¤‡è£½ã§ã™" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s 㯠%s ã«ã‚ˆã£ã¦ä¸è¦ã«ãªã‚Šã¾ã—ãŸã€‚" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s 㯠%s ã‚’æä¾›ã—ã¦ã„ã¾ã™ãŒã€è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: ../yum/rpmtrans.py:80 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 エラー" yum-3.4.3/po/bn_IN.po0000664000076400007640000016036411602434452013303 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Bengali (India) (http://www.transifex.net/projects/p/yum/team/bn_IN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bn_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/eu.po0000664000076400007640000023624011602434452012724 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # assar , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Basque (http://www.transifex.net/projects/p/yum/team/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Eguneratzen" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Ezabatzen" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instalatzen" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Zaharkitua" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Eguneratua" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Ezabatua" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Instalatua" #: ../callback.py:130 msgid "No header - huh?" msgstr "Goibururik ez - eh?" #: ../callback.py:168 msgid "Repackage" msgstr "Birpaketatu" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Errorea: baliogabeko irteera-egoera: %s %s-(e)rako" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Ezabatua: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Kentzen" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Garbitzen" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "\"%s\" komandoa jadanik definitua" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Biltegiak konfiguratzen" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Biltegien metadatuak irakurtzen fitxategi lokaletatik" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Konfigurazio-errorea: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Aukeren errorea: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Instalatua: %s-%s %s-(e)n" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Eraikia : %s %s-(e)n" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Egikaritua: %s %s-(e)n" #: ../cli.py:336 msgid "You need to give some command" msgstr "Komandoren bat eman behar duzu" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Ez dago halako komandorik: %s. Erabili %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Disko-eskakizunak:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Gutxienez %dMD gehiagoko espazioa behar da %s fitxategi-sisteman.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Erroreen laburpena\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Transakzioaren exekuzioa saiatzen baina ez dago egiteko ezer. Irteten." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Irteten erabiltzaile-komandoaren ondoren" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Paketeak deskargatzen:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Errorea paketeak deskargatzean:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Transakzio-egiaztapena exekutatzen" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ERROREA, rpm eguneratu behar duzu hau maneiatzeko:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "ERROREA transakzio-egiaztapena eta depsolve artean:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM eguneratu egin behar da" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Jakinarazi errore hau %s-(e)n" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Transakzio-testa exekutatzen" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Transakzioaren egiaztapen-errorea:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Transakzio-testak arrakasta izan du" #: ../cli.py:600 msgid "Running Transaction" msgstr "Transakzioa exekutatzen" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Baztertzen gakoak automatikoki inportatzea arretarik gabe exekutatzen ari denean.\n" "Erabili \"-y\" gainidazteko." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Agian hau esan nahi zenuen: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "%s%s%s paketea(k) eskuragarri, baina ez daude instalatuta." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "%s%s%s paketea ez dago eskuragarri." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Instalatzeko paketea(k)" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Ez dago egiteko ezer" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pakete markatu dira eguneratuak izateko" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Ez da paketerik markatu eguneratua izateko" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d pakete markatu dira banaketa sinkronizatzeko" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Ez da paketerik markatu banaketa sinkronizatzeko" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pakete markatu dira kenduak izateko" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Ez da paketerik markatu kendua izateko" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Bertsio zaharragoa instalatzeko paketea(k)" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (%s-(e)tik)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "%s%s%s%s pakete instalatua ez dago eskuragarri." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Berrinstalatzeko paketea(k)" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Ez da paketerik adierazi" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "N/S bat etortze: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Izen eta laburpenen bat etortzeak %soilik%s, erabili \"bilatu dena\" " "denean bilaketa egiteko." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Izen osoen eta laburpenen bat etortzeak %soilik%s, erabili \"bilatu dena\"" " denean bilaketa egiteko." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Bat dator: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Izen eta laburpenen bat etortzeak %sgehien bat%s, erabili \"bilatu dena\" " "denean bilaketa egiteko." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Abisua: Ez da bat datorrenik aurkitu honentzako: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Ez da parekatzerik aurkitu" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Ez da paketerik aurkitu %s-(e)rako" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Biltegiak garbitzen: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Dena garbitzen" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Goiburuak garbitzen" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Paketeak garbitzen" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "XML metadatuak garbitzen" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Datu-basearen katxea garbitzen" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Metadatuen expire-cache garbitzen" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Katxetutako rpmdb datuak garbitzen" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "pluginak garbitzen" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Abisua: Ez dago taldeen bat etortzerik: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Talde instalatuak:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Instalatutako hizkuntza-taldeak:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Talde eskuragarriak:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "Eskuragarri dauden hizkuntza-taldeak:" #: ../cli.py:1285 msgid "Done" msgstr "Egina" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Abisua: %s taldea ez da existitzen." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "Eskatutako taldean ez dago paketerik instalatzeko edo eguneratzeko" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pakete instalatzeko" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Ez da existitzen %s izena duen talderik" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Ez dago paketerik taldeetatik kentzeko" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d pakete kentzeko" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "%s paketea instalatuta dago, saltatzen" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Alderagarria ez den pkg %s.%s baztertzen" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Ez dago beste %s-(e)rik instalatuta, zerrendara gehitzen balizko instalazio " "baterako" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Plugin aukerak" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Komando-lerroko errorea: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s aukerak argumentua behar du" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color aukerak hauetako bat hartzen du: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot-ek bide-izen absolutua izan behar du: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "erakutsi laguntza-mezu hau eta irten" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "erroreekiko tolerantea izan" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "exekutatu osorik sistemaren katxetik, ez eguneratu katxea" #: ../cli.py:1652 msgid "config file location" msgstr "konfigurazio-fitxategiaren kokapena" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "komandoen itxarote-denbora maximoa" #: ../cli.py:1657 msgid "debugging output level" msgstr "arazketa-irteeraren maila" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "erakutsi bikoiztuak, biltegietan, zerrenda/bilaketa komandoetan" #: ../cli.py:1663 msgid "error output level" msgstr "errore-irteeraren maila" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "arazketa-irteeraren maila rpm-rako" #: ../cli.py:1669 msgid "quiet operation" msgstr "eragiketa lasaia" #: ../cli.py:1671 msgid "verbose operation" msgstr "eragiketa berritsua" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "erantzun bai galdera guztiei" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "erakutsi Yum bertsioa eta irten" #: ../cli.py:1676 msgid "set install root" msgstr "ezarri instalazio-erroa" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "gaitu biltegi bat edo gehiago (komodinak onartzen dira)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "desgaitu biltegi bat edo gehiago (komodinak onartzen dira)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "baztertu paketea(k) izenaren edo glob-aren arabera" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "desgaitu bazterketa main-etik, biltegi batetik edo denetik" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "gaitu zaharkituen prozesatzea eguneraketetan" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "desagitu Yum-en pluginak" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "desgaitu gpg sinaduren egiaztatzea" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "desgaitu pluginak izenaren arabera" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "gaitu pluginak izenaren arabera" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "saltatu mendekotasun-arazoak dituzten paketeak" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontrolatu kolorea erabiliko den" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "ezarri $releasever balioa yum-en konfigurazioan eta biltegi-fitxategietan" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "ezarri konfigurazio- eta biltegi-aukera arbitrarioak" #: ../output.py:307 msgid "Jan" msgstr "urt." #: ../output.py:307 msgid "Feb" msgstr "ots." #: ../output.py:307 msgid "Mar" msgstr "mar." #: ../output.py:307 msgid "Apr" msgstr "api." #: ../output.py:307 msgid "May" msgstr "mai." #: ../output.py:307 msgid "Jun" msgstr "eka." #: ../output.py:308 msgid "Jul" msgstr "uzt." #: ../output.py:308 msgid "Aug" msgstr "abu." #: ../output.py:308 msgid "Sep" msgstr "ira." #: ../output.py:308 msgid "Oct" msgstr "urr." #: ../output.py:308 msgid "Nov" msgstr "aza." #: ../output.py:308 msgid "Dec" msgstr "abe." #: ../output.py:318 msgid "Trying other mirror." msgstr "Beste ispilu bat probatzen." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Izena : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arkitektura : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Garaia : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Bertsioa : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Argitalpena : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Tamaina : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Biltegia : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Biltegitik : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Bidaltzailea : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Bidaltze-data : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Eraikitze-data : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Instalazio-ordua: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Instalatzailea: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Aldatzailea: %s" #: ../output.py:612 msgid "Summary : " msgstr "Laburpena : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URLa : %s" #: ../output.py:615 msgid "License : " msgstr "Lizentzia : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Deskribapena: " #: ../output.py:684 msgid "y" msgstr "b" #: ../output.py:684 msgid "yes" msgstr "bai" #: ../output.py:685 msgid "n" msgstr "e" #: ../output.py:685 msgid "no" msgstr "ez" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Ados? [b/E]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Taldea: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Talde-IDa: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Deskribapena: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Hizkuntza: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Derrigorrezko paketeak:" #: ../output.py:791 msgid " Default Packages:" msgstr " Pakete lehenetsiak:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Hautazko paketeak:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Baldintzapeko paketeak:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paketea: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Ez dago mendekotasunik pakete honetarako" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " mendekotasuna: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Bete gabeko mendekotasuna" #: ../output.py:901 msgid "Matched from:" msgstr "Bat-egitea hemendik:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Lizentzia : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Fitxategi-izena : %s" #: ../output.py:923 msgid "Other : " msgstr "Besterik : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Errorea gertatu da deskarga-tamaina osoa kalkulatzean" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Tamaina osoa: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Deskargaren tamaina osoa: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Tamaina instalatu ondoren: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Errorea gertatu da instalatu ondoren duen tamaina kalkulatzean" #: ../output.py:1039 msgid "Reinstalling" msgstr "Berrinstalatzen" #: ../output.py:1040 msgid "Downgrading" msgstr "Bertsio zaharra instalatzen" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Mendekotasunengatik instalatzen" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Mendekotasunengatik eguneratzen" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Mendekotasunengatik kentzen" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Saltatu egin da (mendekotasun-arazoak)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Ez instalatua" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paketea" #: ../output.py:1075 msgid "Arch" msgstr "Arkitektura" #: ../output.py:1076 msgid "Version" msgstr "Bertsioa" #: ../output.py:1076 msgid "Repository" msgstr "Biltegia" #: ../output.py:1077 msgid "Size" msgstr "Tamaina" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " %s%s%s.%s %s ordezten\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Transakzio-laburpena\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Instalatu %5.5s pakete\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Eguneratu %5.5s pakete\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Kendu %5.5s pakete\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Berrinstalatu %5.5s pakete\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Instalatu %5.5s paketeren bertsio zaharragoa\n" #: ../output.py:1165 msgid "Removed" msgstr "Kendua" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Mendekotasuna kendu da" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Mendekotasuna instalatu da" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Mendekotasuna eguneratu da" #: ../output.py:1172 msgid "Replaced" msgstr "Ordezkatua" #: ../output.py:1173 msgid "Failed" msgstr "Huts egin du" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "bi" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Uneko deskarga bertan behera utzi da, %sinterrupt (ktrl-c) berriro%s %s%s%s segundotan\n" #: ../output.py:1282 msgid "user interrupt" msgstr "erabiltzaileak utzia" #: ../output.py:1300 msgid "Total" msgstr "Guztira" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Sistema" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Batutako %d transakzioa %d-ra saltatzen, teilakatu egiten baitira" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Ez dago transakziorik" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Transakzio-ID, edo pakete, okerra(k) eman dira" #: ../output.py:1484 msgid "Command line" msgstr "Komando-lerroa" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Saioa hasteko erabiltzailea" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "IDa" #: ../output.py:1489 msgid "Date and time" msgstr "Data eta ordua" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Ekintza(k)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Aldatua" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Ez da transakzio-IDrik eman" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Transakzio-ID okerra eman da" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Ez da aurkitu emandako transakzio-IDarekin" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Transakzio-ID bat baino gehiago aurkitu da!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Ez da transakzio-IDrik, edo paketerik, eman" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Bertsio zaharra instalatua" #: ../output.py:1688 msgid "Older" msgstr "Zaharragoa" #: ../output.py:1688 msgid "Newer" msgstr "Berriagoa" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Transakzio-IDa :" #: ../output.py:1728 msgid "Begin time :" msgstr "Hasiera-ordua :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Hasierako rpmdb-a :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u segundo)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minutu)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u ordu)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u egun)" #: ../output.py:1756 msgid "End time :" msgstr "Amaiera-ordua :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Amaierako rpmdb-a :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Erabiltzailea :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Itzulera-kodea :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Abortatua" #: ../output.py:1773 msgid "Failures:" msgstr "Hutsegiteak:" #: ../output.py:1777 msgid "Failure:" msgstr "Hutsegitea:" #: ../output.py:1779 msgid "Success" msgstr "Arrakasta" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Komando-lerroa :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Informazio gehigarri ez-lehenetsia gorde da: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transakzioa honekin burutu da:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Aldatutako paketeak:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Saltatutako paketeak:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb-arazoak:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scriptlet-irteera:" #: ../output.py:1831 msgid "Errors:" msgstr "Erroreak:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Instalatu" #: ../output.py:1839 msgid "Dep-Install" msgstr "Mendekotasunak instalatu" #: ../output.py:1841 msgid "Obsoleting" msgstr "Zaharkitutzat hartzen" #: ../output.py:1842 msgid "Erase" msgstr "Ezabatu" #: ../output.py:1843 msgid "Reinstall" msgstr "Berrinstalatu" #: ../output.py:1844 msgid "Downgrade" msgstr "Bertsio zaharra instalatu" #: ../output.py:1846 msgid "Update" msgstr "Eguneratu" #: ../output.py:1909 msgid "Time" msgstr "Noiz" #: ../output.py:1935 msgid "Last day" msgstr "Azken eguna" #: ../output.py:1936 msgid "Last week" msgstr "Azken astea" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Azken 2 asteak" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Azken 3 hilabeteak" #: ../output.py:1939 msgid "Last 6 months" msgstr "Azken 6 hilabeteak" #: ../output.py:1940 msgid "Last year" msgstr "Azken urtea" #: ../output.py:1941 msgid "Over a year ago" msgstr "Duela urtebete inguru" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Ez da %s transakziorik aurkitu" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Transakzioaren IDa:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Historia-informazio gehigarria eskuragarri:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Ez da datu gehigarririk aurkitu izen horrekin" #: ../output.py:2106 msgid "installed" msgstr "instalatua" #: ../output.py:2107 msgid "an update" msgstr "eguneraketa bat" #: ../output.py:2108 msgid "erased" msgstr "ezabatua" #: ../output.py:2109 msgid "reinstalled" msgstr "berrinstalatua" #: ../output.py:2110 msgid "a downgrade" msgstr "bertsio-zahartze bat" #: ../output.py:2111 msgid "obsoleting" msgstr "zaharkitzen" #: ../output.py:2112 msgid "updated" msgstr "eguneratua" #: ../output.py:2113 msgid "obsoleted" msgstr "zaharkitua" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> %s.%s %s:%s-%s paketea %s egingo da" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Transakzio-egiaztapena exekutatzen" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Mendekotasun-ebazpena berrabiarazten aldaketa berriekin." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Amaitu da mendekotasunen ebazpena" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Mendekotasuna prozesatzen: %s %s paketerako" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Paketea mantentzen: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Ebatzi gabeko mendekotasuna: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paketea: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Behar du: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Ez da aurkitu" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Eguneratu duena" #: ../output.py:2197 msgid "Downgraded By" msgstr "Bertsio zaharra hobetsi duena" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Zaharkitutzat hartu duena" #: ../output.py:2216 msgid "Available" msgstr "Eskuragarri" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Gatazka prozesatzen: %s-(e)k gatazka du %s-(e)kin" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Transakzio-multzoa sortzen hautatutako paketeekin. Itxaron mesedez." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "---> Goiburua deskargatzen %s-(e)rako, transakzio-multzoan sartua izan " "dadin." #: ../utils.py:99 msgid "Running" msgstr "Exekutatzen" #: ../utils.py:100 msgid "Sleeping" msgstr "Lotan" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Ezin da eten" #: ../utils.py:102 msgid "Zombie" msgstr "Zonbia" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Aztarnatua/Gelditua" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Ezezaguna" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Beste aplikazioa PackageKit da" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Beste aplikazioa %s da" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memoria: %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Hasiera: %s - duela %s" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Egoera : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Irteten erabiltzaileak bertan behera utzi duelako" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Irteten kanalizazio hautsiagatik" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Beste aplikazio batek yum blokeatuta dauka; irteten exit_on_lock-en " "konfiguratuta dagoenari kasu eginez" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit errorea: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum errorea: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Errorea: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " --skip-broken erabiltzen saia zaitezke arazoa saihesteko" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " rpm -Va --nofiles --nodigest exekutatzen saia zaitezke" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Errore ezezaguna(k): Irteera-kodea: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Mendekotasunak ebatzi dira" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Osatua!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Mini erabilera:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Erroa izan behar duzu komando hau exekutatzeko." #: ../yumcommands.py:59 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" "Paketeak GPG gakoen bidez egiazta daitezen gaitu duzu. Hori ongi dago. \n" "Hala ere, ez daukazu GPG gako publikorik instalatuta. Instalatu nahi dituzun paketeen\n" "gakoak deskargatu behar dituzu eta ondoren instalazioa burutu.\n" "Hori egiteko, hurrengo komandoa exekuta dezakezu:\n" " rpm --import public.gpg.key\n" "\n" "\n" "Bestela, biltegi baterako erabili nahiko zenukeen gakoaren URLa zehatz dezakezu biltegi-atalaren 'gpgkey' aukeran eta yum-ek zugatik instalatuko du.\n" "\n" "Informazio gehiagorako, jarri harremanetan zure banaketa- edo pakete-hornitzailearekin.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Errorea: Pkgs-en zerrenda bat pasatu behar zaio %s-(e)ri" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Errorea: Bat datorren elementu bat behar da" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Errorea: Talde bat edo taldeen zerrenda bat behar da" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Errorea: Garbiketak aukera bat behar du: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Errorea: baliogabeko garbiketa-argumentua: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ez dago argumenturik shell-arentzako " #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Shell-ari pasatutako fitxategi-izena: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Shell-ari argumentu gisa emandako %s fitxategia ez da existitzen." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" "Errorea: fitxategi bat baino gehiago eman zaio shell-ari argumentu gisa." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Ez dago biltegirik gaituta.\n" " Exekutatu \"yum repolist all\" dauzkazun biltegiak ikusteko.\n" " Biltegiak gaitzeko, yum-config-manager --enable erabil dezakezu" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKETEA..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instalatu pakete bat edo gehiago zure sisteman" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Instalazio-prozesua konfiguratzen" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKETEA...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Eguneratu zure sistemako pakete bat edo gehiago" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Eguneraketa-prozesua konfiguratzen" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "Sinkronizatu instalatutako paketeak eskuragarri dauden azken bertsioetara" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Banaketaren sinkronizazio-prozesua konfiguratzen" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Erakutsi pakete bati edo pakete-multzo bati buruzko xehetasunak" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Instalatutako paketeak" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Pakete eskuragarriak" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Pakete gehigarriak" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Eguneratutako paketeak" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Paketeak zaharkitutzat hartzen" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Berriki gehitutako paketeak" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Ez dago bat datorren paketerik zerrendatzeko" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Zerrendatu pakete bat edo pakete-multzo bat" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Kendu pakete bat edo gehiago zure sistematik" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Kentze-prozesua konfiguratzen" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Talde-prozesua konfiguratzen" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ez dago talderik komandoa exekutatu ahal izateko" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Zerrendatu pakete-talde eskuragarriak" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instalatu talde bateko paketeak zure sisteman" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Kendu talde bateko paketeak zure sistematik" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Erakutsi pakete-talde bati buruzko xehetasunak" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Sortu metadatuen katxea" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Katxe-fitxategiak egiten metadatu-fitxategi guztietarako" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Honek denbora behar du, ordenagailu honen abiaduraren araberakoa" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Metadatuen katxea sortu da" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "kendu katxeatutako datuak" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Aurkitu zein paketek hornitzen duen emandako balioaz" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Egiaztatu pakete-eguneraketarik dagoen eskuragarri" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Bilatu pakete-xehetasunak emandako katetik abiatuz" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Paketeak bilatzen: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Eguneratu paketeak zaharkituak kontuan hartuz" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Bertsio-berritzearen prozesua konfiguratzen" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instalatu RPM lokala" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Pakete lokalen prozesua konfiguratzen" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Zehaztu zein paketek hornitzen duen emandako mendekotasunaz" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Mendekotasunetarako paketeak bilatzen:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Exekutatu yum shell interaktiboa" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Yum shell konfiguratzen" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Zerrendatu pakete baten mendekotasunak" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Mendekotasunak aurkitzen: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Erakutsi konfiguratutako software-biltegiak" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "gaitua" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "desgaitua" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Biltegi-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Biltegi-izena : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Biltegi-egoera : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Biltegi-berrikuspena: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Biltegi-etiketak : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Banaketa-biltegi-etiketak: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Biltegi-eguneratua: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Biltegi-pkgs: " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Biltegi-tamaina: " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Biltegi-baseurl: " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Biltegi-metaesteka: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Eguneratua : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Biltegi-ispiluak: " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Inoiz ez (azkena: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Berehala (azkena: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s segundo (azkena: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Biltegi-iraungipena: " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Biltegi-baztertu: " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Biltegi-barneratu: " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Biltegi-baztertua: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "biltegi id-a" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "egoera" #: ../yumcommands.py:1062 msgid "repo name" msgstr "biltegi-izena" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Erakutsi erabilera-mezu laguntzailea" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Ez dago laguntzarik %s-(e)rako" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "aliasak: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "aliasa: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Berrinstalazio-prozesua konfiguratzen" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "Berrinstalatu pakete bat" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Bertsio zaharragoaren instalazio-prozesua konfiguratzen" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Pakete baten bertsio zaharragoa instalatu" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Erakutsi bertsio bat makinarako eta/edo biltegi eskuragarriak." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum bertsio-taldeak:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Taldea :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Paketeak:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Instalatua:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Talde-instalatua:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Eskuragarri:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Talde-eskuragarri:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Erakutsi, edo erabili, transakzio-historia" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Baliogabeko historia-azpikomandoa, erabili: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Ez daukazu historiaren DBra sartzeko baimenik." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Begiratu arazorik dagoen rpmdb-an" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "kargatu gordetako transakzio bat fitxategi-izen batetik" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Ez da gordetako transakzioaren fitxategia adierazi." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "transakzioa kargatzen %s fitxategitik" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Transakzioa kargatua %s-(e)tik, %s kide" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Yum egiaztapenak huts egin du: %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "Beste aplikazio batek yum blokeatuta dauka; irten dadin itxaroten..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "Ezin izan da fitxategia blokeatu; irteten" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Mendekotasunak ebazten" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" "Zure transakzioa gorde egin da, berrexekutatzeko erabili hau: yum load-" "transacion %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Irteten erabiltzeileak eragiketa bertan behera utzi duelako." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" "Transakzio-multzoak konfiguratzen konfigurazio-klasea aktibatu baino lehen" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Baliogabeko tsflag konfigurazio-fitxategian: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Bilatzen pkgSack mendekotasunetarako: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Kidea: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s bihurtu instalatzeko" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "%s paketea gehitzen %s moduan" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "%s paketea kentzen" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s-(e)k behar du: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s-(e)k %s behar du" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Beharrezko eskakizuna blokeatu da jadanik" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Beharrezko eskakizuna ez da pakete-izena. Bilatzen: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Balizko hornitzailea: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Modua %s da %s-(r)en hornitzailerako: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "pkg-rako moduak %s-(e)az hornitzen: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "%s eguneratzen saiatzen dep konpontzeko" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Ez da eguneratze-biderik aurkitu %s-(e)rako Hutsegitea!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s paketeak behar duen %s ezabatzeko markatu da" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: %s zaharkitu bihurtzen %s ordez, mendekotasuna konpontzeko." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: %s eguneratzen mendekotasuna konpontzeko." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Ezin da eguneraketa-biderik aurkitu %s-(e)rako" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "%s-(r)en bat etortze azkarra %s-(e)rako behar delako" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s hornitutako paketeetan dago baina jadanik instalatuta dago, kentzen." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Konponketak ekar ditzakeen %s paketeak instantzia berria du ts-n." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" "Konponketak ekar ditzakeen %s paketeak instantzia berria du instalatuta." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s jadanik tx-en, saltatzen hau" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: %s markatzen %s-(r)en eguneraketa gisa" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: %s markatzen %s-(r)en instalazio gisa" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Arrakasta - transakzio hutsa" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Berrabiarazten begizta" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Amaitzen mendekotasun-prozesatzea" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Arrakasta - mendekotasunak konpondu dira" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "%s-(r)en mendekotasunak egiaztatzen" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "%s bilatzen %s-(e)k behar duelako" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "compare_providers() exekutatzen %s-(e)rako" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "Arkitektura hobea %s po-an" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s-(e)k %s zaharkitu bihurtzen du" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "%s eta %s alderatu dira %s-(e)n\n" " Irabazlea: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "%s eta %s sourcerpm komuna" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "%s oinarrizko paketea instalatu da %s-(e)rako" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "%s-(r)en aurrizki komuna %s eta %s artean" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "minimoa behar du: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Irabazlea: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Galtzailea (%d-(r)ekin): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Ordenarik onena: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" "doConfigSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "%r biltegia: Errorea konfigurazioa analizatzean: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "%r biltegiak ez du izenik konfigurazioan, id erabiltzen" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "pluginak jadanik hasieratu dira" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" "doRpmDBSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "RPMDB lokala irakurtzen" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Pakete-multzoak konfiguratzen" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "%s biltegiaren biltegi-objektuak ez dauka _resetSack metodorik\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "beraz, biltegi hau ezin da berrezarri.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" "doUpdateSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Eguneraketa-objektua eraikitzen" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" "doGroupSetup() desagertu egingo da yum-en etorkizuneko bertsio batean.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Taldeen metadatuak eskuratzen" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Biltegiko talde-fitxategia gehitzen: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Taldeen fitxategiak biltegitik gehitzeak huts egin du: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Ez dago talderik eskuragarri biltegietan" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "pkgtags metadatuak eskuratzen" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Etiketak gehitzen biltegitik: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Ezin izan dira Pkg etiketak gehitu biltegitik: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Fitxategi-zerrendaren informazio gehigarria inportatzen" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "%s%s%s programa yum-utils paketean dago." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Amaitu gabeko transakzioak geratu dira. Lehenengo yum-complete-transaction " "exekutatu beharko zenuke haiek amaitzeko." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Behar ez diren gainerako mendekotasunak aurkitzen" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Babestutako multilib bertsioak: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Babestuta dagoen \"%s\" kentzen saiatzen" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Mendekotasun-arazoengatik saltatutako paketeak:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s %s-(e)tik" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Aurretiaz existitzen ziren %d rpmdb arazo aurkitu dira, 'yum check' " "aginduak hurrengoa ematen du:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Abisua: RPMDB yum-etik kanpo aldatu da." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "galdutako betebeharrak" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "gatazka instalazioan" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Abisua: transakzioan zehar erroreak scriptlet-ekin edo beste errore ez-larri" " batzuk gertatu dira" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Transakzioa ezin izan da abiarazi:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Ezin izan da transakzioa exekutatu." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "%s transakzio-fitxategia kentzeak huts egin du" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s instalatuko zela uste zen baina ez dago instalatuta!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s kenduko zela uste zen baina ez da kendu!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Ezin da %s blokeoa ireki: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Ezin izan da egiaztatu %s PIDa aktibo dagoen ala ez" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" "%s blokeoa existitzen da: beste kopia bat %s PIDarekin ari da exekutatzen" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Ezin izan da blokeoa sortu %s-(e)n: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Paketea ez dator bat esandako deskargarekin. Iradokizuna: exekutatu yum " "--enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ezin izan da checksum-a egin" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Paketea ez dator bat checksum-arekin" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "paketeak huts egin du checksum-ean baina katxea gaituta dago %s-(e)rako" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "%s-(r)en kopia lokala erabiltzen" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Ez dago aski espaziorik %s deskarga-direktorioan\n" " *lekua %s\n" " * behar da %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Goiburua ez dago osorik." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Goiburua ez dago katxe lokalean eta katxea-bakarrik modua dago gaituta. Ezin" " da %s deskargatu" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "%s-(r)entzako gako publikoa ez dago instalatuta" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Arazoa %s paketea irekitzen" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "%s-(r)entzako gako publikoa ez da fidagarria" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "%s paketea ez dago sinatuta" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Ezin da %s kendu" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s kendu da" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Ezin da %s fitxategi %s kendu" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s fitxategi %s kendu da" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s fitxategi kendu dira" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Bat etortze bat baino gehiago dago multzoan %s(e)rako" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Ezer ez dator bat %s-(r)ekin.%s %s:%s-%s eguneraketatik" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() desagertu egingo da yum-en etorkizuneko bertsio batean." " Erabili searchGenerator() haren ordez. \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "%d pakete bilatzen" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "Pakete %s bilatzen" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "fitxategi-sarreretan bilatzen" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "hornitze-sarreretan bilatzen" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Ez dago talde-daturik eskuragarri konfiguratutako biltegietarako" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Ez da existitzen %s deritzon talderik" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "%s paketea ez da markatua izan %s taldean" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "%s taldeko %s paketea gehitzen" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Ez dago %s izeneko paketerik eskuragarri instalatua izateko" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Abisua: %s taldeak ez du paketerik." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "%s taldeak %u baldintza-pakete ditu, instalatuak izan daitezkeenak." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "%s pakete-tuplea ez da aurkitu pakete-multzoan" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "%s pakete-tuplea ez da aurkitu rpmdb-n" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Baliogabeko bertsio-bandera: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Ez da paketerik aurkitu %s-(e)rako" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Package Object ez da pakete-objektuen instantzia bat" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Ez da instalatzeko ezer zehaztu" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Hornitze birtualen edo fitxategi-hornitzeen bila %s-(e)rako" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Ez dago bat etortzerik argumenturako: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "%s paketea instalatuta dago eta ez dago eskuragarri" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Ez dago paketerik eskuragarri instalatua izateko" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paketea: %s - jadanik transakzio-multzoan" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" "%s paketea zaharkitua dago, bere ordezkoa den %s paketea instalatuta dago" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "%s paketea zaharkitua dago, eta bere ordezkoa den %s paketeak ez ditu " "eskakizunak betetzen" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "%s paketea zaharkitua dago, bere ordezkoa %s da, %s instalatzen saiatzen" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "%s paketea jadanik instalatuta dago bere azken bertsioan" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Bat datorren %s paketea jadanik instalatuta dago. Eguneraketak egiaztatzen." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Dena eguneratzen" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Ez eguneratzen jadanik zaharkitua dagoen paketea: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Paketea zaharkitua dago jadanik: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Ez eguneratzen zaharkitua dagoen paketea: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Ez eguneratzen jadanik eguneratua dagoen paketea: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Ez dago kentzeko bat datorren paketerik" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Exekutatzen ari den kernela saltatzen: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "%s kentzen transakziotik" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Ezin da ireki: %s. Saltatzen." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "%s aztertzen: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Ezin da lokalean instalatu deltarpm: %s. Saltatzen." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Ezin da %s paketea gehitu transakzioari. Arkitektura ez da bateragarri: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Ezin da %s paketea instalatu. Instalatutako %s paketeak zaharkitu egin du" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "%s paketea ez dago instalatuta, ezin da eguneratu. Exekutatu yum install " "hura instalatzeko." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "%s.%s paketea ez dago instalatua, ezin da eguneratu. Exekutatu yum install " "hura instalatzeko." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "%s baztertzen" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s markatzen instalatua izateko" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "%s markatzen %s(r)en eguneraketa gisa" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: ez du instalatutako paketea eguneratzen." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Ezin da fitxategia ireki: %s. Saltatzen." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Arazoa berrinstalatzean: kentzeko paketeak ez datoz bat" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "Arazoa berrinstalatzean: %s paketea ez dator bat instalazioarekin" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Ez dago paketerik eskuragarri bertsio zaharragoa instalatzeko" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "%s paketeari instalazio anitz onartzen zaizkio, saltatzen" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ez dago bat etortzerik eskuragarri dagoen paketerako: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Bertsio-berritzea soilik dago eskuragarri pakete honetarako: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Bertsio zaharragoa instalatzeak huts egin du: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Gakoa atzitzen %s-(e)tik" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG gakoaren atzipenak huts egin du: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" "%s gakoaren GPG gako-sinadura ez dator bat biltegiaren CA gakoarekin: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "GPG gako-sinadura CA gakoen aurka egiaztatu dira" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "GPG gako baliogabea %s-(e)tik: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "GPG gakoaren analisiak huts egin du: gakoak ez dauka %s balioa" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "%s gakoa inportatzen 0x%s:\n" " Erabiltzaile-IDa: %s\n" " Paketea: %s (%s)\n" " Nondik : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "%s gakoa inportatzen 0x%s:\n" " Erabiltzaile-IDa: \"%s\"\n" " Nondik : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "%s-(e)ko GPG gakoa (0x%s) jadanik instalatuta dago" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Gakoaren inportazioak huts egin du (%d kodea)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Gakoa ongi inportatu da" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Ez da gakorik instalatu" #: ../yum/__init__.py:4680 #, 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 "" "\"%s\" biltegirako zerrendatu diren GPG gakoak jadanik instalatuta daude, baina ez dira zuzenak pakete honetarako.\n" "Egiaztatu gako URL zuzena konfiguratuta dagoela biltegi honetarako." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Gako(ar)en inportazioak ez du balio izan, gako okerra(k)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "%s (0x%s)-(e)ko GPG gakoa jadanik inportatuta dago" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Gakoaren inportazioak huts egin du" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Ez da gakorik instalatu %s biltegirako" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "\"%s\" biltegirako zerrendatu diren GPG gakoak jadanik instalatuta daude, baina ez dira zuzenak.\n" "Egiaztatu gako URL zuzena konfiguratuta dagoela biltegi honetarako." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Ezin izan da ispilu egokia aurkitu." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Erroreak aurkitu dira paketeak deskargatzean." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Jakinarazi errore hau %s-(e)n" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Probatu transakzio-erroreak: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Ezin izan da katxe-direktorioa ezarri: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" "Mendekotasunak ez dira konpondu. Ez da gordeko konpondu gabeko transakzioa." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Ezin izan da %s transakzio-fitxategia gorde: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Ezin izan da atzitu/irakurri gordetako %s transakzioa: %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " ezikusten, eskatu den bezala." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " abortatzen." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "ezin da tsflags aurkitu edo tsflags ez da balio osoa." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "txmbr uneko egoera ezezagunean aurkitu da: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Ezin izan da txmbr aurkitu: %s %s egoeran" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Ezin izan da txmbr aurkitu: %s jatorritik: %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "Transakzio-kideak, erlazioak galdu dira edo ts aldatua izan da," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " ezikusten, eskatu den bezala. Redepsolve erabili behar duzu!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Kargatutako pluginak: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ez dago bat etortzerik pluginerako: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "\"%s\" plugina ez da kargatuko, desgaituta baitago" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Ezin izan da \"%s\" plugina inportatu" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "\"%s\" pluginak ez du zehaztu behar duen API bertsioa" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "\"%s\" pluginak APIaren %s bertsioa behar du. Onartutako APIa %s da." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "\"%s\" plugina kargatzen" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "\"%s\" izena duten bi plugin edo gehiago daude pluginak bilatzeko bide-" "izenean" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Ez da %s konfigurazio-fitxategia aurkitu" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Ezin izan da aurkitu %s pluginaren konfigurazio-fitxategia" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "komandoen erregistroa ez da onartzen" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "aurkitzen ez diren betebeharrak ditu" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "instalatutako gatazkak dauzka" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s %s-(r)en bikoiztua da" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s zaharkitua utzi du %s-(e)k" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s-(e)k %s hornitzen du baina ezin da aurkitu" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Birpaketatzen" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "Goiburua ezin izan da ireki edo ez dator bat %s-(r)ekin, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "%s RPMak ez du md5 egiaztapena gainditu" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Ezin izan da RPM datu-basea ireki hura irakurtzeko. Agian norbait erabiltzen" " al da?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Goiburu huts bat jaso da, zerbait gaizki joan da" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "%s goiburua hondatuta dago" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Errorea %s rpm irekitzean - %s errorea" yum-3.4.3/po/el.po0000664000076400007640000016070311602434452012713 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Dimitris Glezos , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Greek (http://www.transifex.net/projects/p/yum/team/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "ΕνημέÏωση" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "ΔιαγÏαφή" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Εγκατάσταση" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "ΕνημεÏώθηκε" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "ΔιαγÏάφηκε" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "ΔιαγÏάφηκε:%s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Γίνεται αφαίÏεση" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/pa.po0000664000076400007640000025641111602434452012715 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # A S Alam , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Panjabi (Punjabi) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pa\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "ਸਾਫ਼ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "ਇੰਸਟਾਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "ਬਰਤਰਫ਼ ਕੀਤੇ" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "ਅੱਪਡੇਟ ਕੀਤੇ" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "ਸਾਫ਼ ਕੀਤਾ" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "ਸਾਫ਼ ਕੀਤਾ: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "ਸਾਫ਼" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "ਕਮਾਂਡ \"%s\" ਪਹਿਲਾਂ ਦੀ ਦਿੱਤੀ ਹੈ" #: ../cli.py:127 msgid "Setting up repositories" msgstr "ਰਿਪੋਜ਼ਟਰੀਆਂ ਸੈਟਅੱਪ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "ਲੋਕਲ ਫਾਇਲਾਂ ਤੋਂ ਰਿਪੋਜ਼ਟਰੀ ਮੇਟਾਡਾਟਾ ਪੜà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "ਸੰਰਚਨਾ ਗਲਤੀ: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "ਚੋਣ ਗਲਤੀ: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " ਇੰਸਟਾਲ ਕੀਤਾ:%s-%s %s ਉੱਤੇ " #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " ਬਿਲਡ : %s %s ਉੱਤੇ " #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " ਕਮਿਟ ਕੀਤਾ: %s %s ਉੱਤੇ" #: ../cli.py:336 msgid "You need to give some command" msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਕà©à¨ ਕਮਾਂਡ ਦੇਣ ਦੀ ਲੋੜ ਹੈ" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "ਇੰਠਦੀ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ: %s। %s --help ਵਰਤੋਂ ਜੀ" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "ਡਿਸਕ ਲੋੜਾਂ:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " ਘੱਟੋ-ਘੱਟ %dMB ਹੋਰ ਖਾਲੀ ਥਾਂ %s ਫਾਇਲ ਸਿਸਟਮ ਉੱਤੇ ਚਾਹੀਦੀ ਹੈ।\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "ਗਲਤੀ ਸੰਖੇਪ\n" "------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "ਟਰਾਂਸੈਕਸ਼ਨ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ, ਪਰ ਕà©à¨ ਵੀ ਕਰਨ ਲਈ ਨਹੀਂ ਹੈ। ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ" " ਹੈ।" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡ ਮੌਜੂਦ ਹੈ" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "ਪੈਕੇਜ ਡਾਊਨਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "ਪੈਕੇਜ ਡਾਊਨਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ਗਲਤੀ, ਤà©à¨¹à¨¾à¨¨à©‚à©° ਹੈਂਡਲ ਕਰਨ ਲਈ rpm ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "%s ਵਿੱਚ ਇਹ ਗਲਤੀ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਉ" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਟੈਸਟ ਚੱਲ ਰਿਹਾ ਹੈ" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਚੈੱਕ ਗਲਤੀ:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਟੈਸਟ ਸਫ਼ਲ ਰਿਹਾ" #: ../cli.py:600 msgid "Running Transaction" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਚੱਲ ਰਹੀ ਹੈ" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * ਸ਼ਾਇਦ ਤà©à¨¸à©€à¨‚ ਚਾਹà©à©°à¨¦à©‡ ਹੋ: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "ਪੈਕੇਜ %s%s%s ਉਪਲੱਬਧ ਹਨ, ਪਰ ਇੰਸਟਾਲ ਨਹੀਂ।" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "ਕੋਈ %s%s%s ਪੈਕੇਜ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਪੈਕੇਜ" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "ਕਰਨ ਲਈ ਕà©à¨ ਨਹੀਂ" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "ਅੱਪਡੇਟ ਕਰਨ ਲਈ %d ਪੈਕੇਜ ਚà©à¨£à©‡ ਗà¨" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "ਅੱਪਡੇਟ ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "ਡਿਸਟਰੀਬਿਊਸ਼ਨ ਸਿੰਕਰੋਨਾਈਜ਼ ਕਰਨ ਲਈ %d ਪੈਕੇਜ ਚà©à¨£à©‡ ਗà¨" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "ਡਿਸਟਰੀਬਿਊਸ਼ਨ ਸਿੰਕਰੋਨਾਈਜ਼ ਕਰਨ ਲਈ ਕੋਈ ਪੈਕੇਜ ਮਾਰਕ ਨਹੀਂ ਕੀਤਾ" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "ਹਟਾਉਣ ਲਈ %d ਪੈਕੇਜ ਚà©à¨£à©‡ ਗà¨" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "ਹਟਾਉਣ ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "ਡਾਊਨਗਰੇਡ ਕਰਨ ਲਈ ਪੈਕੇਜ" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (%s ਵਲੋਂ)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "ਇੰਸਟਾਲ ਹੋਠਪੈਕੇਜ %s%s%s%s ਉਪਲੱਬਧ ਨਹੀਂ।" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਪੈਕੇਜ" #: ../cli.py:960 msgid "No Packages Provided" msgstr "ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ ਦਿੰਦਾ" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "ਮਿਲਦੇ: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "ਚੇਤਾਵਨੀ: %s :ਲਈ ਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭਿਆ" #: ../cli.py:1109 msgid "No Matches found" msgstr "ਕੋਈ ਮਿਲਦਾ ਨਹੀਂ" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "%s ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭਿਆ" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "ਰੈਪੋ ਸਾਫ਼ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "ਹਰ ਚੀਜ਼ ਸਾਫ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "ਹੈੱਡਰ ਸਾਫ਼ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "ਪੈਕੇਜ ਸਾਫ਼ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "xml ਮੇਟਾਡਾਟਾ ਸਾਫ਼ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "ਡਾਟਾਬੇਸ ਕੈਸ਼ ਸਾਫ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "à¨à¨•ਸਪਾਇਰ-ਕੈਸ਼ ਮੇਟਾਡਾਟਾ ਸਾਫ਼ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "ਕੈਸ਼ ਕੀਤਾ rpmdb ਡਾਟਾ ਸਾਫ਼ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "ਪਲੱਗਇਨ ਸਾਫ਼ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "ਇੰਸਟਾਲ ਹੋਠਗਰà©à©±à¨ª:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "ਉਪਲੱਬਧ ਗਰà©à©±à¨ª:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "ਮà©à¨•ੰਮਲ" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "ਚੇਤਾਵਨੀ: ਗਰà©à©±à¨ª %s ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "ਮੰਗੇ ਗਠਗਰà©à©±à¨ª ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਪੈਕੇਜ ਇੰਸਟਾਲ ਜਾਂ ਅੱਪਡੇਟ ਲਈ ਉਪਲੱਬਧ ਨਹੀਂ" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ %d ਪੈਕੇਜ" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "%s ਨਾਂ ਦਾ ਕੋਈ ਗਰà©à©±à¨ª ਮੌਜੂਦ ਨਹੀਂ" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "ਗਰà©à©±à¨ª ਵਿੱਚੋਂ ਹਟਾਉਣ ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "ਹਟਾਉਣ ਲਈ %d ਪੈਕੇਜ" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "%s ਪੈਕੇਜ ਪਹਿਲਾਂ ਹੀ ਇੰਸਟਾਲ ਹੈ, ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "ਪਲੱਗਇਨ ਚੋਣਾਂ" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "ਕਮਾਂਡ ਲਾਈਨ ਗਲਤੀ: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s:%s ਚੋਣ ਲਈ ਆਰਗੂਮੈਂਟ ਚਾਹੀਦਾ ਹੈ" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "ਇਹ ਮੱਦਦ ਸà©à¨¨à©‡à¨¹à¨¾ ਵੇਖਾਉ ਅਤੇ ਬੰਦ ਕਰੋ" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "ਪੂਰੀ ਤਰà©à¨¹à¨¾à¨‚ ਸਿਸਟਮ ਕੈਸ਼ ਤੋਂ ਚਲਾਓ, ਕੈਸ਼ ਅੱਪਡੇਟ ਨਾ ਕਰੋ" #: ../cli.py:1652 msgid "config file location" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਟਿਕਾਣਾ" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "ਵੱਧੋ-ਵੱਧ ਕਮਾਂਡ ਉਡੀਕ ਸਮਾਂ" #: ../cli.py:1657 msgid "debugging output level" msgstr "ਡੀਬੱਗ ਆਉਟਪà©à©±à¨Ÿ ਲੈਵਲ" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "ਡà©à¨ªà¨²à©€à¨•ੇਟ ਵੇਖੋ, ਰਿਪੋ ਵਿੱਚ, ਲਿਸਟ/ਖੋਜ ਕਮਾਂਡ ਵਿੱਚ" #: ../cli.py:1663 msgid "error output level" msgstr "ਗਲਤੀ ਆਉਟਪà©à©±à¨Ÿ ਲੈਵਲ" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "rpm ਲਈ ਡੀਬੱਗ ਆਉਟਪà©à©±à¨Ÿ ਲੈਵਲ" #: ../cli.py:1669 msgid "quiet operation" msgstr "ਚà©à©±à¨ª-ਚਾਪ ਕਾਰਵਾਈ" #: ../cli.py:1671 msgid "verbose operation" msgstr "ਜਾਣਕਾਰੀ ਸਮੇਤ ਕਾਰਵਾਈ" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "ਸਭ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਹਾਂ" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "ਯੱਮ ਵਰਜਨ ਵੇਖਾਓ ਅਤੇ ਬੰਦ ਕਰੋ" #: ../cli.py:1676 msgid "set install root" msgstr "install root ਸੈੱਟ ਕਰੋ" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "ਇੱਕ ਜਾਂ ਵੱਧ ਰਿਪੋਜ਼ਟਰੀਆਂ ਚਾਲੂ ਕਰੋ (ਵਾਈਲਡਕਾਰਡ ਮਨਜ਼ੂਰ ਹਨ)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "ਇੱਕ ਜਾਂ ਵੱਧ ਰਿਪੋਜ਼ਟਰੀਆਂ ਬੰਦ (ਵਾਇਲਡਕਾਰਡ ਮਨਜ਼ੂਰ)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "ਅੱਪਡੇਟ ਦੇ ਦੌਰਾਨ ਬਰਤਰਫ਼ ਕਾਰਵਾਈਆਂ ਚਾਲੂ" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "ਯੱਮ ਪਲੱਗਇਨ ਬੰਦ ਕਰੋ" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "gpg ਦਸਤਖਤ ਚੈੱਕ ਕਰਨਾ ਬੰਦ" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "ਨਾਂ ਨਾਲ ਪਲੱਗਇਨ ਬੰਦ ਕਰੋ" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "ਪਲੱਗਇਨ ਨਾਂ ਨਾਲ ਚਾਲੂ ਕਰੋ" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "ਨਿਰਭਰਤਾ ਸਮੱਸਿਆਵਾਂ ਵਾਲੇ ਪੈਕੇਜ ਛੱਡ ਦਿਉ" #: ../cli.py:1706 msgid "control whether color is used" msgstr "ਕੰਟਰੋਲ ਕਰੋ ਕਿ ਕੀ ਰੰਗ ਵਰਤਣੇ ਹਨ" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "ਯੱਮ ਸੰਰਚਨਾ ਤੇ ਰਿਪੋ ਫਾਇਲਾਂ 'ਚ $releasever ਦਾ ਮà©à©±à¨² ਸੈੱਟ ਕਰੋ" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "ਜਨ" #: ../output.py:307 msgid "Feb" msgstr "ਫਰ" #: ../output.py:307 msgid "Mar" msgstr "ਮਾਰ" #: ../output.py:307 msgid "Apr" msgstr "ਅਪ" #: ../output.py:307 msgid "May" msgstr "ਮਈ" #: ../output.py:307 msgid "Jun" msgstr "ਜੂਨ" #: ../output.py:308 msgid "Jul" msgstr "ਜà©à¨²à¨¾" #: ../output.py:308 msgid "Aug" msgstr "ਅਗ" #: ../output.py:308 msgid "Sep" msgstr "ਸਤੰ" #: ../output.py:308 msgid "Oct" msgstr "ਅਕ" #: ../output.py:308 msgid "Nov" msgstr "ਨਵੰ" #: ../output.py:308 msgid "Dec" msgstr "ਦਸੰ" #: ../output.py:318 msgid "Trying other mirror." msgstr "ਹੋਰ ਮਿੱਰਰ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਜਾਰੀ" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "ਨਾਂ : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "ਢਾਂਚਾ : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoch : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "ਵਰਜਨ : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "ਰੀਲਿਜ਼ : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "ਸਾਈਜ਼ : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "ਰਿਪੋ : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "ਰਿਪੋ ਤੋਂ : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "ਕਮਿੱਟਰ : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "ਕਮਿਟ-ਸਮਾਂ : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "ਬਿਲਡ ਸਮਾਂ : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "ਇੰਸਟਾਲ ਸਮਾਂ: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "ਇੰਸਟਾਲ ਇਸ ਵਲੋਂ: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "ਇਸ ਵਲੋਂ ਬਦਲਿਆ : %s" #: ../output.py:612 msgid "Summary : " msgstr "ਸੰਖੇਪ : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "ਲਾਈਸੈਂਸ : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "ਵੇਰਵਾ: " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "yes" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "no" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "ਕੀ ਇਹ ਠੀਕ ਹੈ [y/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "ਗਰà©à©±à¨ª: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " ਗਰà©à©±à¨ª-Id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " ਵੇਰਵਾ: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " ਲਾਜ਼ਮੀ ਪੈਕੇਜ:" #: ../output.py:791 msgid " Default Packages:" msgstr " ਡਿਫਾਲਟ ਪੈਕੇਜ:" #: ../output.py:792 msgid " Optional Packages:" msgstr " ਚੋਣਵੇਂ ਪੈਕੇਜ:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " ਸ਼ਰਤੀਆ ਪੈਕੇਜ:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "ਪੈਕੇਜ: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " ਇਹ ਪੈਕੇਜ ਲਈ ਕੋਈ ਨਿਰਭਰਤਾ ਨਹੀਂ ਹੈ" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " ਨਿਰਭਰਤਾ: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " ਨਾ-ਹੱਲ ਹੋਈ ਨਿਰਭਰਤਾ" #: ../output.py:901 msgid "Matched from:" msgstr "ਇਸ ਤੋਂ ਮੇਲ:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "ਲਾਈਸੈਂਸ : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "ਫਾਇਲ ਨਾਂ : %s" #: ../output.py:923 msgid "Other : " msgstr "ਹੋਰ : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "ਕà©à©±à¨² ਡਾਊਨਲੋਡ ਆਕਾਰ ਲੱਭਣ ਦੌਰਾਨ ਗਲਤੀ" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "ਕà©à©±à¨² ਸਾਈਜ਼: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "ਕà©à©±à¨² ਡਾਊਨਲੋਡ ਸਾਈਜ਼: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "ਇੰਸਟਾਲ ਦਾ ਸਾਈਜ਼: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "ਇੰਸਟਾਲ ਆਕਾਰ ਗਿਣਨ ਦੌਰਾਨ ਗਲਤੀ" #: ../output.py:1039 msgid "Reinstalling" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../output.py:1040 msgid "Downgrading" msgstr "ਡਾਊਨਗਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "ਨਿਰਭਰਤਾ ਲਈ ਇੰਸਟਾਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "ਨਿਰਭਰਤਾ ਲਈ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "ਨਿਰਭਰਤਾ ਲਈ ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹੈ (ਨਿਰਭਰਤਾ ਸਮੱਸਿਆ)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "ਇੰਸਟਾਲ ਨਹੀਂ" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "ਪੈਕੇਜ" #: ../output.py:1075 msgid "Arch" msgstr "ਢਾਂਚਾ" #: ../output.py:1076 msgid "Version" msgstr "ਵਰਜਨ" #: ../output.py:1076 msgid "Repository" msgstr "ਰਿਪੋਜ਼ਟਰੀ" #: ../output.py:1077 msgid "Size" msgstr "ਸਾਈਜ਼" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " %s%s%s.%s %s ਨੂੰ ਬਦਲਿਆ ਜਾ ਰਿਹਾ ਹੈ\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "ਟਰਾਂਸੈਕਸ਼ਨ ਸੰਖੇਪ ਜਾਣਕਾਰੀ\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "ਇੰਸਟਾਲ %5.5s ਪੈਕੇਜ\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "ਅੱਪਗਰੇਡ %5.5s ਪੈਕੇਜ\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "ਹਟਾਉਣੇ %5.5s ਪੈਕੇਜ\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ %5.5s ਪੈਕੇਜ\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "ਡਾਊਨਗਰੇਡ %5.5s ਪੈਕੇਜ\n" #: ../output.py:1165 msgid "Removed" msgstr "ਹਟਾà¨" #: ../output.py:1166 msgid "Dependency Removed" msgstr "ਨਿਰਭਰਤਾ ਹਟਾਈ" #: ../output.py:1168 msgid "Dependency Installed" msgstr "ਨਿਰਭਰਤਾ ਇੰਸਟਾਲ ਕੀਤੀ" #: ../output.py:1170 msgid "Dependency Updated" msgstr "ਨਿਰਭਰਤਾ ਅੱਪਡੇਟ ਕੀਤੀ" #: ../output.py:1172 msgid "Replaced" msgstr "ਬਦਲੇ ਗà¨" #: ../output.py:1173 msgid "Failed" msgstr "ਫੇਲà©à¨¹ ਹੋà¨" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " ਮੌਜੂਦਾ ਡਾਊਨਲੋਡ ਰੱਦ ਕੀਤਾ ਗਿਆ, ਬੰਦ ਕਰਨ ਲਈ %sinterrupt (ctrl-c) %s %s%s%s ਸਕਿੰਟ ਵਿੱਚ\n" "ਦਬਾਉ\n" #: ../output.py:1282 msgid "user interrupt" msgstr "ਯੂਜ਼ਰ ਵਲੋਂ ਦਖ਼ਲ" #: ../output.py:1300 msgid "Total" msgstr "ਕà©à©±à¨²" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "<ਅਣ-ਸੈੱਟ>" #: ../output.py:1342 msgid "System" msgstr "ਸਿਸਟਮ" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "ਖ਼ਰਾਬ ਟਰਾਂਸੈਕਸ਼ਨ ID, ਜਾਂ ਪੈਕੇਜ ਦਿੱਤਾ" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "ਲਾਗਇਨ ਯੂਜ਼ਰ" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "ਮਿਤੀ ਅਤੇ ਸਮਾਂ" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "à¨à¨•ਸ਼ਨ" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "ਬਦਲੇ" #: ../output.py:1538 msgid "No transaction ID given" msgstr "ਕੋਈ ਟਰਾਂਸੈਕਸ਼ਨ ID ਦਿੱਤਾ" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "ਖ਼ਰਾਬ ਟਰਾਂਸੈਕਸ਼ਨ ID ਦਿੱਤਾ" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "ਦਿੱਤਾ ਟਰਾਂਸੈਕਸ਼ਨ ID ਨਹੀਂ ਲੱਭਿਆ" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "ਇੱਕ ਤੋਂ ਵੱਧ ਟਰਾਂਸੈਕਸ਼ਨ ID ਲੱਭਿਆ!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "ਕੋਈ ਟਰਾਂਸੈਕਸ਼ਨ ID, ਜਾਂ ਪੈਕੇਜ ਨਹੀਂ ਦਿੱਤਾ" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "ਡਾਊਨਗਰੇਡ ਕੀਤੇ" #: ../output.py:1688 msgid "Older" msgstr "ਪà©à¨°à¨¾à¨£à©‡" #: ../output.py:1688 msgid "Newer" msgstr "ਨਵੇਂ" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ID:" #: ../output.py:1728 msgid "Begin time :" msgstr "ਸ਼à©à¨°à©‚ ਸਮਾਂ :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "rpmdb ਸ਼à©à¨°à©‚ :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "ਅੰਤ ਸਮਾਂ :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "rpmdb ਅੰਤ :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "ਯੂਜ਼ਰ :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "ਰੀਟਰਨ-ਕੋਡ :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "ਅਧੂਰਾ ਛੱਡਿਆ" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "ਫੇਲà©à¨¹:" #: ../output.py:1779 msgid "Success" msgstr "ਸਫ਼ਲ" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "ਕਮਾਂਡ ਲਾਈਨ :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਕੀਤੀ ਗਈ ਇਸ ਨਾਲ:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "ਪੈਕੇਜ ਬਦਲੇ:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "ਪੈਕੇਜ ਛੱਡੇ ਗà¨:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb ਸਮੱਸਿਆਵਾਂ:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scriptlet ਆਉਟਪà©à©±à¨Ÿ:" #: ../output.py:1831 msgid "Errors:" msgstr "ਗਲਤੀਆਂ:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "ਇੰਸਟਾਲ" #: ../output.py:1839 msgid "Dep-Install" msgstr "ਨਿਰਭ-ਇੰਸਟਾਲ" #: ../output.py:1841 msgid "Obsoleting" msgstr "ਬਰਤਰਫ਼ ਕੀਤੇ" #: ../output.py:1842 msgid "Erase" msgstr "ਸਾਫ਼" #: ../output.py:1843 msgid "Reinstall" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ" #: ../output.py:1844 msgid "Downgrade" msgstr "ਡਾਊਨਗਰੇਡ" #: ../output.py:1846 msgid "Update" msgstr "ਅੱਪਡੇਟ" #: ../output.py:1909 msgid "Time" msgstr "ਸਮਾਂ" #: ../output.py:1935 msgid "Last day" msgstr "ਪਿਛਲੇ ਦਿਨ" #: ../output.py:1936 msgid "Last week" msgstr "ਪਿਛਲੇ ਹਫ਼ਤੇ" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "ਪਿਛਲੇ ੨ ਹਫ਼ਤੇ" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "ਪਿਛਲੇ à©© ਮਹੀਨੇ" #: ../output.py:1939 msgid "Last 6 months" msgstr "ਪਿਛਲੇ ੬ ਮਹੀਨੇ" #: ../output.py:1940 msgid "Last year" msgstr "ਪਿਛਲੇ ਸਾਲ" #: ../output.py:1941 msgid "Over a year ago" msgstr "ਲਗਭਗ ਸਾਲ ਪਹਿਲਾਂ" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "ਕੋਈ ਟਰਾਂਸੈਕਸ਼ਨ %s ਨਹੀਂ ਲੱਭੀ" #: ../output.py:1990 msgid "Transaction ID:" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ID:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "ਉਪਲੱਬਧ ਹੋਰ ਅਤੀਤ ਜਾਣਕਾਰੀ:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: ਇਸ ਨਾਂ ਨਾਲ ਕੋਈ ਹੋਰ ਵਾਧੂ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ" #: ../output.py:2106 msgid "installed" msgstr "ਇੰਸਟਾਲ ਕੀਤੇ" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "ਸਾਫ਼ ਕੀਤੇ" #: ../output.py:2109 msgid "reinstalled" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ ਕੀਤੇ" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "ਅੱਪਡੇਟ ਕੀਤੇ" #: ../output.py:2113 msgid "obsoleted" msgstr "ਬਰਤਰਫ਼ ਕੀਤੇ" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> ਟਰਾਂਸੈਕਸ਼ਨ ਚੈੱਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> ਨਵੇਂ ਬਦਲਾਅ ਨਾਲ ਨਿਰਭਰਤਾ ਹੱਲ਼ ਲਈ ਮà©à©œ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> ਨਿਰਭਰਤਾ ਹੱਲ ਮà©à¨•ੰਮਲ ਹੋਇਆ" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> ਨਿਰਭਰਤਾ ਲਈ ਕਾਰਵਾਈ ਜਾਰੀ: %s ਪੈਕੇਜ ਲਈ: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> ਪੈਕੇਜ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> ਨਾ-ਹੱਲ਼ ਹੋਈ ਨਿਰਭਰਤਾ: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "ਪੈਕੇਜ: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " ਚਾਹੀਦਾ ਹੈ: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " ਨਹੀਂ ਲੱਭਾ" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "ਅੱਪਡੇਟ ਕੀਤਾ" #: ../output.py:2197 msgid "Downgraded By" msgstr "ਡਾਊਨਗਰੇਡ ਕੀਤਾ" #: ../output.py:2198 msgid "Obsoleted By" msgstr "ਬਰਤਰਫ਼ ਕੀਤਾ" #: ../output.py:2216 msgid "Available" msgstr "ਉਪਲੱਬਧ" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> ਅਪਵਾਦ ਹੱਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ: %s ਦਾ %s ਨਾਲ ਟਕਰਾ" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> ਚà©à¨£à©‡ ਪੈਕੇਜਾਂ ਲਈ ਟਰਾਂਸੈਕਸ਼ਨ ਸੈੱਟ ਪਾਪੂਲੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਉਡੀਕੋ ਜੀ।" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "---> ਟਰਾਂਸੈਕਸ਼ਨ ਸੈੱਟ 'ਚ ਪੈਕ ਕਰਨ ਲਈ %s ਵਾਸਤੇ ਹੈੱਡਰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" #: ../utils.py:99 msgid "Running" msgstr "ਚੱਲ ਰਿਹਾ ਹੈ" #: ../utils.py:100 msgid "Sleeping" msgstr "ਸਲੀਪਿੰਗ" #: ../utils.py:101 msgid "Uninterruptible" msgstr "ਗ਼ੈਰ-ਰà©à¨•ਾਵਟ-ਯੋਗ" #: ../utils.py:102 msgid "Zombie" msgstr "ਜੋਮਬਿਈ" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "ਟਰੇਸ ਕੀਤਾ/ਰੋਕਿਆ" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "ਅਣਜਾਣ" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਹੈ: ਪੈਕੇਜਕਿੱਟ" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਹੈ: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " ਮੈਮੋਰੀ : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " ਸ਼à©à¨°à©‚ ਹੋਇਆ: %s - %s ਪਹਿਲਾਂ" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " ਹਾਲਤ : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "ਯੂਜ਼ਰ ਰੱਦ ਕਰਨ ਉੱਤੇ ਮੌਜੂਦ" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "ਖਰਾਬ ਪਾਈਪ ਉੱਤੇ ਬੰਦ" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "ਹਾਲੇ ਕੋਈ ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਯੱਮ ਲਾਕ ਵਰਤ ਰਹੀ ਹੈ; exit_on_lock ਵਲੋਂ ਸੰਰਚਨਾ ਮà©à¨¤à¨¾à¨¬à¨• " "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit ਗਲਤੀ: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "ਯੱਮ ਗਲਤੀ: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "ਗਲਤੀ: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " ਤà©à¨¸à©€à¨‚ ਸਮੱਸਿਆ ਨਾਲ ਨਿਪਟ ਲਈ --skip-broken ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੰਮ ਚਲਾ ਸਕਦੇ ਹੋ" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " ਤà©à¨¹à¨¾à¨¨à©‚à©° ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "ਅਣਜਾਣ ਗਲਤੀ: ਬੰਦ ਕਰੋ: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "ਨਿਰਭਰਤਾ ਹੱਲ਼ ਹੋਈ" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "ਮà©à¨•ੰਮਲ!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਹ ਕਾਰਵਾਈ ਕਰਨ ਲਈ ਰੂਟ (root) ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "ਗਲਤੀ: ਮਿਲਦੀ ਆਈਟਮ ਦੀ ਲੋੜ ਹੈ" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "ਗਲਤੀ: ਗਰà©à©±à¨ª ਜਾਂ ਗਰà©à©±à¨ªà¨¾à¨‚ ਦੀ ਲਿਸਟ ਦੀ ਲੋੜ ਹੈ" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "ਗਲਤੀ: ਸਾਫ਼ ਕਰਨ (clean) ਲਈ ਕੋਈ ਚੋਣ ਦਿੱਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "ਗਲਤੀ: ਗਲਤ clean ਆਰਗੂਮੈਂਟ: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "ਸ਼ੈੱਲ ਲਈ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਹੀਂ" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "ਸ਼ੈੱਲ ਨੂੰ ਦੇਣ ਲਈ ਫਾਇਲ ਨਾਂ: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "ਪੈਕੇਜ..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "ਆਪਣੇ ਸਿਸਟਮ ਉੱਤੇ ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "ਇੰਸਟਾਲ ਕਾਰਵਾਈ ਸੈੱਟ ਅੱਪ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[ਪੈਕੇਜ...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "ਆਪਣੇ ਸਿਸਟਮ ਉੱਤੇ ਪੈਕੇਜ ਅੱਪਡੇਟ ਕਰੋ" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "ਅੱਪਡੇਟ ਕਾਰਵਾਈ ਸੈੱਟਅੱਪ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "ਸਭ ਇੰਸਟਾਲ ਕੀਤੇ ਪੈਕੇਜਾਂ ਨੂੰ ਸਭ ਤੋਂ ਨਵੇਂ ਉਪਲੱਬਧ ਵਰਜਨਾਂ ਨਾਲ ਸਿੰਕਰੋਨਾਈਜ਼ ਕਰੋ" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "ਡਿਸਟਰੀਬਿਊਸ਼ਨ ਸਿੰਕਰੋਨਾਈਜ਼ ਕਾਰਵਾਈ ਸੈਟਅੱਪ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "ਪੈਕੇਜ ਜਾਂ ਪੈਕੇਜਾਂ ਦੇ ਗਰà©à©±à¨ª ਬਾਰੇ ਵੇਰਵੇ ਸਮੇਤ ਜਾਣਕਾਰੀ ਵੇਖੋ" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "ਇੰਸਟਾਲ ਹੋਠਪੈਕੇਜ" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "ਉਪਲੱਬਧ ਪੈਕੇਜ" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "ਵਾਧੂ ਪੈਕੇਜ" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "ਅੱਪਡੇਟ ਕੀਤੇ ਪੈਕੇਜ" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "ਬਰਤਰਫ਼ ਕੀਤੇ ਜਾ ਰਹੇ ਪੈਕੇਜ" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "ਤਾਜ਼ਾ ਸ਼ਾਮਲ ਕੀਤੇ ਪੈਕੇਜ" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "ਲਿਸਟ ਲਈ ਕੋਈ ਮਿਲਦਾ ਪੈਕੇਜ ਨਹੀਂ" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "ਪੈਕੇਜ ਜਾਂ ਪੈਕੇਜਾਂ ਦੇ ਗਰà©à©±à¨ª ਦੀ ਲਿਸਟ" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "ਆਪਣੇ ਸਿਸਟਮ ਤੋਂ ਪੈਕੇਜ ਹਟਾਓ" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "ਹਟਾਉਣ ਕਾਰਵਾਈ ਲਈ ਸੈਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "ਗਰà©à©±à¨ª ਕਾਰਵਾਈ ਸੈਟਅੱਪ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "ਕੋਈ ਗਰà©à©±à¨ª ਨਹੀਂ, ਜਿਸ ਉੱਤੇ ਕਮਾਂਡ ਚਲਾਈ ਜਾ ਸਕੇ" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "ਉਪਲੱਬਧ ਪੈਕੇਜ ਗਰà©à©±à¨ªà¨¾à¨‚ ਦੀ ਲਿਸਟ" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "ਆਪਣੇ ਸਿਸਟਮ ਉੱਤੇ ਗਰà©à©±à¨ª ਵਿੱਚੋਂ ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "ਆਪਣੇ ਸਿਸਟਮ ਤੋਂ ਗਰà©à©±à¨ª ਵਿੱਚੋਂ ਪੈਕੇਜ ਹਟਾਓ" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "ਪੈਕੇਜ ਗਰà©à©±à¨ª ਬਾਰੇ ਵੇਰਵੇ ਸਮੇਤ ਜਾਣਕਾਰੀ ਵੇਖੋ" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "ਮੇਟਾਡਾਟਾ ਕੈਸ਼ ਤਿਆਰ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "ਸਭ ਮੇਟਾਡਾਟਾ ਫਾਇਲਾਂ ਲਈ ਕੈਸ਼ ਫਾਇਲਾਂ ਬਣਾਈਆਂ ਜਾ ਰਹੀਆਂ ਹਨ।" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "ਇਹ ਤà©à¨¹à¨¾à¨¡à©‡ ਕੰਪਿਊਟਰ ਦੀ ਸਪੀਡ ਦੇ ਮà©à¨¤à¨¾à¨¬à¨• ਕà©à¨ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ।" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "ਮੇਟਾਡਾਟਾ ਕੈਸ਼ ਬਣਾਈ ਗਈ" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "ਕੈਸ਼ ਡਾਟਾ ਹਟਾਓ" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "ਲੱਭੋ ਕਿ ਕਿਹੜਾ ਪੈਕੇਜ ਦਿੱਤਾ ਮà©à©±à¨² ਦਿੰਦਾ ਹੈ" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "ਉਪਲੱਬਧ ਪੈਕੇਜ ਅੱਪਡੇਟ ਲਈ ਚੈੱਕ" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "ਦਿੱਤੀ ਲਾਈਨ ਲਈ ਪੈਕੇਜ ਵੇਰਵਾ ਲੱਭੋ" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "ਪੈਕੇਜਾਂ ਲਈ ਖੋਜ ਜਾਰੀ: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "ਪੈਕੇਜ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਬਰਤਰਫ਼ ਨੂੰ ਧਿਆਨ 'ਚ ਰੱਖਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "ਅੱਪਗਰੇਡ ਕਰਾਵਾਈ ਸੈੱਟਅੱਪ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "ਲੋਕਲ RPM ਇੰਸਟਾਲ ਕਰੋ" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "ਲੋਕਲ ਪੈਕੇਜ ਕਾਰਵਾਈ ਲਈ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "ਦੱਸੋ ਕਿ ਕਿਹੜਾ ਪੈਕੇਜ ਦਿੱਤੀ ਨਿਰਭਰਤਾ ਦਿੰਦਾ ਹੈ" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "ਨਿਰਭਰਤਾ ਲਈ ਪੈਕੇਜਾਂ ਦੀ ਖੋਜ ਜਾਰੀ:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "ਇੰਟਰ-à¨à¨•ਟਿਵ ਯੱਮ ਸ਼ੈੱਲ ਚਲਾਓ" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "ਯੱਮ ਸ਼ੈੱਲ ਸੈੱਟਅੱਪ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "ਪੈਕੇਜਾਂ ਦੀ ਨਿਰਭਰਤਾ ਦੀ ਲਿਸਟ" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "ਨਿਰਭਰਤਾ ਲੱਭੀ ਜਾ ਰਹੀ ਹੈ: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "ਸੰਰਚਿਤ ਸਾਫਟਵੇਅਰ ਰਿਪੋਜ਼ਟਰੀਆਂ ਵੇਖੋ" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "ਚਾਲੂ" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "ਬੰਦ" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "ਰਿਪੋ-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "ਰਿਪੋ-ਨਾਂ : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "ਰਿਪੋ-ਹਾਲਤ : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "ਰਿਪੋ-ਰੀਵਿਜ਼ਨ: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "ਰਿਪੋ-ਟੈਗ : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tags: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "ਰਿਪੋ-ਅੱਪਡੇਟ : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "ਰਿਪੋ-ਪੈਕੇਜ : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "ਰਿਪੋ-ਸਾਈਜ਼ : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "ਰਿਪੋ-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "ਰਿਪੋ-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " ਅੱਪਡੇਟ : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "ਰਿਪੋ-mirrors : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "ਕਦੇ ਨਹੀਂ (ਆਖਰੀ: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s ਸਕਿੰਟ (ਆਖਰੀ: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "ਰਿਪੋ-expire : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-ਨਾ-ਸ਼ਾਮਲ : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-ਸ਼ਾਮਲ : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "repo id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "ਹਾਲਤ" #: ../yumcommands.py:1062 msgid "repo name" msgstr "ਰਿਪੋ ਨਾਂ" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "%s ਲਈ ਕੋਈ ਮੱਦਦ ਉਪਲੱਬਧ ਨਹੀਂ" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "à¨à¨²à©€à¨†à¨¸: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "à¨à¨²à©€à¨†à¨¸: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ ਕਾਰਵਾਈ ਲਈ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "ਪੈਕੇਜ ਮà©à©œ-ਇੰਸਟਾਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "ਡਾਊਨਗਰੇਡ ਕਾਰਵਾਈ ਲਈ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "ਪੈਕੇਜ ਡਾਊਨਗਰੇਡ ਕਰੋ" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "ਮਸ਼ੀਨ ਤੇ / ਜਾਂ ਉਪਲੱਬਧ ਰਿਪੋ ਲਈ ਵਰਜਨ ਵੇਖੋ।" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " ਯੱਮ ਵਰਜਨ ਗਰà©à©±à¨ª:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " ਗਰà©à©±à¨ª :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " ਪੈਕੇਜ:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "ਇੰਸਟਾਲ ਹੋà¨:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "ਗਰà©à©±à¨ª-ਇੰਸਟਾਲ ਹੋà¨:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "ਉਪਲੱਬਧ:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "ਉਪਲੱਬਧ-ਗਰà©à©±à¨ª:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਅਤੀਤ ਵੇਖੋ ਜਾਂ ਵਰਤੋਂ" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "rpmdb ਵਿੱਚ ਸਮੱਸਿਆ ਲਈ ਚੈੱਕ ਕਰੋ" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "ਹਾਲੇ ਕੋਈ ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਣ ਯੱਮ ਲਾਕ ਵਰਤ ਰਹੀ ਹੈ; ਉਸ ਨੂੰ ਬੰਦ ਹੋਣ ਤੱਕ ਉਡੀਕ ਜਾਰੀ..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "ਨਿਰਭਰਤਾ ਹੱਲ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "ਯੂਜ਼ਰ ਵੱਲੋਂ ਬੰਦ ਕਰਨ ਉੱਤੇ ਬੰਦ।" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "ਮੈਂਬਰ: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ %s ਬਦਲਿਆ" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "ਪੈਕੇਜ %s ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s ਚਾਹੀਦਾ ਹੈ: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s ਨੂੰ ਚਾਹੀਦਾ ਹੈ %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "ਸੰਭਾਵਿਤ ਦੇਣ ਵਾਲਾ: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "ਸਫ਼ਲ - ਖਾਲੀ ਟਰਾਂਸੈਕਸ਼ਨ" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "ਚੱਕਰ ਮà©à©œ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "ਨਿਰਭਰਤਾ ਕਾਰਵਾਈ ਖਤਮ ਹੋ ਰਹੀ ਹੈ" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "ਸਫ਼ਲ - ਨਿਰਭਰਤਾ ਹੱਲ਼ ਹੋਈ" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "%s ਲਈ ਨਿਰਭਰਤਾ ਚੈੱਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s ਨੇ %s ਬਰਤਰਫ਼ ਕੀਤਾ" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "ਆਮ sourcerpm %s ਅਤੇ %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "ਬੇਸ ਪੈਕੇਜ %s %s ਲਈ ਇੰਸਟਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "ਘੱਟੋ-ਘੱਟ ਲੋੜ ਹੈ: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " ਜੇਤੂ: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " ਹਾਰਿਆ(%d ਨਾਲ): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "ਵਧੀਆ ਕà©à¨°à¨®: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "ਪਲੱਗਇਨ ਪਹਿਲਾਂ ਹੀ ਚਾਲੂ ਹੈ" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "ਲੋਕਲ RPMDB ਪੜà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "ਇਸਕਰਕੇ ਇਹ ਰਿਪੋ ਮà©à©œ-ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "ਅੱਪਡੇਟ ਆਬਜੈਕਟ ਬਣਾਠਜਾ ਰਹੇ ਹਨ" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "ਗਰà©à©±à¨ª ਮੇਟਾਡਾਟਾ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "%s: ਰਿਪੋਜ਼ਟਰੀ ਤੋਂ ਗਰà©à©±à¨ª ਫਾਇਲ ਸ਼ਾਮਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "%s - %s: ਰਿਪੋਜ਼ਟਰੀ ਲਈ ਗਰà©à©±à¨ª ਫਾਇਲ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲà©à¨¹" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "ਕਿਸੇ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਕੋਈ ਗਰà©à©±à¨ª ਉਪਲੱਬਧ ਨਹੀਂ" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "ਪੈਕੇਜਟੈਗ ਮੇਟਾਡਾ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "ਰਿਪੋਜ਼ਟਰੀ ਤੋਂ ਟੈਗ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "ਵਾਧੂ ਫਾਇਲ-ਲਿਸਟ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "ਪਰੋਗਰਾਮ %s%s%s ਨੂੰ yum-utils ਪੈਕੇਜ 'ਚ ਲੱਭਿਆ ਜਾ ਸਕਦਾ ਹੈ।" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "ਅਧੂਰੀਆਂ ਟਰਾਂਸੈਕਸ਼ਨ ਬਾਕੀ ਹਨ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਉਹਨਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਸਤੇ yum-complete-" "transaction ਚਲਾਉ ਬਾਰੇ ਸੋਚਣਾ ਚਾਹੀਦਾ ਹੈ।" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "\"%s\" ਹਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼, ਜੋ ਕਿ ਸà©à¨°à©±à¨–ਿਅਤ ਹੈ" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "ਪੈਕੇਜ ਨਿਰਭਰਤਾ ਸਮੱਸਿਆ ਕਰਕੇ ਛੱਡੇ ਗà¨:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s %s ਤੋਂ" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** %d ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦਾ rpmdb ਸਮੱਸਿਆਵਾਂ ਲੱਭੀਆਂ, 'yum check' ਆਉਟਪà©à©±à¨Ÿ ਅੱਗੇ " "ਦਿੱਤੀ ਹੈ:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "ਚੇਤਾਵਨੀ: RPMDB ਨੂੰ ਯੱਮ ਤੋਂ ਬਿਨਾਂ ਬਦਲਿਆ ਗਿਆ।" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "ਲੋੜੀਦੇ ਮੌਜੂਦ ਨਹੀਂ" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "ਇੰਸਟਾਲ ਨਾਲ ਟਕਰਾ" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਸ਼à©à¨°à©‚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਚਲਾਈ ਨਹੀਂ ਜਾ ਸਕੀ।" #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s ਹਟਾਇਆ ਗਿਆ ਹੋਣਾ ਚਾਹੀਦਾ ਸੀ, ਪਰ ਨਹੀਂ ਗਿਆ!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "%s ਲਾਕ ਖੋਲà©à¨¹à¨¿à¨† ਨਹੀਂ ਜਾ ਸਕਿਆ: %s " #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "%s ਲਈ ਲਾਕ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "checksum ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "ਪੈਕੇਜ ਚੈਕਸਮ ਰਲਦਾ ਨਹੀਂ ਹੈ" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "%s ਦੀ ਲੋਕਲ ਕਾਪੀ ਦੀ ਵਰਤੋਂ" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ %s ਵਿੱਚ ਨਾ-ਲੋੜੀਦੀ ਖਾਲੀ ਥਾਂ\n" " * ਖਾਲੀ %s\n" " * ਚਾਹੀਦੀ %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "ਹੈੱਡਰ ਪੂਰਾ ਨਹੀਂ ਹੈ।" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "%s ਲਈ ਪਬਲਿਕ ਕà©à©°à¨œà©€ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "ਪੈਕੇਜ %s ਖੋਲà©à¨¹à¨£ ਦੌਰਾਨ ਸਮੱਸਿਆ" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "%s ਲਈ ਪਬਲਿਕ ਕà©à©°à¨œà©€ ਭਰੋਸੇਯੋਗ ਨਹੀਂ" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "ਪੈਕੇਜ %s ਸਾਈਨ ਨਹੀਂ ਕੀਤਾ" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "%s ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s ਹਟਾਇਆ" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "%s ਫਾਇਲ %s ਹਟਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s ਫਾਇਲ %s ਹਟਾਈ" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s ਫਾਇਲਾਂ ਹਟਾਈਆਂ ਗਈਆਂ" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "%d ਪੈਕੇਜਾਂ ਲਈ ਖੋਜ ਜਾਰੀ ਹੈ" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "ਪੈਕੇਜ %s ਲਈ ਖੋਜ ਜਾਰੀ ਹੈ" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "ਫਾਇਲ à¨à¨‚ਟਰੀਆਂ ਲਈ ਖੋਜ ਜਾਰੀ ਹੈ" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "ਪਰੋਵਾਇਡਰ à¨à¨‚ਟਰੀਆਂ ਵਿੱਚ ਖੋਜ ਜਾਰੀ" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "ਸੰਰਚਿਤ ਰਿਪੋਜ਼ਟਰੀਆਂ ਵਿੱਚ ਕੋਈ ਗਰà©à©±à¨ª ਡਾਟਾ ਉਪਲੱਬਧ ਨਹੀਂ" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "%s ਨਾਂ ਦਾ ਕੋਈ ਗਰà©à©±à¨ª ਮੌਜੂਦ ਨਹੀਂ" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "ਪੈਕੇਜ %s ਗਰà©à©±à¨ª %s ਵਿੱਚ ਨਿਸ਼ਾਨਬੱਧ ਨਹੀਂ ਹੈ" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "ਪੈਕੇਜ %s ਗਰà©à©±à¨ª %s ਵਿੱਚੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ %s ਨਾਂ ਦਾ ਕੋਈ ਪੈਕੇਜ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "%s ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭਿਆ" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਕà©à¨ ਨਹੀਂ ਦਿੱਤਾ" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "%s ਪੈਕੇਜ ਇੰਸਟਾਲ ਹੈ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਕੋਈ ਪੈਕੇਜ ਉਪਲੱਬਧ ਨਹੀਂ" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "ਪੈਕੇਜ: %s - ਪਹਿਲਾਂ ਹੀ ਟਰਾਂਸੈਕਸ਼ਨ ਸੈੱਟ 'ਚ ਹੈ" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "ਪੈਕੇਜ %s ਨੂੰ %s ਵਲੋਂ ਬਰਤਰਫ਼ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੋ ਪਹਿਲਾਂ ਹੀ ਇੰਸਟਾਲ ਹੈ" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "%s ਪੈਕੇਜ %s ਨਾਲ ਬਦਲ ਦਿੱਤਾ ਗਿਆ, ਪਰ ਬਦਲਿਆ ਗਿਆ ਪੈਕੇਜ ਲੋੜ ਪੂਰੀ ਨਹੀਂ ਕਰਦਾ" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "%s ਪੈਕੇਜ %s ਨਾਲ ਬਰਤਰਫ਼ ਕੀਤਾ ਗਿਆ, %s ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "%s ਪੈਕੇਜ ਪਹਿਲਾਂ ਹੀ ਇੰਸਟਾਲ ਹੈ ਅਤੇ ਨਵਾਂ ਵਰਜਨ ਹੈ" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "%s ਨਾਲ ਮਿਲਦਾ ਪੈਕੇਜ ਪਹਿਲਾਂ ਹੀ ਇੰਸਟਾਲ ਹੈ। ਅੱਪਡੇਟ ਲਈ ਚੈਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "ਹਰ ਚੀਜ਼ ਅੱਪਡੇਟ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "ਪੈਕੇਜ ਪਹਿਲਾਂ ਹੀ ਬਰਤਰਫ਼ ਕੀਤਾ: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "ਪੈਕੇਜ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਰਿਹਾ, ਜੋ ਬਰਤਰਫ਼ ਹੈ: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" "ਪੈਕੇਜ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਇਹ ਪਹਿਲਾਂ ਹੀ ਅੱਪਡੇਟ ਹੈ: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "ਹਟਾਉਣ ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ ਮਿਲਦਾ" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "ਚੱਲਦਾ ਕਰਨਲ ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹੈ: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਤੋਂ %s ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "ਖੋਲà©à¨¹à¨¿à¨† ਨਹੀਂ ਜਾ ਸਕਦਾ: %s। ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹ।" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "%s ਪੜਤਾਲ ਜਾਰੀ: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "deltarpm localinstall ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ: %s। ਛੱਡਿਆ ਜਾਂਦਾ ਹੈ।" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "ਟਰਾਂਸੈਕਸ਼ਨ ਲਈ %s ਪੈਕੇਜ ਜੋੜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। %s: ਢਾਂਚੇ ਨਾਲ ਅਨà©à¨•ੂਲ ਨਹੀਂ ਹੈ" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "ਪੈਕੇਜ %s ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ, ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਇਸ ਦੀ ਬਜਾਠਇਸ ਨੂੰ ਇੰਸਟਾਲ " "ਕਰਨ ਲਈ yum install ਚਲਾਓ।" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "%s ਅੱਡ ਕੀਤਾ" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s ਨੂੰ ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਸੈੱਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "%s ਨੂੰ %s ਦੇ ਲਈ ਅੱਪਡੇਟ ਵਜੋਂ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: ਇੰਸਟਾਲ ਹੋਠਪੈਕੇਜ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤੇ ਜਾਂਦੇ।" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "%s: ਫਾਇਲ ਖੋਲà©à¨¹à©€ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹੈ।" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "ਮà©à©œ-ਇੰਸਟਾਲ ਕਰਨ ਦੌਰਾਨ ਸਮੱਸਿਆ: ਹਟਾਉਣ ਲਈ ਕੋਈ ਪੈਕੇਜ ਨਹੀਂ ਮਿਲਦਾ" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "ਮੜ-ਇੰਸਟਾਲ ਕਰਨ ਦੌਰਾਨ ਸਮੱਸਿਆ: ਇੰਸਟਾਲ ਕਰਨ ਲਈ %s ਪੈਕੇਜ ਨਾਲ ਕੋਈ ਨਹੀਂ ਮਿਲਦਾ" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "ਡਾਊਨਗਰੇਡ ਕਰਨ ਲਈ ਕੋਈ ਪੈਕੇਜ ਉਪਲੱਬਧ ਨਹੀਂ" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "%s ਪੈਕੇਜ ਕਈ ਇੰਸਟਾਲ ਲਈ ਮਨਜ਼ੂਰ ਹੈ, ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "ਉਪਲੱਬਧ ਪੈਕੇਜ ਲਈ ਕੋਈ ਮੇਲ ਨਹੀਂ: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "%s: ਪੈਕੇਜ ਲਈ ਕੇਵਲ ਅੱਪਗਰੇਡ ਉਪਲੱਬਧ" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "ਡਾਊਨਗਰੇਡ ਕਰਨ ਲਈ ਫੇਲà©à¨¹: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG ਕà©à©°à¨œà©€ ਲੈਣ ਲਈ ਫੇਲà©à¨¹: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "%s ਤੋਂ ਗਲਤ GPG ਕà©à©°à¨œà©€: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "ਕà©à©°à¨œà©€ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਫੇਲà©à¨¹ (ਕੋਡ %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "ਕà©à©°à¨œà©€ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਇੰਪੋਰਟ ਕੀਤੀ ਗਈ" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "ਕà©à©°à¨œà©€ ਇੰਪੋਰਟ ਫੇਲà©à¨¹" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "ਢà©à©±à¨•ਵਾਂ ਮਿੱਰਰ ਲੱਭਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "ਪੈਕੇਜ ਡਾਊਨਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀਆਂ ਆਈਆਂ ਹਨ।" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "%s ਵਿੱਚ ਇਹ ਗਲਤੀ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਉ" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "ਟੈਸਟ ਟਰਾਂਸੈਕਸ਼ਨ ਗਲਤੀਆਂ: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "ਲੋਡ ਕੀਤੀਆਂ ਪਲੱਗਇਨ: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "%s: ਨਾਲ ਮਿਲਦੀ ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "\"%s\" ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਰਹੀ, ਕਿਉਂਕਿ ਇਹ ਬੰਦ ਹੈ" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "ਪਲੱਗਇਨ \"%s\" ਇੰਪੋਰਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "\"%s\" ਪਲੱਗਇਨ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ %s ਨਹੀਂ ਲੱਭੀ" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "ਪਲੱਗਇਨ %s ਲਈ ਸੰਰਚਨਾ ਫਾਇਲ ਲੱਭਣ ਲਈ ਅਸਮਰੱਥ" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "ਕਮਾਂਡਾਂ ਲਈ ਰਜਿਸਟਰੇਸਨ ਲਈ ਸਹਾਇਕ ਨਹੀਂ" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s %s ਨਾਲ ਡà©à¨ªà¨²à©€à¨•ੇਟ ਹੈ" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s ਨੂੰ %s ਨਾਲ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "ਮà©à©œ-ਪੈਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../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" yum-3.4.3/po/sr@latin.po0000664000076400007640000021471711602434452014074 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Ažuriram" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "BriÅ¡em" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instaliram" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "PrevaziÄ‘eni" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Ažurirani" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Obrisani" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Instalirani" #: ../callback.py:130 msgid "No header - huh?" msgstr "Nema zaglavlja - hm?" #: ../callback.py:168 msgid "Repackage" msgstr "Ponovno pakovanje" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "GreÅ¡ka: pogreÅ¡no izlazno stanje: %s za %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Obrisano: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Uklanjam" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "ÄŒišćenje" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Naredba „%s“ je već definisana" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Postavljam riznice" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "ÄŒitam metapodatke riznica iz lokalnih datoteka" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "GreÅ¡ka pri podeÅ¡avanju: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "GreÅ¡ka u opcijama: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Instaliran : %s-%s %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Napravio/la: %s %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Objavio/la : %s %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Morate da unesete neku komandu" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Zahtevi diska:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Sažetak greÅ¡aka\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "PokuÅ¡avam da izvrÅ¡im transakciju ali nema Å¡ta da se radi. Izlazim." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Izlazim na komandu korisnika" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Preuzimam pakete:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "GreÅ¡ka pri preuzimanju paketa:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Prijavite ovu greÅ¡ku u %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "IzvrÅ¡avam proveru transakcije" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "GreÅ¡ka pri proveri transakcije:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Provera transakcije je uspela" #: ../cli.py:600 msgid "Running Transaction" msgstr "IzvrÅ¡avam transakciju" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Odbijam da automatski uvezem kljuÄeve kada se izvrÅ¡avanje ne nadgleda.\n" "Za prevazilaženje ovoga koristite „-y“." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Možda ste mislili: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "%s%s%s paket je dostupan, ali nije instaliran." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Ne postoji dostupan paket %s%s%s." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paket(i) koji će se instalirati" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nema Å¡ta da se radi" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paketi oznaÄeni za ažuriranje" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Nema paketa oznaÄenih za ažuriranje" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paketi oznaÄeni za uklanjanje" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Nema paketa oznaÄenih za uklanjanje" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paket(i) koji će se unazaditi" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paket(i) koji će se ponovo instalirati" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Nijedan paket nije dobavljen" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Upozorenje: nije naÄ‘eno podudaranje za %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Nisu pronaÄ‘ena podudaranja" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nisu pronaÄ‘eni paketi za %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "ÄŒistim sve" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "ÄŒistim zaglavlja" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "ÄŒistim pakete" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "ÄŒistim xml metapodatke" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "ÄŒistim keÅ¡ baze podataka" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "ÄŒistim expire-cache metapodatke" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "ÄŒistim dodatke" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Instalirane grupe:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Dostupne grupe:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "UraÄ‘eno" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Upozorenje: grupa %s ne postoji." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Nema dostupnih paketa za instalaciju ili ažuriranje u svim zahtevanim " "grupama" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d paket(i) za instalaciju" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Ne postoji grupa pod imenom %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Nema paketa za uklanjanje iz grupa" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d paket(i) za uklanjanje" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Paket %s je već instaliran, preskaÄem ga" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Uklanjam neuporediv paket %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Ne postoji instaliran drugi %s, dodajem ga u spisak za potencijalnu " "instalaciju" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opcije dodatka" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "GreÅ¡ka komandne linije: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s opcija zahteva argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color prima jedan od sledećih: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "prikaži ovu pomoćnu poruku i izaÄ‘i" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "budi tolerantan na greÅ¡ke" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "mesto datoteke podeÅ¡avanja" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "najduže vreme Äekanja na komandu" #: ../cli.py:1657 msgid "debugging output level" msgstr "nivo izlaznog prikaza za pronalaženje greÅ¡aka" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" "prikazuj duplikate, u riznicama, u komandama za izlistavanje/pretraživanje" #: ../cli.py:1663 msgid "error output level" msgstr "nivo izlaznog prikaza greÅ¡aka" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "tiha radnja" #: ../cli.py:1671 msgid "verbose operation" msgstr "opÅ¡irna radnja" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "odgovori sa da na sva pitanja" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "prikaži Yum verziju i izaÄ‘i" #: ../cli.py:1676 msgid "set install root" msgstr "postavi koreni direktorijum instalacije" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "ukljuÄi jednu ili viÅ¡e riznica (skraćenice su dozvoljene)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "iskljuÄi jednu ili viÅ¡e riznica (skraćenice su dozvoljene)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "izuzmi paket(e) po imenu ili globu" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "iskljuÄi izuzimanje iz glavnog skupa, za riznicu ili za sve" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "ukljuÄi obradu zastarelih paketa u toku ažuriranja" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "iskljuÄi dodatke za Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "iskljuÄi proveru gpg potpisa" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "iskljuÄi dodatke po imenu" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "ukljuÄi dodatke po imenu" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "preskoÄi pakete koji imaju problema sa reÅ¡avanjem zavisnosti" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontroliÅ¡e da li se koristi boja" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "jan" #: ../output.py:307 msgid "Feb" msgstr "feb" #: ../output.py:307 msgid "Mar" msgstr "mar" #: ../output.py:307 msgid "Apr" msgstr "apr" #: ../output.py:307 msgid "May" msgstr "maj" #: ../output.py:307 msgid "Jun" msgstr "jun" #: ../output.py:308 msgid "Jul" msgstr "jul" #: ../output.py:308 msgid "Aug" msgstr "avg" #: ../output.py:308 msgid "Sep" msgstr "sep" #: ../output.py:308 msgid "Oct" msgstr "okt" #: ../output.py:308 msgid "Nov" msgstr "nov" #: ../output.py:308 msgid "Dec" msgstr "dec" #: ../output.py:318 msgid "Trying other mirror." msgstr "PokuÅ¡avam drugi odraz." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Riznica : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Opis : " #: ../output.py:684 msgid "y" msgstr "d" #: ../output.py:684 msgid "yes" msgstr "da" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "ne" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Da li je ovo u redu [d/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grupa: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " IB grupe: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Opis: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Obavezni paketi:" #: ../output.py:791 msgid " Default Packages:" msgstr " Podrazumevani paketi:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Izborni paketi:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Uslovljeni paketi:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paket: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Ne postoje zavisnosti ovog paketa" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " zavisnost: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Nezadovoljena zavisnost" #: ../output.py:901 msgid "Matched from:" msgstr "Povezan iz :" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licenca : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Ime datoteke: %s" #: ../output.py:923 msgid "Other : " msgstr "Ostalo : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Dogodila se greÅ¡ka pri raÄunanju ukupne veliÄine za preuzimanje" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Ukupna veliÄina: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Ukupna veliÄina za preuzimanje: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Instaliram zbog zavisnosti" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Ažuriram zbog zavisnosti" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Uklanjam zbog zavisnosti" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "PreskoÄeno (problemi sa zavisnostima)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paket" #: ../output.py:1075 msgid "Arch" msgstr "Arhitektura" #: ../output.py:1076 msgid "Version" msgstr "Verzija" #: ../output.py:1076 msgid "Repository" msgstr "Riznica" #: ../output.py:1077 msgid "Size" msgstr "VeliÄina" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "Uklonjeno" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Zavisnost uklonjena" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Zavisnost instalirana" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Zavisnost ažurirana" #: ../output.py:1172 msgid "Replaced" msgstr "Zamenjeno" #: ../output.py:1173 msgid "Failed" msgstr "Neuspeh" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dva" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "prekid od strane korisnika" #: ../output.py:1300 msgid "Total" msgstr "Ukupno" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "instaliran" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "obrisan" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "ažuriran" #: ../output.py:2113 msgid "obsoleted" msgstr "prevaziÄ‘en" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> IzvrÅ¡ava se provera transakcije" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Ponovno pokretanje razreÅ¡avanja zavisnosti sa novim promenama." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> ZavrÅ¡eno je razreÅ¡avanje zavisnosti" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> ObraÄ‘ujem zavisnost: %s za paket: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> NerazreÅ¡ena zavisnost: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Sukob pri obradi: %s se sukobi sa %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Popunjavam skup transakcije sa izabranim paketima. Molim vas, saÄekajte." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Preuzimam zaglavlje za %s radi pakovanja u skup transakcije." #: ../utils.py:99 msgid "Running" msgstr "IzvrÅ¡ava se" #: ../utils.py:100 msgid "Sleeping" msgstr "Uspavan" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "Zombi" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Praćen/zaustavljen" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Nepoznat" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Drugi program je: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Drugi program je: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memorija: %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Pokrenut: %s - %s ranije" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Stanje : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Izlazim kada korisnik otkaže" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Izlazim kada se slomi cev" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "GreÅ¡ka: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" " Možete da probate upotrebu --skip-broken opcije radi zaobilaženja problema" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Nepoznata greÅ¡ka(e): izlazni kod: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Zavisnosti su razreÅ¡ene" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "ZavrÅ¡eno!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Morate biti root korisnik da biste izvrÅ¡ili ovu komandu." #: ../yumcommands.py:59 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" "UkljuÄili ste proveru paketa pomoću GPG kljuÄeva. Ovo je dobra stvar. \n" "MeÄ‘utim, nemate instaliran nijedan GPG javni kljuÄ. Morate da preuzmete\n" "kljuÄeve za pakete koje želite da instalirate i instalirate ih.\n" "To možete uraditi izvrÅ¡avanjem komande:\n" " rpm --import public.gpg.key\n" "\n" "\n" "TakoÄ‘e, možete odrediti url za kljuÄ koji želite da koristite\n" "za riznicu u „gpgkey“ opciji u odeljku vezanim za riznice i yum \n" "će ga instalirati za vas.\n" "\n" "Za viÅ¡e informacija kontaktirajte dobavljaÄa vaÅ¡e distribucije ili paketa.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "GreÅ¡ka: potrebno je da dodate spisak paketa za %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "GreÅ¡ka: potrebno je pridružiti stavku" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "GreÅ¡ka: potrebna je grupa ili spisak grupa" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "GreÅ¡ka: clean zahteva opciju: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "GreÅ¡ka: pogreÅ¡an clean argument:%r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ne postoji argument za komandno okruženje" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Ime datoteke je prosleÄ‘eno komandnom okruženju: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" "Ne postoji datoteka %s, koja je prosleÄ‘ena kao argument komandnom okruženju." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" "GreÅ¡ka: viÅ¡e od jedne datoteke je prosleÄ‘eno kao argument komandnom " "okruženju." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKET..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instalirajte paket ili pakete na vaÅ¡ sistem" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Postavljam proces instalacije" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKET...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Ažuriraj paket ili pakete na vaÅ¡em sistemu" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Postavljam proces ažuriranja" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Prikaži detalje o svakom paketu ili grupi paketa" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Instalirani paketi" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Dostupni paketi" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Dodatni paketi" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Ažurirani paketi" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "PrevaziÄ‘eni paketi" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Nedavno dodati paketi" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Ne postoje odgovarajući paketi za izlistavanje" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Izlistaj pakete ili grupe paketa" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Uklonite paket ili pakete sa vaÅ¡eg sistema" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Postavljam proces uklanjanja" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Postavljam proces za grupe" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ne postoji grupa nad kojom se može izvrÅ¡iti komanda" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Izlistaj dostupne grupe paketa" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instalirajte pakete u grupi na vaÅ¡em sistemu" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Uklonite pakete u grupi sa vaÅ¡eg sistema" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Prikaži detalje o grupi paketa" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Napravi keÅ¡ sa metapodacima" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Pravim keÅ¡ datoteke za sve datoteke sa metapodacima." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Ovo može da potraje u zavisnosti od brzine vaÅ¡eg raÄunara" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Napravljen je keÅ¡ sa metapodacima" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Ukloni keÅ¡irane podatke" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "PronaÄ‘i koji paket pruža datu vrednost" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Proverite da li su dostupna ažuriranja paketa" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Pretražite detalje o paketu za zadatu nisku" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Pretražujem pakete: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Ažurirajte pakete uzimajući prevaziÄ‘ene u obzir" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Postavljam proces nadgradnje" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instaliraj lokalni RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Postavljam proces lokalnih paketa" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Odredi koji paketi pružaju datu zavisnost" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Pretražujem pakete u potrazi za zavisnostima:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "IzvrÅ¡avaj interaktivno yum komandno okruženje" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Postavljam yum komandno okruženje" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Izlistaj zavisnosti paketa" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Tražim zavisnosti: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Prikaži podeÅ¡ene softverske riznice" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "ukljuÄena" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "iskljuÄena" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Revizija riznice : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Distro oznake riznice: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Metalink riznice : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Ažurirano : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "repo id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "repo ime" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Prikaži korisnu poruku o upotrebi" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Nije dostupna pomoć za %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "pseudonimi: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "pseudonim: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Postavljam proces ponovne instalacije" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "ponovno instaliram paket" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Postavljam proces unazaÄ‘ivanja" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "unazadi paket" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Neki drugi program trenutno drži yum zakljuÄanim; Äekam da taj program " "izaÄ‘e..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "RazreÅ¡avam zavisnosti" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Izlazim kada korisnik otkaže." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Postavljam TransactionSets pre nego Å¡to se podigne klasa podeÅ¡avanja" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "PogreÅ¡an tsflag u datoteci podeÅ¡avanja: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Pretražujem pkgSack za zavisnost: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "ÄŒlan: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s prebaÄen za instalaciju" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Dodajem paket %s u naÄinu rada %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Uklanjam paket %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s zahteva: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Potreban zahtev je već potražen, obmanjujem" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Potreban zahtev nije ime paketa. Tražim: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Mogući snabdevaÄ: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Režim je %s za snabdevaÄa %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Režim za paket koji snabdeva %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s paket zahteva da %s bude oznaÄen za brisanje" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: menjam %s sa %s radi razreÅ¡avanja zavisnosti." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: ažuriram %s radi razreÅ¡avanja zavisnosti." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Ne mogu da pronaÄ‘em putanju ažuriranja za zavisnost za: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Brzo povezivanje paketa %s kao zahteva za %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s je u pruženim paketima ali je već instaliran, uklanjam ga." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Potencijalno razreÅ¡avanje paketa %s ima noviji primerak u ts-u." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Potencijalno razreÅ¡avanje paketa %s ima instaliran noviji primerak." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s je već u ts-u, preskaÄem ga" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: oznaÄavam %s kao ažuriranje za %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: oznaÄavam %s kao instalaciju za %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Uspeh - prazna transakcija" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Ponovo pokrećem petlju" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "ZavrÅ¡etak procesa zavisnosti" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Uspeh - zavisnosti su razreÅ¡ene" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Proveravam zavisnosti za %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "tražim %s kao zahtev za %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Pokrećem compare_providers() za %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "bolja arhitektura u paketu %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s prevazilazi %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist uporedio %s sa %s na %s\n" " Pobednik: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "zajedniÄki izvorni rpm %s i %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "zajedniÄki prefiks %s izmeÄ‘u %s i %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Najbolji redosled: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Riznici %r nedostaje ime u podeÅ¡avanjima, koristim id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "već inicijalizovani dodaci" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "ÄŒitam lokalni RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Postavljam grupe paketa" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "repo objektu za repo %s nedostaje a _resetSack metoda\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "zbog toga se ovaj repo ne može vratiti na poÄetnu postavku.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "IzgraÄ‘ujem objekat ažuriranja" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() neće biti prisutna u budućim verzijama Yuma.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Dobavljam metapodatke grupe" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Dodajem datoteku grupe iz riznice: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Nije uspelo dodavanje datoteke grupe za riznicu: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Ne postoji grupa koja je dostupna u bilo kojoj riznici" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Uvozim dodatne informacije o spiskovima datoteka" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Ostale su nedovrÅ¡ene transakcije. Možda bi prvo trebalo da izvrÅ¡ite yum-" "complete-transaction da biste ih zavrÅ¡ili." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Paketi su preskoÄeni zbog problema sa zavisnostima:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s iz %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Upozorenje: doÅ¡lo je do greÅ¡ke u skriptici ili neke druge nekritiÄne greÅ¡ke " "tokom transakcije." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Nije uspelo uklanjanje datoteke transakcije %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Nisam u mogućnosti da proverim da li je PID %s aktivan" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Postoji zakljuÄavanje %s: druga kopija se izvrÅ¡ava kao pid %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ne mogu da izvrÅ¡im kontrolu sume" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Paket nema odgovarajući kontrolnu sumu" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "paket nema odgovarajuću vrednost kontrolne sume ili je za %s ukljuÄeno " "keÅ¡iranje" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "koristim lokalni %s umnožak" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Nedovoljna koliÄina prostora u direktorijumu %s za preuzimanje\n" " * slobodno je %s\n" " * potrebno je %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Zaglavlje nije potpuno." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Zaglavlje nije u lokalnom keÅ¡u i samo naÄin rada sa keÅ¡iranjem je ukljuÄen. " "Ne mogu da preuzmem %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Javni kljuÄ za %s nije instaliran" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problem sa otvaranjem paketa %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Javni kljuÄ za %s nije poverljiv" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Paket %s nije potpisan" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Ne mogu da uklonim %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s je uklonjen" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Ne mogu da uklonim %s datoteku %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s datoteka %s je uklonjena" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s datoteke su uklonjene" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Postoji viÅ¡e od jednog identiÄnog slaganja u grupi za %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "NiÅ¡ta se ne slaže sa %s.%s %s:%s-%s iz ažuriranja" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() neće biti prisutna u budućim Yum verzijama." " Umesto nje koristite searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Pretražujem %d pakete" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "tražim paket %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "tražim u unosima datoteka" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "tražim u unosima dostavljaÄa" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Nema dostupnih podataka o grupama za podeÅ¡ene riznice" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Ne postoji grupa pod imenom %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "paket %s nije oznaÄen u grupi %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Dodajem paket %s iz grupe %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Nijedan paket pod imenom %s nije dostupan za instalaciju" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Grupa paketa %s nije naÄ‘ena u packagesacku" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nema pronaÄ‘enih paketa za %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Objekat paketa nije bio primerak objekta paketa" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Nije odreÄ‘eno niÅ¡ta za instalaciju" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Proveravam virtuelnu dostavu ili dostavu datoteke za %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Ne postoji slaganje za argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Paket %s je instaliran i nije dostupan" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Nema paketa dostupnih za instalaciju" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paket: %s - već je u skupu transakcije" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "Paket %s je zamenjen paketom %s, pokuÅ¡avam da namesto instaliram %s" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Već je instalirana najnovija verzija paketa %s" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Paket koji se poklapa sa %s je već instaliran. Proveravam za noviju verziju." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Ažuriram sve" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Ne ažuriram pakete koji su već prevaziÄ‘eni: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Paket je već prevaziÄ‘en: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Ne ažuriram pakete koji su već ažurirani: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Nijedan paket nije odreÄ‘en za uklanjanje" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Ispitujem %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Ne mogu da dodam paket %s u transakciju. Arhitektura nije usaglaÅ¡ena: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Paket %s nije instaliran, ne mogu da ga ažuriram. IzvrÅ¡ite yum instalaciju " "da biste ga instalirali." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Izuzimam %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "OznaÄavam %s za instalaciju" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "OznaÄavam %s kao ažuriranje za %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: ne ažurira instalirani paket." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Ne mogu da otvorim datoteku: %s. PreskaÄem je." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Problem pri ponovnoj instalaciji: nijedan paket nije odreÄ‘en za uklanjanje" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Nema paketa dostupnih za unazaÄ‘ivanje" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Paketu %s su dozvoljene mnogostruke instalacije, preskaÄem ga" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Nema dostupnog odgovarajućeg paketa: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Samo je nadgradnja dostupna za paket: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Dobavljanje GPG kljuÄa nije uspelo: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "RaÅ¡Älanjivanje GPG kljuÄa nije uspelo: kljuÄ nema vrednost %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG kljuÄ na %s (0x%s) je već instaliran" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Nije uspeo uvoz kljuÄa (kod %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "KljuÄ je uspeÅ¡no uvezen" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 kljuÄevi izlistani za „%s“ riznicu su već instalirani ali nisu odgovarajući za ovaj paket.\n" "Proverite da li su podeÅ¡eni odgovarajući URL-ovi kljuÄeva za ovu riznicu." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Uvoz kljuÄa(kljuÄeva) nije pomogao, pogreÅ¡an kljuÄ(kljuÄevi)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG kljuÄ na %s (0x%s) je već uvezen" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Nije uspeo uvoz kljuÄa" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Ne mogu da pronaÄ‘em odgovarajući odraz." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Pojavile su se greÅ¡ke za vreme preuzimanja paketa." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Prijavite ovu greÅ¡ku kod %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "GreÅ¡ke pri proveri transakcije: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "UÄitani dodaci: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ne postoji slaganje za dodatak: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Ne uÄitavam dodatak „%s“ poÅ¡to je iskljuÄen" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Dodatak „%s“ ne može da bude uvezen" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Dodatak „%s“ ne odreÄ‘uje verziju zahtevanog API-a" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Dodatak „%s“ zahteva API %s. Podržani API je %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "UÄitavam „%s“ dodatak" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "U putanji za pretraživanje dodataka postoje dva ili viÅ¡e dodataka pod imenom" " „%s“" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Datoteka podeÅ¡avanja %s nije pronaÄ‘ena" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Ne mogu da pronaÄ‘em datoteku podeÅ¡avanja za dodatak %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registracija komandi nije podržana" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Ponovno pakovanje" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "Zaglavlje se ne može otvoriti ili ne odgovara %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "Nije uspela md5 provera za %s RPM" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Ne mogu da otvorim RPM bazu podataka za potrebe Äitanja. Možda je već u " "upotrebi?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Primljeno je prazno zaglavlje, neÅ¡to je poÅ¡lo naopako" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "OÅ¡tećeno zaglavlje %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "GreÅ¡ka pri otvaranju rpm-a %s - greÅ¡ka %s" yum-3.4.3/po/.gitignore0000664000076400007640000000000511602434452013727 0ustar jamesjames*.mo yum-3.4.3/po/pygettext.py0000664000076400007640000003365411602434452014366 0ustar jamesjames#!/usr/bin/python # Originally written by Barry Warsaw # # minimally patched to make it even more xgettext compatible # by Peter Funk """ pygettext -- Python equivalent of xgettext(1) Many systems (Solaris, Linux, Gnu) provide extensive tools that ease the internationalization of C programs. Most of these tools are independent of the programming language and can be used from within Python programs. Martin von Loewis' work[1] helps considerably in this regard. There's one problem though; xgettext is the program that scans source code looking for message strings, but it groks only C (or C++). Python introduces a few wrinkles, such as dual quoting characters, triple quoted strings, and raw strings. xgettext understands none of this. Enter pygettext, which uses Python's standard tokenize module to scan Python source code, generating .pot files identical to what GNU xgettext[2] generates for C and C++ code. From there, the standard GNU tools can be used. A word about marking Python strings as candidates for translation. GNU xgettext recognizes the following keywords: gettext, dgettext, dcgettext, and gettext_noop. But those can be a lot of text to include all over your code. C and C++ have a trick: they use the C preprocessor. Most internationalized C source includes a #define for gettext() to _() so that what has to be written in the source is much less. Thus these are both translatable strings: gettext("Translatable String") _("Translatable String") Python of course has no preprocessor so this doesn't work so well. Thus, pygettext searches only for _() by default, but see the -k/--keyword flag below for how to augment this. [1] http://www.python.org/workshops/1997-10/proceedings/loewis.html [2] http://www.gnu.org/software/gettext/gettext.html NOTE: pygettext attempts to be option and feature compatible with GNU xgettext where ever possible. However some options are still missing or are not fully implemented. Also, xgettext's use of command line switches with option arguments is broken, and in these cases, pygettext just defines additional switches. Usage: pygettext [options] inputfile ... Options: -a --extract-all Extract all strings -d name --default-domain=name Rename the default output file from messages.pot to name.pot -E --escape replace non-ASCII characters with octal escape sequences. -h --help print this help message and exit -k word --keyword=word Keywords to look for in addition to the default set, which are: %(DEFAULTKEYWORDS)s You can have multiple -k flags on the command line. -K --no-default-keywords Disable the default set of keywords (see above). Any keywords explicitly added with the -k/--keyword option are still recognized. --no-location Do not write filename/lineno location comments. -n --add-location Write filename/lineno location comments indicating where each extracted string is found in the source. These lines appear before each msgid. The style of comments is controlled by the -S/--style option. This is the default. -S stylename --style stylename Specify which style to use for location comments. Two styles are supported: Solaris # File: filename, line: line-number GNU #: filename:line The style name is case insensitive. GNU style is the default. -o filename --output-file=filename Rename the default output file from messages.pot to filename. If filename is `-' then the output is sent to standard out. -p dir --output-dir=dir Output files will be placed in directory dir. -v --verbose Print the names of the files being processed. -V --version Print the version of pygettext and exit. -w columns --width=columns Set width of output to columns. -x filename --exclude-file=filename Specify a file that contains a list of strings that are not be extracted from the input files. Each string to be excluded must appear on a line by itself in the file. If `inputfile' is -, standard input is read. """ import os import sys import time import getopt import string import tokenize __version__ = '1.1' default_keywords = ['_'] DEFAULTKEYWORDS = string.join(default_keywords, ', ') EMPTYSTRING = '' # The normal pot-file header. msgmerge and EMACS' po-mode work better if # it's there. pot_header = '''# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\\n" "PO-Revision-Date: %(time)s\\n" "Last-Translator: FULL NAME \\n" "Language-Team: LANGUAGE \\n" "MIME-Version: 1.0\\n" "Content-Type: text/plain; charset=CHARSET\\n" "Content-Transfer-Encoding: ENCODING\\n" "Generated-By: pygettext.py %(version)s\\n" ''' def usage(code, msg=''): print __doc__ % globals() if msg: print msg sys.exit(code) escapes = [] def make_escapes(pass_iso8859): global escapes if pass_iso8859: # Allow iso-8859 characters to pass through so that e.g. 'msgid # "Höhe"' would result not result in 'msgid "H\366he"'. Otherwise we # escape any character outside the 32..126 range. mod = 128 else: mod = 256 for i in range(256): if 32 <= (i % mod) <= 126: escapes.append(chr(i)) else: escapes.append("\\%03o" % i) escapes[ord('\\')] = '\\\\' escapes[ord('\t')] = '\\t' escapes[ord('\r')] = '\\r' escapes[ord('\n')] = '\\n' escapes[ord('\"')] = '\\"' def escape(s): global escapes s = list(s) for i in range(len(s)): s[i] = escapes[ord(s[i])] return string.join(s, '') def safe_eval(s): # unwrap quotes, safely return eval(s, {'__builtins__':{}}, {}) def normalize(s): # This converts the various Python string types into a format that is # appropriate for .po files, namely much closer to C style. lines = string.split(s, '\n') if len(lines) == 1: s = '"' + escape(s) + '"' else: if not lines[-1]: del lines[-1] lines[-1] = lines[-1] + '\n' for i in range(len(lines)): lines[i] = escape(lines[i]) lineterm = '\\n"\n"' s = '""\n"' + string.join(lines, lineterm) + '"' return s class TokenEater: def __init__(self, options): self.__options = options self.__messages = {} self.__state = self.__waiting self.__data = [] self.__lineno = -1 def __call__(self, ttype, tstring, stup, etup, line): # dispatch self.__state(ttype, tstring, stup[0]) def __waiting(self, ttype, tstring, lineno): if ttype == tokenize.NAME and tstring in self.__options.keywords: self.__state = self.__keywordseen def __keywordseen(self, ttype, tstring, lineno): if ttype == tokenize.OP and tstring == '(': self.__data = [] self.__lineno = lineno self.__state = self.__openseen else: self.__state = self.__waiting def __openseen(self, ttype, tstring, lineno): if ttype == tokenize.OP and tstring == ')': # We've seen the last of the translatable strings. Record the # line number of the first line of the strings and update the list # of messages seen. Reset state for the next batch. If there # were no strings inside _(), then just ignore this entry. if self.__data: msg = string.join(self.__data,"") if not msg in self.__options.toexclude: entry = (self.__curfile, self.__lineno) linenos = self.__messages.get(msg) if linenos is None: self.__messages[msg] = [entry] else: linenos.append(entry) self.__state = self.__waiting elif ttype == tokenize.STRING: self.__data.append(safe_eval(tstring)) # TBD: should we warn if we seen anything else? def set_filename(self, filename): self.__curfile = filename def write(self, fp): options = self.__options timestamp = time.ctime(time.time()) # common header try: sys.stdout = fp # The time stamp in the header doesn't have the same format # as that generated by xgettext... print pot_header % {'time': timestamp, 'version': __version__} for k, v in self.__messages.items(): if not options.writelocations: pass # location comments are different b/w Solaris and GNU: elif options.locationstyle == options.SOLARIS: for filename, lineno in v: d = {'filename': filename, 'lineno': lineno} print '# File: %(filename)s, line: %(lineno)d' % d elif options.locationstyle == options.GNU: # fit as many locations on one line, as long as the # resulting line length doesn't exceeds 'options.width' locline = '#:' for filename, lineno in v: d = {'filename': filename, 'lineno': lineno} s = ' %(filename)s:%(lineno)d' % d if len(locline) + len(s) <= options.width: locline = locline + s else: print locline locline = "#:" + s if len(locline) > 2: print locline print "#, c-format" # TBD: sorting, normalizing print 'msgid', normalize(k) print 'msgstr ""\n' finally: sys.stdout = sys.__stdout__ def main(): global default_keywords try: opts, args = getopt.getopt( sys.argv[1:], 'ad:Ehk:Kno:p:S:Vvw:x:', ['extract-all', 'default-domain=', 'escape', 'help', 'keyword=', 'no-default-keywords', 'add-location', 'no-location', 'output-file=', 'output-dir=', 'style=', 'verbose', 'version', 'width=', 'exclude-file=', ]) except getopt.error, msg: usage(1, msg) # for holding option values class Options: # constants GNU = 1 SOLARIS = 2 # defaults extractall = 0 # FIXME: currently this option has no effect at all. escape = 0 keywords = [] outpath = '' outfile = 'messages.pot' writelocations = 1 locationstyle = GNU verbose = 0 width = 78 excludefilename = '' options = Options() locations = {'gnu' : options.GNU, 'solaris' : options.SOLARIS, } # parse options for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-a', '--extract-all'): options.extractall = 1 elif opt in ('-d', '--default-domain'): options.outfile = arg + '.pot' elif opt in ('-E', '--escape'): options.escape = 1 elif opt in ('-k', '--keyword'): options.keywords.append(arg) elif opt in ('-K', '--no-default-keywords'): default_keywords = [] elif opt in ('-n', '--add-location'): options.writelocations = 1 elif opt in ('--no-location',): options.writelocations = 0 elif opt in ('-S', '--style'): options.locationstyle = locations.get(arg.lower()) if options.locationstyle is None: usage(1, 'Invalid value for --style: %s' % arg) elif opt in ('-o', '--output-file'): options.outfile = arg elif opt in ('-p', '--output-dir'): options.outpath = arg elif opt in ('-v', '--verbose'): options.verbose = 1 elif opt in ('-V', '--version'): print 'pygettext.py (xgettext for Python) %s' % __version__ sys.exit(0) elif opt in ('-w', '--width'): try: options.width = int(arg) except ValueError: usage(1, '--width argument must be an integer: %s' % arg) elif opt in ('-x', '--exclude-file'): options.excludefilename = arg # calculate escapes make_escapes(options.escape) # calculate all keywords options.keywords.extend(default_keywords) # initialize list of strings to exclude if options.excludefilename: try: fp = open(options.excludefilename) options.toexclude = fp.readlines() fp.close() except IOError: sys.stderr.write("Can't read --exclude-file: %s" % options.excludefilename) sys.exit(1) else: options.toexclude = [] # slurp through all the files eater = TokenEater(options) for filename in args: if filename == '-': if options.verbose: print 'Reading standard input' fp = sys.stdin closep = 0 else: if options.verbose: print 'Working on %s' % filename fp = open(filename) closep = 1 try: eater.set_filename(filename) tokenize.tokenize(fp.readline, eater) finally: if closep: fp.close() # write the output if options.outfile == '-': fp = sys.stdout closep = 0 else: if options.outpath: options.outfile = os.path.join(options.outpath, options.outfile) fp = open(options.outfile, 'w') closep = 1 try: eater.write(fp) finally: if closep: fp.close() if __name__ == '__main__': main() yum-3.4.3/po/nb.po0000664000076400007640000021542611602434452012715 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nb\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Oppdaterer" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Fjerner" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installerer" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "UtgÃ¥tt" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Oppdatert" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Fjernet" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Installert" #: ../callback.py:130 msgid "No header - huh?" msgstr "Intet hode - merksnodig?!" #: ../callback.py:168 msgid "Repackage" msgstr "Pakk pÃ¥ nytt" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Feil: ugyldig tilstand ut: %s for %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Fjernet: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Fjerner" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Rydder opp" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Kommando «%s» er allerede definert" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Konfigurerer lagre" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Leser inn data om lager fra lokale filer" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Feil i konfigurasjon: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Feil i flagg: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "Installert: %s-%s til %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Bygd : %s til %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "Sendt inn: %s til %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Du mÃ¥ oppgi en kommando" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Krav til disk:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Sammendrag for feil\n" "---------------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Prøver Ã¥ kjøre transaksjonen, men den er tom. Avslutter." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Avslutter pÃ¥ grunn av kommando fra bruker" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Laster ned pakker:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Kunne ikke laste ned pakkene:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Vennligst rapporter denne feilen i %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Kjører test pÃ¥ transaksjonen" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Feil ved test av transaksjonen:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Test av transaksjonen var vellykket" #: ../cli.py:600 msgid "Running Transaction" msgstr "Utfører transaksjonen" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Nekter Ã¥ importere nøkler automatisk ved kjøring uten oppsyn.\n" "Bruk «-y» for Ã¥ overstyre." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Du mente kanskje:" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Pakken(e) %s%s%s er tilgjengelig, men ikke installert." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Pakke %s%s%s er ikke tilgjengelig." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Pakke(r) som skal installeres" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Ingenting Ã¥ gjøre" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pakker merket for oppdatering" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Ingen pakker merket for oppdatering" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pakker merket for fjerning" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Ingen pakker merket for fjerning" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Pakke(r) som skal nedgraderes" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (fra %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Den installerte pakken %s%s%s%s er ikke tilgjengelig." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Pakke(r) som skal ominstalleres" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Ingen pakker ble tilbudt" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Advarsel: Ingen treff funnet for: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Fant ingen treff" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Ingen pakke ble funnet for %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Rydder opp alt" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Rydder opp pakkehoder" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Rydder opp pakker" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Rydder opp i XML-metadata" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Rydder opp i mellomlager for database" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Rydder opp i metadata for expire-cache" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Rydder opp i programtillegg" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Installerte grupper:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Tilgjengelig grupper:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Ferdig" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Advarsel: Gruppe %s eksisterer ikke." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Ingen pakker tilgjengelig for installering eller oppdatering i aktuelle " "grupper" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pakke(r) vil bli installert" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Det finnes ingen gruppe med navn %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Ingen pakker Ã¥ fjerne fra grupper" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d pakker vil bli fjernet" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Pakke %s er allerede lagt inn, hopper over" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Vraker pakke som ikke kan sammenlignes %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Ingen annen %s er lagt inn, legger til pakke til liste over potensielle " "pakker" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Programtilleggs valg" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Feil med kommandolinje: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: flagg %s krever et argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color tar et av: auto, alltid, aldri" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "vis denne hjelpteksten og avslutt" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "vær tolerant ved feil" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "plassering av konfigurasjonsfil" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maksimaltid for Ã¥ vente pÃ¥ kommando" #: ../cli.py:1657 msgid "debugging output level" msgstr "nivÃ¥ for tilbakemeldinger ved avlusing" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "vis duplikater i lager og i kommandoer for Ã¥ liste/søke i pakker" #: ../cli.py:1663 msgid "error output level" msgstr "mengde tilbakemelding ved feil" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "stille operasjon" #: ../cli.py:1671 msgid "verbose operation" msgstr "vis ekstra informasjon" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "svar Ja til alle spørsmÃ¥l" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "vis Yum-versjon og avslutt" #: ../cli.py:1676 msgid "set install root" msgstr "sett rot for installasjonen" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "legger til et eller flere lager (jokertegn er tillatt)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "slÃ¥ av et eller flere lager (jokertegn er tillatt)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "overse pakke(r) ved navn eller mønster" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "fjerner ekskludering av pakker, for et lager eller alle pakker" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "ta med foreldede pakker i beregningen ved oppdatering" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "ikke bruk programtilleggene til Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "ikke sjekk GPG-signaturer" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "slÃ¥ av tillegg til yum etter navn" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "slÃ¥ av programtillegg til yum etter navn" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "hopp over pakker som har problemer med avhengigheter" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontroller om farger er brukt" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "jan" #: ../output.py:307 msgid "Feb" msgstr "feb" #: ../output.py:307 msgid "Mar" msgstr "mar" #: ../output.py:307 msgid "Apr" msgstr "apr" #: ../output.py:307 msgid "May" msgstr "mai" #: ../output.py:307 msgid "Jun" msgstr "jun" #: ../output.py:308 msgid "Jul" msgstr "jul" #: ../output.py:308 msgid "Aug" msgstr "aug" #: ../output.py:308 msgid "Sep" msgstr "sep" #: ../output.py:308 msgid "Oct" msgstr "okt" #: ../output.py:308 msgid "Nov" msgstr "nov" #: ../output.py:308 msgid "Dec" msgstr "des" #: ../output.py:318 msgid "Trying other mirror." msgstr "Prøver et annet speil." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Arkiv : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "Nettadresse : %s" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Beskrivelse : " #: ../output.py:684 msgid "y" msgstr "j" #: ../output.py:684 msgid "yes" msgstr "ja" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "nei" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Er dette ok [j/N]:" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Gruppe:%s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "GruppeId:%s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Beskrivelse: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "Obligatoriske pakker:" #: ../output.py:791 msgid " Default Packages:" msgstr "Standard pakker:" #: ../output.py:792 msgid " Optional Packages:" msgstr "Valgfrie pakker:" #: ../output.py:793 msgid " Conditional Packages:" msgstr "Betingede pakker:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "pakke: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Ingen avhengigheter for denne pakka" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " avhengighet: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " avhengighet som ikke kunne tilfredstilles" #: ../output.py:901 msgid "Matched from:" msgstr "Treff fra:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Lisens : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Filnavn : %s" #: ../output.py:923 msgid "Other : " msgstr "Andre ting : %s" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Kunne ikke finne ut størrelse pÃ¥ det som skal hentes ned" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Totale størrelse: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Totale størrelse pÃ¥ pakker som hentes: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "Ominstallerer" #: ../output.py:1040 msgid "Downgrading" msgstr "Nedgraderer" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Legges inn pÃ¥ grunn avhengigheter" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Oppdateres pÃ¥ grunn avhengigheter" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Fjernes pÃ¥ grunn avhengigheter" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Hoppet over (problemer med avhengigheter)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Pakke" #: ../output.py:1075 msgid "Arch" msgstr "Arkitektur" #: ../output.py:1076 msgid "Version" msgstr "Versjon" #: ../output.py:1076 msgid "Repository" msgstr "Pakkeoversikt" #: ../output.py:1077 msgid "Size" msgstr "Størrelse" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Transaksjonsammendrag\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "Fjernet" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Fjernet pÃ¥ grunn avhengighet" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Lagt inn pÃ¥ grunn av avhengighet" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Oppdatert pÃ¥ grunn avhengighet" #: ../output.py:1172 msgid "Replaced" msgstr "Erstattet" #: ../output.py:1173 msgid "Failed" msgstr "Feilet" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "to" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " PÃ¥gÃ¥ende nedlastning er avbrutt, %s avbryt (ved Ã¥ trykke Ctrl-C) %s ganger til innen %s%s%s sekunder\n" "for Ã¥ avslutte.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "avbrutt av bruker" #: ../output.py:1300 msgid "Total" msgstr "Totalt" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "installert" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "fjernet" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "oppdatert" #: ../output.py:2113 msgid "obsoleted" msgstr "foreldet" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Utfører sjekk av transaksjonen" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Starter løsing av avhengigheter pÃ¥ nytt med endringer" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Alle avhengigheter er løst" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Beregner avhengighet: %s for pakke: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Avhengigheter som ikke kunne bli tilfredstilt: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Beregner konflikter: %s er i konflikt med %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Fyller transaksjonen med valgte pakker. Vennligst vent." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Henter ned filhode for pakke %s for Ã¥ fylle transaksjonen." #: ../utils.py:99 msgid "Running" msgstr "Kjører" #: ../utils.py:100 msgid "Sleeping" msgstr "Sover" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Sporet/Stoppet" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Ukjent" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Det andre programmet er: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Det andre programmet er: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Minne : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Startet for %s - %s siden" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Status : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Avslutter etter ønske" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Avslutter pÃ¥ grunn av brutt rør" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Feil: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "Du kan prøve Ã¥ bruke --skip-broken for Ã¥ jobbe deg rundt problem" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Ukjent feil: feilkode: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Alle avhengigheter er løst" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Ferdig!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Du mÃ¥ være rootbruker for Ã¥ utføre denne kommandoen." #: ../yumcommands.py:59 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" "Du har valgt Ã¥ sjekke pakkene ved hjelp av GPG-nøkler. Det er fornuftig.\n" "Du har imidlertid ingen offentlige GPG-nøkler installert\n" "Du mÃ¥ hente ned og legge inn nøklene. Du kan legge dem inn med kommandoen:\n" "\n" " rpm --import public.gpg.key\n" "\n" "Et annet og bedre alternativ er Ã¥ oppgi URL til de nøklene du vil bruke.\n" "Bruk opsjonen 'gpgkey' for hvert lager for Ã¥ ta dette i bruk.\n" "\n" "Kontakt din distribusjon eller pakkeansvarlig for mer informasjon.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Feil: du mÃ¥ oppgi en liste med pakker som skal %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Feil: trenger noe Ã¥ sammenligne med" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Feil: trenger en gruppe eller en liste med grupper" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Feil: clean trenger minst et argument: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Feil: ugyldig argument gitt til kommandoen clean: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ingen argumenter ble gitt til kommandoen shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Følgende filnavn ble sendt til skallet: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" "Filen %s som ble gitt som argument til kommandoen shell eksisterer ikke." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Feil: mer enn en fil ble gitt som argument til kommandoen shell." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKKE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Legg inn en eller flere pakker pÃ¥ systemet" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Forberedelser for installasjon" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKKE...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Oppdater en eller flere pakker pÃ¥ systemet" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Forberedelser for oppdatering" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Viser detaljer om en pakke eller en gruppe av grupper" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Pakker som er installert" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Tilgjengelige pakker" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Tilleggspakker" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Oppdaterte pakker" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Utdaterte pakker" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Pakker som nylig er lagt til" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Ingen passende pakker Ã¥ liste opp" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Lag en liste med pakker eller grupper av pakker" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Fjern en eller flere pakker fra systemet" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Klargjør for fjerning av pakker" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Klargjør grupper med pakker" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ingen gruppe er valgt for aktuell kommando" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Lag liste over tilgjengelige pakkegrupper" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Legger inn pakkene i en gruppe pÃ¥ systemet" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Fjern pakkene i en gruppe fra systemet" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Viser detaljer om en gruppe av pakker" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Lag mellomlager med metadata" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Lager mellomlager for samtlige filer med metadata." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Dette kan en stund avhengig av hvor rask datamaskinen er" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Mellomlager er ferdig lagd" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Fjern mellomlager med metadata" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Finn hvilken pakke som inneholder etterspurt verdi" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Se etter tilgjengelige pakkeoppdateringer" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Søker etter oppgitt streng i pakkedetaljene" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Søker i pakker: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Oppdater pakker og ta hensyn til pakker som blir utdatert" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Klargjør for oppdatering" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Legger inn en RPM fra filsystemet" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Klargjøring for pakker pÃ¥ lokalt filsystem" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Finner hvilken pakke som tilbyr den gitte avhengigheten" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Søker i pakker etter avhengighet:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Kjører det interaktive Yum-skallet" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Klargjør Yum-skallet" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Vis avhengigheter for en pakke" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Finner avhengigheter: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Viser de pakkeoversiktene som er satt opp" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "aktiv" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "inaktiv" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Arkivrevisjon: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Arkivdistribusjonsmerkelapper:" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Arkivmetalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Oppdatert : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "arkiv id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "arkiv navn" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Viser en hjelpetekst" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Ingen hjelp er tilgjengelig for %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "alias:" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias:" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Klargjør for Ã¥ legge inn pakke(r) pÃ¥ nytt" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "ominstaller en pakke " #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Klargjør for oppdatering" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "nedgrader en pakke" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Vi sen versjon for maskinen og/eller tilgjengelige arkiver" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installert:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Tilgjengelig:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Et annet program holder en fillÃ¥s for Yum, venter til fillÃ¥sen frigjøres..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Løser avhengigheter" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Avslutter etter ønske" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() vil forsvinne i en kommende utgave av Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Setter opp transaksjons-sett før config klassen er klar" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Ugyldig tsflag in konfigurasjonsfil: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Søker i pkgSack etter avhengighet: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Medlem: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s ble omdannet til installering" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Legger til pakke %s in modus %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Fjerner pakke %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s krever: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Nødvendig avhengighet har allerede blitt plukket opp, jukser" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Nødvendig avhengighet er ikke et navn pÃ¥ pakke. Ser etter: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Potensiell tilbyder: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Modus er %s for tilbyder av %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Modus for pakke som tilbyr %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: pakke %s som er nødvendig for %s vil bli fjernet" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: Bytter ut %s med %s for Ã¥ løse opp i avhengighet." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Oppdaterer %s for Ã¥ løse opp i avhengighet." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Kunne ikke finne mÃ¥te Ã¥ oppdatere sti for avhengighet: %s." #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Hurtigpasset %s for Ã¥ tilfredstille %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s tilbyr pakker, men er allerede installert, fjerner denne." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" "Pakke %s som potensielt løser opp avhengighet har nyere instans in ts." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Pakke %s som potensielt løser opp avhengighet er allerde installert." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s er allerde i ts, hopper over denne" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Setter opp %s som oppdatering av %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Setter opp %s som pakke for installering av %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Suksess - transaksjonen er tom" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Starter sløyfe pÃ¥ nytt" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Beregning av avhengighet avsluttes" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Suksess - alle avhengigheter er tilfredstilt" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Sjekker avhengigheter for %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "leter etter %s som kreves av %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Kjører compare_providers() for %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "bedre arch i po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s faser ut %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist sammenlignet %s med %s pÃ¥ %s\n" " Vinner: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "felles kilderpm %s og %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "felles prefiks fra %s mellom %s og %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Beste rekkefølge: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() vil forsvinne i en kommende utgave av Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Pakkelager %r mangler navn i konfigurasjonsfilen(e), bruker id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "tillegg til yum er allerede initiert" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() vil forsvinne i en kommende utgave av Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Leser inn lokal RPM-database" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() vil forsvinne i en kommende utgave av Yum\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() vil forsvinne i en kommende utgave av Yum\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Lager sekker med pakker" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "objekt for pakkelager %s mangler metoden _resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "derfor kan ikke denne pakkeoversikten nullstilles\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() vil forsvinne i en kommende utgave av Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Bygger opp oppdateringsobjekt" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() vil forsvinne i en kommende utgave av Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Henter metadata for grupper" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Legger til gruppefil fra pakkeoversikt: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Kunne ikke legge til gruppefil for pakkeoversikt: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Ingen grupper tilgjengelig fra noen lagre" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Henter mer informasjon om fil-lister" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Programmet %s%s%s er funnet i yum-utils pakken." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Det er uferdige transaksjoner igjen. Du vil kanskje vurdere Ã¥ kjøre yum-" "complete-transaction først for Ã¥ gjøre dem ferdig." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Pakker som ble oversett pÃ¥ grunn av problemer med avhengigheter:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s fra %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Advarsel: et scriptlet eller andre ikkekritiske feil oppstod under " "transaksjonen." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Kunne ikke fjerne transaksjonsfil %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s var ment til Ã¥ bli installert men er ikke!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s var ment til Ã¥ bli fjernet men er ikke!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Kunne ikke sjekke om PID %s er aktiv" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Det fins allerede en lÃ¥sfil %s: en annen Yum kjører med PID %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Kunne ikke beregne sjekksum" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Pakken har ikke korrekt sjekksum" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "sjekksummen til pakken er feil, men mellomlagring er satt pÃ¥ for %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "bruker lokal kopi av %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Det er ikke nok ledig plass i nedlastingskatalogen %s\n" " * ledig %s \n" " * trenger %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Filhode er ikke fullstendig." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Filhode er ikke tilgjengelig lokalt og mellomlager-modus er aktivert Kan " "ikke hente ned %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Offentlig nøkkel for %s er ikke lagt inn" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problem ved Ã¥pning av pakke %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Offentlig nøkkel %s er ikke til Ã¥ stole pÃ¥" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Pakken %s er ikke signert" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Kan ikke fjerne %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s fjernet" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Kan ikke fjerne %s fra fil %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s fil %s er fjernet" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s filer fjernet" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Mer enn ett identisk passende treff i sekken %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Ingenting passer %s.%s %s:%s-%s fra oppdatering" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() vil forsvinne i en kommende utgave av Yum.\n" "Bruk heller searchGenerator()\n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Søker etter %d pakker" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "søker etter pakke %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "søker i filoversikt" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "søker i oppføringer av tilbud" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Ingen gruppedata tilgjengelig for konfigurerte pakkelager" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Det eksisterer ingen gruppe med navn %s " #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "pakke %s var ikke med i gruppe %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Legger til pakke %s fra gruppe %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Ingen pakke med navn %s er tilgjendelig for installering" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Pakke tuppel %s ble ikke funnet i sekken med pakker" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Ingen pakke for %s er funnet" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Pakkeobjekt var ikke en pakkeobjektinstans" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Ingenting oppgitt for installasjon" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Sjekker for virtuelle tilbydere eller tilbydere av filer for %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Ingen treff for argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Pakke %s er installert og ikke tilgjengelig" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Ingen pakke(r) er tilgjengelig for installering" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Pakke: %s - allerede i transaksjonensettet" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Pakke %s er foreldet av %s som allerede er installert" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "Pakke %s er foreldet av %s, prøver Ã¥ installere %s isteden." #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Pakke %s er allerede installert i siste versjon" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "Pakke med treff pÃ¥ %s er allerede lagt inn. Ser etter oppdatering" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Oppdaterer alt" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Vil ikke oppdatere pakke som allerede er foreldet: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Pakka er allerede foreldet: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Oppdatere ikke pakken som allerede er oppdatert: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Kunne ikke finne noen passende pakke for fjerning" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Undersøker: %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Kan ikke legge til pakke %s til transaksjonen. Det er ikke en kompatibel " "arkitektur: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Pakka %s er ikke installert, sÃ¥ den kan ikke oppdateres. Bruk kommandoen yum" " install for Ã¥ legge den inn." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Ekskluderer %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Setter av %s for kommende installering" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Setter av %s som en oppdatering av %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: vil ikke oppdatere installert pakke." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Kunne ikke Ã¥pne fil: %s. Hopper over." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Problem ved reinstall: kunne ikke finne passende pakke og fjerne" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "Problem i ominstalleringen: ingen pakke %s funnet for installering." #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Ingen pakke(r) er tilgjengelig for nedgradering" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Pakke %s er tillatt flere installeringer, hopper over." #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ingen treff for tilgjengelig pakke: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Bare oppgraderinger tilgjengelig pÃ¥ pakke: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Henting av GPG-nøkkel feilet: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Analyse av GPG-nøkkel feilet: nøkkelen har ikke verdi %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG-nøkkel ved %s (0x%s) er allerede lagt inn" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Import av nøkkel feilet (kode %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Nøkler ble lagt inn med suksess" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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-nøkkelen for pakkeoversikten %s er allerede lagt inn, men\n" "nøkkelen passer ikke til den aktuelle pakka fra samme oversikt.\n" "Sjekk at korrekt URL (gpgkey opsjonen) er oppgitt for denne\n" "pakkeoversikten." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Import av nøkler hjalp ikke, feil nøkler?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG-nøkkel ved %s (0x%s) er allerede importert" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Import av nøkkel feilet" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Kunne ikke finne passende filspeil" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Det oppstod feil ved nedlastning av pakker." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Vennligst send en feilrapport til %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Feil ved testtransaksjon: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Tillegg som er i bruk:" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Intet programtilleggs treff for: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Laster ikke programtillegg \"%s\", siden den er deaktivert" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Programtillegg \"%s\" kan ikke bli importert" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Tillegg \"%s\" tilfredstiller ikke versjonskravene fra Yum." #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Tillegg \"%s\" krever API versjon: %s. Men støttet API versjon er %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Laster tillegg \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "Det finnes to eller flere tillegg med navn «%s» i søkestien for tillegg" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Konfigurasjonsfila %s ble ikke funnet" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Kunne ikke finne konfigurasjon for tillegg %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registering av kommandoer er ikke støttet" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Pakker pÃ¥ nytt" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "Kunne ikke Ã¥pne filhode eller filhode %s passet ikke til %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM pakke %s feilet i sjekk av md5-sum" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "Kunne ikk Ã¥pen RPM database for lesing. I bruk av noen andre?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Filhode var tomt, noe har gÃ¥tt galt" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Filhode til %s er ødelagt" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Kunne ikke Ã¥pen rpm pakke %s - feilen er %s" yum-3.4.3/po/Makefile0000664000076400007640000000343511602434452013411 0ustar jamesjamesINSTALL= /usr/bin/install -c INSTALL_PROGRAM= ${INSTALL} INSTALL_DATA= ${INSTALL} -m 644 INSTALLNLSDIR=$(DESTDIR)/usr/share/locale top_srcdir = "." MSGMERGE = intltool-update -x --gettext-package=$(NLSPACKAGE) --dist NLSPACKAGE = yum CATALOGS = $(shell ls *.po) FMTCATALOGS = $(patsubst %.po,%.mo,$(CATALOGS)) PYFILES = $(wildcard ../*.py) $(wildcard ../yum/*.py) $(wildcard ../rpmUtils/*.py) POTFILES = $(PYFILES) all: $(NLSPACKAGE).pot $(FMTCATALOGS) POTFILES.in: echo '[encoding: UTF-8]' > $@ for file in $(POTFILES); do \ echo "$${file#../}" ; \ done >> $@ $(NLSPACKAGE).pot: $(POTFILES) POTFILES.in intltool-update --gettext-package=$(NLSPACKAGE) --pot update-po: Makefile $(NLSPACKAGE).pot refresh-po refresh-po: Makefile POTFILES.in catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ lang=`basename $$cat .po`; \ cp $$lang.po $$lang.old.po; \ if $(MSGMERGE) $$lang ; then \ rm -f $$lang.old.po ; \ echo "$(MSGMERGE) of $$lang succeeded" ; \ else \ echo "$(MSGMERGE) of $$lang failed" ; \ mv $$lang.old.po $$lang.po ; \ fi \ done report: @for cat in *.po ; do \ echo -n "$$cat: "; \ msgfmt --statistics -o /dev/null $$cat; \ done clean: @rm -fv *mo *~ .depend *.autosave distclean: clean rm -f *mo .depend Makefile $(NLSPACKAGE).pot POTFILES.in depend: install: all mkdir -p $(PREFIX)/$(INSTALLNLSDIR) for n in $(CATALOGS); do \ l=`basename $$n .po`; \ mo=$$l.mo; \ if [ ! -f $$mo ]; then continue; fi; \ $(INSTALL) -m 755 -d $(PREFIX)/$(INSTALLNLSDIR)/$$l; \ $(INSTALL) -m 755 -d $(PREFIX)/$(INSTALLNLSDIR)/$$l/LC_MESSAGES; \ $(INSTALL) -m 644 $$mo \ $(PREFIX)/$(INSTALLNLSDIR)/$$l/LC_MESSAGES/$(NLSPACKAGE).mo; \ done %.mo: %.po msgfmt -o $@ $< -c test: for n in $(CATALOGS); do \ msgfmt -c $$n; \ done yum-3.4.3/po/yum.pot0000664000076400007640000016026511602434452013314 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid "" " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s " "seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum --enablerepo=" "%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of " "Yum. Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they " "are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "" "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/de.po0000664000076400007640000023005711602434452012703 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Laurin , 2011 # Vinzenz Vietzke , 2011 # Hendrik Richter , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: German (http://www.transifex.net/projects/p/yum/team/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Aktualisieren" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Löschen" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installieren" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Veraltet" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Aktualisiert" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Gelöscht" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Installiert" #: ../callback.py:130 msgid "No header - huh?" msgstr "Kein Header - huh?" #: ../callback.py:168 msgid "Repackage" msgstr "Neu verpacken" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Fehler: Ungültiger Ausgabe-Zustand: %s für %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Gelöscht: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Entfernen" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Aufräumen" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Befehl \"%s\" ist bereits definiert" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Repositories werden eingerichtet" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Lese Repository-Metadaten aus lokalen Dateien ein" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Konfigurationsfehler: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Optionenfehler: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Installiert: %s-%s am %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Gebaut : %s am %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Übermittelt: %s am %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Sie müssen irgendeinen Befehl eingeben" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Kein solcher Befehl: %s. Bitte %s --help verwenden." #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Festplattenplatz-Anforderungen:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" " Mindestens %dMB zusätzlicher Speicherplatz wird auf dem Dateisystem %s " "benötigt.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Fehler-Zusammenfassung\n" "----------------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Versuche Transaktion auszuführen, aber es ist nichts zu tun. Beende." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Beende nach Befehl des Benutzers" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Lade Pakete herunter:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Fehler beim Herunterladen der Pakete:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" "FEHLER Sie müssen RPM aktualisieren, damit es mit Folgendem umgehen kann:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM muss aktualisiert werden" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Bitte melden Sie diesen Fehler unter %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Führe Verarbeitungstest durch" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Prüffehler bei Verarbeitung:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Verarbeitungstest erfolgreich" #: ../cli.py:600 msgid "Running Transaction" msgstr "Führe Verarbeitung durch" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Verweigere automatischen Import der Schlüssel, wenn unbeaufsichtigt ausgeführt.\n" "Benutze \"-y\" zum Überschreiben." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Meinten Sie vielleicht:" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Paket(e) %s%s%s verfügbar, aber nicht installiert." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Kein Paket %s%s%s verfügbar." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paket(e) zum Installieren" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nichts zu tun" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d Pakete zur Aktualisierung markiert" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Keine Pakete für die Aktualisierung markiert" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d Pakete für die Entfernung markiert" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Keine Pakete für die Entfernung markiert" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paket(e) zum Downgrade" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (von %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Installiertes Paket %s%s%s%s nicht verfügbar." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paket(e) zum Neuinstallieren" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Keine Pakete bereitgestellt" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Treffer: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Warnung: Keine Übereinstimmung gefunden für: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Keine Übereinstimmungen gefunden" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Kein Paket gefunden für %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Räume Repos auf:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Räume alles auf" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Räume Header auf" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Räume Pakete auf" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Räume XML-Metadaten auf" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Räume Datenbank-Speicher auf" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Räume Metadaten für abgelaufene Caches auf" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Räume Plugins auf" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Installierte Gruppen:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Verfügbare Gruppen:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Fertig" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Warnung: Gruppe %s existiert nicht." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Keine Pakete in irgendeiner Gruppe verfügbar zum Installieren oder " "Aktualisieren" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d Paket(e) zum Installieren" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Es existiert keine Gruppe mit dem Namen %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Keine Pakete zum Entfernen aus dem Gruppen gefunden" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d Paket(e) zum Entfernen" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Paket %s ist bereits installiert, überspringen" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Verwerfe nicht vergleichbare Pakete %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Kein anderes %s installiert, füge es zur Liste für eine potentielle " "Installation hinzu" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Plugin-Optionen" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Kommandozeilen-Fehler: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s Option benötigt ein Argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color kann einen der folgenden Werte haben: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "Hilfeinformation anzeigen und beenden" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "fehlertolerant sein" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" "laufe komplett aus dem Zwischenspeicher, aktualisiere Zwischenspeicher nicht" #: ../cli.py:1652 msgid "config file location" msgstr "Ort der Konfigurationsdatei" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maximale Befehlswartezeit" #: ../cli.py:1657 msgid "debugging output level" msgstr "Debugging-Ausgabe-Stufe" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "Duplikate, in Repos und in Listen/Suchen-Befehlen, anzeigen" #: ../cli.py:1663 msgid "error output level" msgstr "Fehler-Ausgabe-Stufe" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "Stufe der Debugging-Ausgabe für rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "Stiller Betrieb" #: ../cli.py:1671 msgid "verbose operation" msgstr "Wortreicher Betrieb" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "Beantwortet alle Fragen mit 'ja'" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "Yum-Version anzeigen und Programm beenden" #: ../cli.py:1676 msgid "set install root" msgstr "Wurzel-Installationsverzeichnis setzen" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "aktiviere ein oder mehrere Repositories (Wildcards erlaubt)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "deaktiviere ein oder mehrere Repositories (Wildcards erlaubt)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "schliesse Paket(e) nach Namen oder global aus" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "deaktiviere Ausschluss von 'main', einem Repository oder allem" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "aktiviere veraltetes Verarbeiten während Aktualisierung" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "deaktiviere Yum-Plugins" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "deaktiviere GPG-Signatur-Prüfung" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "deaktiviere Plugins nach Namen" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "aktiviere Plugins nach Namen" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "überspringe Pakete mit Abhängigkeitsauflösungsproblemen" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontrolliert, ob Farbe benutzt wird" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "Jan" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mär" #: ../output.py:307 msgid "Apr" msgstr "Apr" #: ../output.py:307 msgid "May" msgstr "Mai" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Aug" #: ../output.py:308 msgid "Sep" msgstr "Sep" #: ../output.py:308 msgid "Oct" msgstr "Okt" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Dez" #: ../output.py:318 msgid "Trying other mirror." msgstr "Versuche anderen Spiegel-Server." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Name : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Architektur : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Version : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Ausgabe : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Größe : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Aus repo : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Übermittler : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Übermittlungszeit : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Build-Zeit : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Installationszeit: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Installiert von: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Verändert von : %s" #: ../output.py:612 msgid "Summary : " msgstr "Zusammenfassung : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Lizenz : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Beschreibung : " #: ../output.py:684 msgid "y" msgstr "j" #: ../output.py:684 msgid "yes" msgstr "ja" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "nein" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Ist dies in Ordnung? [j/N] :" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Gruppe: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Gruppen-ID: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Beschreibung: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Obligatorische Pakete:" #: ../output.py:791 msgid " Default Packages:" msgstr " Standard-Pakete:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Optionale Pakete:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Zwangsbedingte Pakete:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "Paket: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Keine Abhängigkeiten für dieses Paket" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " Abhängigkeit: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Nicht erfüllte Abhängigkeit" #: ../output.py:901 msgid "Matched from:" msgstr "Übereinstimmung von:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Lizenz : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Dateiname : %s" #: ../output.py:923 msgid "Other : " msgstr "Andere : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Fehler beim Berechnen der Gesamtgröße der Downloads" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Gesamtgröße: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Gesamte Downloadgröße: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Installationsgröße: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Fehler beim Berechnen der Installationsgröße" #: ../output.py:1039 msgid "Reinstalling" msgstr "Neuinstallieren" #: ../output.py:1040 msgid "Downgrading" msgstr "Downgrading" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Als Abhängigkeiten installiert" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Aktualisiert für Abhängigkeiten" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Entfernt für Abhängigkeiten" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Übersprungen (Abhängigkeitsprobleme)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Nicht installiert" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paket" #: ../output.py:1075 msgid "Arch" msgstr "Arch" #: ../output.py:1076 msgid "Version" msgstr "Version" #: ../output.py:1076 msgid "Repository" msgstr "Repository" #: ../output.py:1077 msgid "Size" msgstr "Größe" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " ersetzt %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Vorgangsübersicht\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "%5.5s Paket(e) installieren\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "%5.5s Paket(e) aktualisieren\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "%5.5s Paket(e) entfernen\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "%5.5s Paket(e) reinstallieren\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "Entfernt" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Abhängigkeiten entfernt" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Abhängigkeit installiert" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Abhängigkeit aktualisiert" #: ../output.py:1172 msgid "Replaced" msgstr "Ersetzt " #: ../output.py:1173 msgid "Failed" msgstr "Fehlgeschlagen" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "zwei" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Aktueller Download abgebrochen, %s unterbrechen Sie (Ctrl-c) erneut %s innerhalb %s%s%s Sekunden\n" "zum Beenden.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "Benutzer-Unterbrechung" #: ../output.py:1300 msgid "Total" msgstr "Gesamt" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "System" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Schlechte Transaktions-IDs oder Paket(e) angegeben" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Angemeldeter Benutzer" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Datum und Zeit" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Aktion(en)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Verändert" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Keine Transaktions-ID angegeben" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Schlechte Transaktions-ID angegeben" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Angebene Transaktions-ID nicht gefunden" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Mehr als eine Transaktions-ID gefunden!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Keine Transaktions-ID oder Paket angegeben" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "Älter" #: ../output.py:1688 msgid "Newer" msgstr "Neuer" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Transaktions-ID :" #: ../output.py:1728 msgid "Begin time :" msgstr "Anfangszeit :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Anfang rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "Endzeit :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Ende rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Benutzer :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Rückgabe-Code :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "Erfolg" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Veränderte Pakete:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Übersprungene Pakete:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "Fehler:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Installieren" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "Löschen" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "Zeit" #: ../output.py:1935 msgid "Last day" msgstr "Gestern" #: ../output.py:1936 msgid "Last week" msgstr "Letzte Woche" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "In den letzten 2 Wochen" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "In den letzten 3 Monaten" #: ../output.py:1939 msgid "Last 6 months" msgstr "In den letzten 6 Monaten" #: ../output.py:1940 msgid "Last year" msgstr "Letztes Jahr" #: ../output.py:1941 msgid "Over a year ago" msgstr "Vor über einem Jahr" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Keine Transaktion %s gefunden" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Transaktions-ID" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Verfügbare zusätzliche Verlaufsinformationen" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Keine zusätzlichen Daten zu diesem Namen gefunden" #: ../output.py:2106 msgid "installed" msgstr "installiert" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "gelöscht" #: ../output.py:2109 msgid "reinstalled" msgstr "reinstalliert" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "aktualisiert" #: ../output.py:2113 msgid "obsoleted" msgstr "veraltet" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Paket %s.%s %s:%s-%s markiert, um %s zu werden" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Führe Transaktionsprüfung aus" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Starte Abhängigkeitsauflösung mit den neuen Änderungen neu." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Abhängigkeitsauflösung beendet" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Verarbeite Abhängigkeiten: %s für Paket: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Behalte Paket: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Nicht aufgelöste Abhängigkeit: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paket: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Benötigt: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Nicht gefunden" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Aktualisiert durch" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Überholt durch" #: ../output.py:2216 msgid "Available" msgstr "Verfügbar" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Verarbeite Konflikt: %s kollidiert mit %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Fülle Verarbeitungsset mit ausgewählten Paketen. Bitte warten." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Lade Header für %s herunter, um ins Verarbeitungsset zu packen." #: ../utils.py:99 msgid "Running" msgstr "Läuft" #: ../utils.py:100 msgid "Sleeping" msgstr "Schläft" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Nicht unterbrechbar" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Verfolgt/Gestoppt" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Unbekannt" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Die andere Anwendung ist: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Die andere Anwendung ist: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Speicher : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Gestartet: %s - vor %s" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Status : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Beende nach Abbruch durch den Benutzer" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Beende wegen defekter Pipe" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit Fehler: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum Fehler: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Fehler: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Sie können versuchen mit --skip-broken das Problem zu umgehen." #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Unbekannte(r) Fehler: Exit Code: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Abhängigkeiten aufgelöst" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Komplett!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Sie müssen root sein, um diesen Befehl ausführen zu können." #: ../yumcommands.py:59 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" "Sie haben das Überprüfen der Pakete via GPG-Schlüssel aktiviert. Dies ist eine gute Sache. \n" "Allerdings haben Sie nicht alle öffentlichen GPG-Schlüssel installiert. Sie müssen die\n" "gewünschten Schlüssel für die Pakete herunterladen und installieren.\n" "Sie können dies mit folgendem Befehl machen:\n" " rpm --import public.gpg.key\n" "\n" "\n" "Alternativ könnten Sie den URL zum Schlüssel, welchen Sie benutzen wollen\n" "für ein Repository, durch die 'gpgkey'-Option in einem Repository-Bereich\n" "angeben, und yum wird ihn für Sie installieren.\n" "\n" "Für weitere Informationen kontaktieren Sie Ihren Distributions- oder Paket-Anbieter.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Fehler: Muss eine Liste von Paketen an %s übergeben" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Fehler: Brauche einen Begriff, der passt" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Fehler: Brauche eine Gruppe oder eine Liste von Gruppen" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Fehler: Aufräumen benötigt eine Option: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Fehler: Ungültiges Argument für Aufräumen: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Kein Argument für Shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Dateinamen an Shell übergeben: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Datei %s, angegeben als Argument für Shell, existiert nicht." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Fehler: mehr als eine Datei als Argument an die Shell übergeben." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Es gibt keine aktivierten repos.\n" "Führen sie \"yum repolist all\" aus, um zu sehen, welche repos sie haben.\n" "Sie können repos mit yum-config-manager --enable aktivieren" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKET..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Installiere ein Paket oder Pakete auf Ihrem System" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Einrichten des Installationsprozess" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKET...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Aktualisiere ein Paket oder Pakete auf Ihrem System" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Einrichten des Aktualisierungsprozess" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "Installierte Pakete auf die neuesten verfügbaren Versionen synchronisieren" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Zeige Details über ein Paket oder einer Gruppe von Pakete an" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Installierte Pakete" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Verfügbare Pakete" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Extra-Pakete" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Aktualisierte Pakete" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Veraltete Pakete" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Kürzlich hinzugefügte Pakete" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Keine übereinstimmenden Pakete zum Auflisten" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Liste von Paketen oder Gruppen von Paketen" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Entferne ein Paket oder Pakete auf Ihrem System" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Einrichten des Entfernungsprozess" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Einrichten des Gruppenprozess" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Keine Gruppe, auf welcher der Befehl ausgeführt werden kann" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Verfügbare Gruppen anzeigen" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Installiere die Pakete in einer Gruppe auf Ihrem System" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Entferne die Pakete in einer Gruppe von Ihrem System" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Zeigt Details über eine Paket-Gruppe an" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Generiere den Metadaten-Zwischenspeicher" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Erstelle Zwischenspeicherungsdatei für alle Metadaten-Dateien." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "Dies kann eine Weile dauern, abhängig von der Geschwindigkeit dieses " "Computers" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Metadaten-Zwischenspeicher erstellt" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Entferne gespeicherte Daten" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Suche ein Paket, das den gegebenen Wert bereitstellt" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Überprüfe auf verfügbare Paket-Aktualisierungen" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Suche nach Paket-Details für die gegebene Zeichenkette" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Suche Pakete:" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Aktualisiere Pakete, berücksichtige veraltete" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Einrichten des Upgradeprozesses" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Installiere ein lokales RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Einrichten der lokalen Paketverarbeitung" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Bestimme, welche Pakete die gegebenen Abhängigkeiten bereitstellen" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Suche Pakete für Abhängigkeit:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Führe eine interaktive Yum-Shell aus" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Einrichten der Yum-Shell" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Liste von Paket-Abhängigkeiten" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Suche Abhängigkeiten:" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Zeige die konfigurierten Software-Repositories an" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "aktiviert" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "deaktiviert" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Repo-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Repo-name : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Repo-status : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Repo-Revision: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-tags : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-Distro-Tags: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo aktualisiert : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Repo-pkgs : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Repo-Größe : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Repo-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-Metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Aktualisiert : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Repo-Spiegel : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Nie (zuletzt: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s Sekunde(n) (zuletzt: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-ausgeschlossen : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-eingeschlossen : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Repo-ausgeschlossen: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "Repo-ID" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "Status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "Repo-Name:" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Zeigt eine kurze Verwendungsinformation" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Keine Hilfe für %s vorhanden" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "Aliase: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "Alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Einrichten des Neuinstallationsprozess" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "Installiere Paket neu" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Einrichten des Downgrade-Prozesses" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Downgrade eines Pakets" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" "Eine Version für das System und/oder die verfügbaren Repositories anzeigen." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Gruppe :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Pakete:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installiert:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Gruppe-installiert:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Verfügbar:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Gruppe-verfügbar:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Übertragungsverlauf anzeigen oder verwenden" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Eine andere Anwendung blockiert momentan yum. Warte, dass sie beendet wird " "..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Löse Abhängigkeiten auf" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Verlasse nach Abbruch durch den Benutzer." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() wird in zukünftigen Versionen von Yum verschwinden.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" "Konfiguriere TransactionSets, bevor die Konfigurationsklasse gestartet ist" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Ungültiges tsflag in Konfigurationsdatei: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Suche pkgSack für Abhängigkeiten: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Mitglied: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s konvertiert zum Installieren" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Füge Paket %s hinzu in Modus %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Entferne Paket %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s benötigt: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s benötigt %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Benötigte Anforderung wurde bereits nachgeschlagen, betrüge" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Benötigte Anforderung ist kein Paket-Name. Schlage nach: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Potentieller Anbieter: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Modus ist %s für Anbieter von %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Modus für pkg-Bereitstellung %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s Paket benötigt %s, welches als gelöscht markiert ist" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: Ersetze %s durch %s zum Auflösen der Abhängigkeit." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Aktualisiere %s zum Auflösen der Abhängigkeit." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Kann keinen Aktualisierungspfad finden für Abhängigkeit für: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Übereinstimmung von %s, welche gebraucht wird für %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s ist in einem bereitgestellten Paket, aber bereits installiert, entferne." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Potentielles aufgelöstes Paket %s hat eine neuere Instanz in ts." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Potentielles aufgelöste Paket %s hat eine neuere Instanz installiert." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s bereits in ts, überspringe dieses" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Markiere %s als Aktualisierung für %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Markiere %s als Installation für %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Erfolg - Leere Transaktion" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Starte Schleife neu" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Abhängigkeitsverarbeitung beendet" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Erfolg - Abhängigkeiten aufgelöst" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Prüfe Abhängigkeiten für %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "Suche nach %s als eine Anforderung von %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Führe compare_providers() aus für %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "bessere Architektur in po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s ersetzt %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist verglichen %s zu %s auf %s\n" " Gewinner: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "Gemeinsames Quellen-RPM %s und %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "Gemeinsamer Prefix von %s zwischen %s und %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Beste Bestellung: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() wird in zukünftigen Versionen von Yum verschwinden.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Bei Repository %r fehlt der Name in der Konfiguration, benutze id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "Plugins bereits initialisiert" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() wird in zukünftigen Versionen von Yum verschwinden.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Lese lokale RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() wird in zukünftigen Versionen von Yum verschwinden.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() wird in zukünftigen Versionen von Yum verschwinden \n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Einrichten des Paket-Behälters" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "Repository-Objekt für Repository %s fehlt eine _resetSack-Methode\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "deshalb kann dieses Repository nicht zurückgesetzt werden.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() wird in zukünftigen Versionen von Yum verschwinden.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Baue Aktualisierungsobjekt" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() wird in zukünftigen Versionen von Yum verschwinden .\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Beziehe Gruppen-Metadaten" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Füge Gruppen-Datei von Repository hinzu: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Hinzufügen von Gruppen-Datei für Repository fehlgeschlagen: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Keine Gruppen in irgendeinem Repository verfügbar" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Füge Tags aus dem Repository hinzug: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Konnte Pkg Tags für das Repository nicht hinzufügen: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Importiere zusätzlichen Dateilisten-Informationen" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Das Programm %s%s%s wurde in im yum-utils-Paket gefunden." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Es gibt noch nicht abgeschlossene Transaktionen. Sie sollten in Betracht " "ziehen, zuerst yum-complete-transaction auszuführen, um diese " "abzuschliessen." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Versuche \"%s\" zu entfernen, welches geschützt ist" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Pakete übersprungen wegen Abhängigkeitsproblemen:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s von %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** %d bereits bestehende(s) rpmdb Problem(e) gefunden, 'yum check' gibt " "Folgendes aus: " #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Warnung: RPMDB wurde außerhalb von yum verändert." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "Benötigtes fehlt" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "installierter Konflikt" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Warnung: Es sind Scriptlet- oder andere nicht-fatale Fehler bei der " "Verarbeitung aufgetreten." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Transaktion konnte nicht starten:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Konnte Transaktion nicht durchführen." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Entfernen der Verarbeitungsdatei %s fehlgeschlagen" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s hätte installiert werden sollen, wurde aber nicht!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s hätte entfernt werden sollen, wurde aber nicht!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Konnte Sperrung %s nicht aufheben: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Unfähig zu prüfen, ob PID %s ist aktiv" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Existierende Blockierung %s: eine andere Kopie läuft mit PID %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Konnte keine Sperrung bei %s erstellen: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Paket stimmt nicht mit dem beabsichtigten Download überein. Vorschlag: " "starten sie yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Konnte Prüfsumme nicht bilden" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Paket stimmt nicht mit der Prüfsumme überein" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "Paket bei Prüfsummen-Prüfung durchgefallen, aber Zwischenspeicherung ist " "aktiviert für %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "benutze lokale Kopie von %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Nicht genügend Platz im Download-Verzeichnis %s vorhanden\n" " * frei %s\n" " * benötigt %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Header ist nicht vollständig." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Header ist nicht im lokalen Zwischenspeicher und Nur-Zwischenspeicher-Modus " "aktiviert. Kann %s nicht herunterladen" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Öffentlicher Schlüssel für %s ist nicht installiert" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problem beim Öffnen des Paketes %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Öffentlicher Schlüssel für %s ist nicht vertrauenswürdig" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Paket %s ist nicht unterschrieben" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Kann %s nicht entfernen" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s entfernt" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Kann %s Datei nicht entfernen %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s Datei %s entfernt" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s Dateien entfernt" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Mehr als eine identische Übereinstimmung im Behälter für %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Keine Übereinstimmungen mit %s.%s %s:%s-%s bei der Aktualisierung" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() wird in zukünftigen Versionen von Yum verschwinden." " Benutze stattdessen searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Suche %d Pakete" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "Suche Paket %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "Suche in Datei-Einträgen" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "suche in bereitgestellten Einträgen" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Keine Gruppendaten für konfigurierte Repositories verfügbar" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Kein Gruppe mit dem Namen %s vorhanden" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "Paket %s war nicht markiert in Gruppe %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Füge Paket %s aus Gruppe %s hinzu" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Kein Paket mit Namen %s verfügbar zum Installieren" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Paket-Tupel %s kann nicht gefunden werden im Paket-Behälter" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Kein Paket gefunden für %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Paketobjekt war keine Paketobjektinstanz" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Nichts angegeben zum Installieren" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" "Überprüfe nach virtueller Bereitstellung oder Datei-Bereitstellung für %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Kein Übereinstimmung für Argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Paket %s installiert und nicht verfügbar" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Kein(e) Paket(e) zum Installieren verfügbar." #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paket: %s - bereits im Transaktionsset" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Paket %s wurde ersetzt durch %s, welches bereits installiert ist" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "Paket %s wurde ersetzt durch %s, versuche stattdessen %s zu installieren." #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Paket %s ist bereits in der neusten Version installiert." #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Paket, das auf %s passt, ist bereits installiert. Überprüfe auf " "Aktualisierung." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Aktualisiere alles" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Aktualisiere Paket nicht, da es bereits veraltet ist: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Paket ist bereits veraltet: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Aktualisiere Paket nicht, da es bereits veraltet ist: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" "Aktualisiere Paket nicht, da es bereits aktualisiert ist: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Kein Paket stimmt zum Entfernen überein" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Überspringe den laufenden Kernel: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Entferne %s aus der Transaktion." #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Konnte nicht öffnen: %s. Überspringe." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Untersuche %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Konnte deltarpm nicht lokal installieren: %s. Überspringe." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Kann Paket %s nicht zur Transaktion hinzufügen. Keine kompatible " "Architektur: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Konnte Paket %s nicht installieren. Es ist vom installierten Paket %s " "überholt" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Paket %s nicht installiert, kann es nicht aktualisieren. Führen Sie " "stattdessen yum install aus, um es zu installieren." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Schliesse %s aus" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Markiere %s zum Installieren" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Markiere %s als eine Aktualisierung für %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: aktualisiert installierte Pakete nicht." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Kann Datei nicht öffnen: %s. Überspringe." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Probleme beim Neuinstallieren: kein Paket stimmt zum Entfernen überein" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Probleme beim Neuinstallieren: kein Paket %s stimmt zum Installieren überein" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Kein(e) Paket(e) zum Downgrade verfügbar" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Paket %s darf mehrfach installiert sein, überspringe" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Keine Übereinstimmung der verfügbare Pakete: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Nur verfügbare Paket aktualisieren: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG-Schlüssel-Abruf fehlgeschlagen:" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Ungültiger GPG-Schlüssel von %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "GPG-Schlüssel-Analyse fehlgeschlagen: Schlüssel hat keinen Wert %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG-Schlüssel unter %s (0x%s) ist bereits installiert" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Schlüssel-Import fehlgeschlagen (Code %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Schlüssel erfolgreich importiert" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" "Die aufgelisteten GPG-Schlüssel für das \"%s\"-Repository sind bereits installiert, aber sie sind nicht korrekt für dieses Paket.\n" "Stellen Sie sicher, dass die korrekten Schlüssel-URLs für dieses Repository konfiguriert sind." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Importieren der Schlüssel hat nicht geholfen, falsche Schlüssel?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG-Schlüssel unter %s (0x%s) ist bereits importiert" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Schlüssel-Import fehlgeschlagen" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Die aufgelisteten GPG-Schlüssel für das \"%s\" Repository sind bereits " "installiert, aber nicht korrekt. Überprüfen sie, ob die korrekten Schlüssel-" "URLs für dieses Repository konfiguriert sind." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Es kann kein geeigneten Spiegelserver gefunden werden." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Beim Herunterladen der Pakete sind Fehler aufgetreten." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Bitte melden Sie diesen Fehler unter %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Test-Transaktionsfehler: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Konnte Verzeichnis für Zwischenspeicher nicht festlegen: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Geladene Plugins: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Kein Plugin für Argument: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "\"%s\"-Plugin ist deaktiviert" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Plugin \"%s\" kann nicht importiert werden" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Plugin \"%s\" gibt keine benötigte API-Version an" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Plugin \"%s\" benötigt API %s. Unterstützte API ist %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Lade \"%s\"-Plugin" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "Zwei oder mehr Plugins mit dem Namen \"%s\" existieren im Plugin-Suchpfad" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Konfigurationsdatei %s nicht gefunden" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Kann Konfigurationsdatei für Plugin %s nicht finden" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "Registrierung von Befehlen nicht unterstützt" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "benötigt" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "hat installierte Konflikte" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s ist ein Duplikat von %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s ersetzt %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s stellt %s bereit, aber es konnte nicht gefunden werden" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Packe neu" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" "Header kann nicht geöffnet werden oder stimmt nicht überein mit %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM %s besteht md5-Prüfung nicht" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "Kann RPM-Datenbank nicht öffnen. Wird sie eventuell schon benutzt?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Erhalte einen leeren Header, irgendetwas ging schief" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Defekter Header %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Fehler bei Öffnen des RPM %s - Fehler %s" yum-3.4.3/po/cs.po0000664000076400007640000023065411602434452012723 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Adam Pribyl , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Czech (http://www.transifex.net/projects/p/yum/team/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Aktualizuje se" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Maže se" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instaluje se" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Zastaralé" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Aktualizováno" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Smazáno" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Nainstalováno" #: ../callback.py:130 msgid "No header - huh?" msgstr "Bez hlaviÄky???" #: ../callback.py:168 msgid "Repackage" msgstr "PÅ™ebalit" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Chyba: neplatný výstupní stav: %s pro %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Smazáno: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Odstraňuje se" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "ÄŒistí se" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Příkaz „%s“ již definován" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Nastavují se repozitáře" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "NaÄítají se metadata repozitářů z lokálních souborů" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Chyba konfigurace: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Chybná volba: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Nainstalováno: %s-%s na %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Sestaveno : %s na %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Odesláno : %s na %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Musíte zadat nÄ›jaký příkaz" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Neexistující příkaz: %s. Použijte %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Diskové požadavky:\n" #: ../cli.py:402 #, python-format 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:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "PÅ™ehled chyb\n" "------------\n" #: ../cli.py:450 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:497 msgid "Exiting on user Command" msgstr "UkonÄeno na příkaz uživatele" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Stahují se balíÄky:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Chyba stahování balíÄků:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "CHYBA Je potÅ™eba aktualizovat rpm k provedení:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "Je potÅ™eba aktualizovat RPM" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Oznamte prosím tuto chybu v %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "SpouÅ¡tí se test transakcí" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Chyba pÅ™i kontrole transakcí:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Test transakcí uspÄ›l" #: ../cli.py:600 msgid "Running Transaction" msgstr "SpouÅ¡tí se transakce" #: ../cli.py:630 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žijte \"-y\" k potlaÄení." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Možná jste myslel: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "BalíÄek(y) %s%s%s dostupný/é, ale nenainstalovaný/é." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "BalíÄek %s%s%s není dostupný." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "BalíÄek(y) k instalaci" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Není co dÄ›lat" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d balíÄků oznaÄeno k aktualizaci" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Žádné balíÄky oznaÄené k aktualizaci" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d balíÄků oznaÄených k synchronizaci distribuce" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "K synchronizaci distribuce nebyly oznaÄeny žádné balíÄky" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d balíÄků oznaÄeno ke smazání" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Žádné balíÄky oznaÄené k odstranÄ›ní" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "BalíÄek(y) ke snížení verze" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (z %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Instalované balíÄky %s%s%s%s nejsou dostupné" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "BalíÄek(y) k reinstalaci" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Žádný balíÄek neposkytuje" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Shoda: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Varování: Žádný balíÄek odpovídající: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Nebyla nalezena shoda" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nebyly nalezeny balíÄky pro %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "ÄŒiÅ¡tÄ›ní repozitářů:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "ÄŒistí se vÅ¡e" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "ÄŒistí se hlaviÄky" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "ÄŒistí se balíÄky" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "ÄŒistí se XML metadata" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "ÄŒistí se skladiÅ¡tÄ› databáze" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Ze skladiÅ¡tÄ› se odstraňují zastaralá metadata" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "ÄŒistí se skladiÅ¡tÄ› rpmdb dat" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "ÄŒistí se zásuvné moduly" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Nainstalované skupiny:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Dostupné skupiny:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "DokonÄeno" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Varování: skupina %s neexistuje." #: ../cli.py:1324 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:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d balíÄek(ů) k instalaci" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Neexistuje skupina se jménem %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Žádné balíÄky k odstranÄ›ní ve skupinÄ›" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d balíÄek(ů) k odstranÄ›ní" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "BalíÄek %s je již nainstalován, pÅ™eskakuje se" #: ../cli.py:1397 #, 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:1423 #, 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:1443 msgid "Plugin Options" msgstr "Možnosti zásuvného modulu" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Chyba příkazové řádky: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s volba vyžaduje argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color pÅ™ijímá jeden z: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "ukázat tuto nápovÄ›du a skonÄit" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "tolerovat chyby" #: ../cli.py:1649 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:1652 msgid "config file location" msgstr "umístÄ›ní konfiguraÄního souboru" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maximální Äas Äekání na příkaz" #: ../cli.py:1657 msgid "debugging output level" msgstr "úroveň výstupních ladících informací" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "ukázat duplikáty v repozitářích, v list/search příkazech" #: ../cli.py:1663 msgid "error output level" msgstr "úroveň výstupu chyb" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "úroveň výstupních ladících informací pro rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "tichý chod" #: ../cli.py:1671 msgid "verbose operation" msgstr "užvanÄ›ný chod" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "odpovÄ›dÄ›t ano na vÅ¡echny otázky" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "ukázat verzi yumu a skonÄit" #: ../cli.py:1676 msgid "set install root" msgstr "nastavit koÅ™en instalace " #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "povolit jeden nebo více repozitářů (zástupné znaky povoleny)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "zakázat jeden nebo více repozitářů (zástupné znaky povoleny)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "vyÅ™adit balíÄek(y) podle jména nebo globálnÄ›" #: ../cli.py:1689 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:1692 msgid "enable obsoletes processing during updates" msgstr "povolit zpracování zastaralých bÄ›hem aktualizací" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "zakázat zásuvné moduly yumu" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "zakázat kontrolu GPG podpisů" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "zakázat zásuvné moduly podle jména" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "povolit zásuvné moduly podle jména" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "pÅ™eskoÄit balíÄky s problémy v závislostech" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontrola zda jsou použity barvy" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "nastavte hodnotu $releasever v konfiguraci yumu a repo souborech" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "nastavit doplňkové konfigurace a možnosti repozitáře " #: ../output.py:307 msgid "Jan" msgstr "Led" #: ../output.py:307 msgid "Feb" msgstr "Úno" #: ../output.py:307 msgid "Mar" msgstr "BÅ™e" #: ../output.py:307 msgid "Apr" msgstr "Dub" #: ../output.py:307 msgid "May" msgstr "KvÄ›" #: ../output.py:307 msgid "Jun" msgstr "ÄŒer" #: ../output.py:308 msgid "Jul" msgstr "ÄŒec" #: ../output.py:308 msgid "Aug" msgstr "Srp" #: ../output.py:308 msgid "Sep" msgstr "Zář" #: ../output.py:308 msgid "Oct" msgstr "Říj" #: ../output.py:308 msgid "Nov" msgstr "Lis" #: ../output.py:308 msgid "Dec" msgstr "Pro" #: ../output.py:318 msgid "Trying other mirror." msgstr "Zkouší se jiné zrcadlo" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Jméno : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arch : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epocha : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Verze : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Vydání : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Velikost : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Z repozitáře: %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Odesilatel : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "ÄŒas odeslání: %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "ÄŒas sestavení: %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "ÄŒas instalace: %s " #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Nainstaloval: %s " #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "ZmÄ›nil : %s" #: ../output.py:612 msgid "Summary : " msgstr "Souhrn : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licence : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Popis : " #: ../output.py:684 msgid "y" msgstr "a" #: ../output.py:684 msgid "yes" msgstr "ano" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "ne" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "V pořádku [a/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Skupina: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " ID skupiny: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Popis: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Povinné balíÄky:" #: ../output.py:791 msgid " Default Packages:" msgstr " Výchozí balíÄky:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Volitelné balíÄky:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " PodmíneÄné balíÄky:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "balíÄky: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Pro tento balíÄek nejsou žádné závislosti" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " závislosti: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Neuspokojené závislosti" #: ../output.py:901 msgid "Matched from:" msgstr "Shoda s:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licence : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Soubor : %s" #: ../output.py:923 msgid "Other : " msgstr "Další : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "PÅ™i výpoÄtu celkové velikosti stahování nastala chyba" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Celková velikost: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Celková velikost stahování: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Nainstalovaná velikost: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "PÅ™i poÄítání velikosti instalace doÅ¡lo k chybÄ›" #: ../output.py:1039 msgid "Reinstalling" msgstr "PÅ™einstalovává se" #: ../output.py:1040 msgid "Downgrading" msgstr "Snižuje se verze" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Instaluje se kvůli závislostem" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Aktualizuje se kvůli závislostem" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Odstraňuje se kvůli závislostem" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "PÅ™eskoÄeno (problémy se závislostmi)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Nenainstalováno" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "BalíÄek" #: ../output.py:1075 msgid "Arch" msgstr "Arch" #: ../output.py:1076 msgid "Version" msgstr "Verze" #: ../output.py:1076 msgid "Repository" msgstr "Repozitář" #: ../output.py:1077 msgid "Size" msgstr "Vel." #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " nahrazuje se %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Shrnutí transakce\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Instalace %5.5s balíÄků\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Aktualizace %5.5s balíÄků\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "OdstranÄ›ní %5.5s balíÄků\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Reinstalace %5.5s balíÄků\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Snížení verze %5.5s balíÄků\n" #: ../output.py:1165 msgid "Removed" msgstr "OdstranÄ›no" #: ../output.py:1166 msgid "Dependency Removed" msgstr "OdstranÄ›né závislosti" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Nainstalované závislosti" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Aktualizované závislosti" #: ../output.py:1172 msgid "Replaced" msgstr "Nahrazeno" #: ../output.py:1173 msgid "Failed" msgstr "Selhalo" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dvÄ›" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\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:1282 msgid "user interrupt" msgstr "PÅ™eruÅ¡eno uživatelem" #: ../output.py:1300 msgid "Total" msgstr "Celkem" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Systém" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Zadáno Å¡patné ID transakce nebo balíÄku/ů" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "PÅ™ihlášení uživatele" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Datum a Äas" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Akce" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "PozmÄ›nÄ›no" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Nezadáno ID transakce" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Å patné ID transakce" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Zadané ID transakce nenalezeno" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Nalezeno více než jedno ID transakce!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Nebylo zadáno ID transakce nebo balíÄku/ů" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Snížena verze" #: ../output.py:1688 msgid "Older" msgstr "Starší" #: ../output.py:1688 msgid "Newer" msgstr "NovÄ›jší" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "ID transakce:" #: ../output.py:1728 msgid "Begin time :" msgstr "PoÄáteÄní Äas :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "ZaÄátek rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "KoneÄný Äas :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Konec rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Uživatel :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Návratový kód :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "PÅ™eruÅ¡eno" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "Selhalo:" #: ../output.py:1779 msgid "Success" msgstr "ÚspÄ›ch" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Příkazová řádka:" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Uložená přídavná nestandardní informace: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transakce probÄ›hla s:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "PozmÄ›nÄ›né balíÄky:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "PÅ™eskoÄené balíÄky:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problémy rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Výstup skriptletu:" #: ../output.py:1831 msgid "Errors:" msgstr "Chyby:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Instalovat" #: ../output.py:1839 msgid "Dep-Install" msgstr "Instalovat závislosti" #: ../output.py:1841 msgid "Obsoleting" msgstr "Zastaralé" #: ../output.py:1842 msgid "Erase" msgstr "Smazat" #: ../output.py:1843 msgid "Reinstall" msgstr "PÅ™einstalovat" #: ../output.py:1844 msgid "Downgrade" msgstr "Snížit verzi" #: ../output.py:1846 msgid "Update" msgstr "Aktualizovat" #: ../output.py:1909 msgid "Time" msgstr "ÄŒas" #: ../output.py:1935 msgid "Last day" msgstr "Poslední den" #: ../output.py:1936 msgid "Last week" msgstr "Poslední týden" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Poslední 2 týdny" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Poslední 3 mÄ›síce" #: ../output.py:1939 msgid "Last 6 months" msgstr "Posledních 6 mÄ›síců" #: ../output.py:1940 msgid "Last year" msgstr "Poslední rok" #: ../output.py:1941 msgid "Over a year ago" msgstr "Více než rok" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Nenalezena transakce %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "ID transakce:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Další dostupná informace z historie:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Nenalezena další data toho jména" #: ../output.py:2106 msgid "installed" msgstr "instalaci" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "smazání" #: ../output.py:2109 msgid "reinstalled" msgstr "reinstalaci" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "aktualizaci" #: ../output.py:2113 msgid "obsoleted" msgstr "zastarání" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> SpouÅ¡tí se kontrola transakce" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Restartuje se Å™eÅ¡ení závislostí s novými zmÄ›nami." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> ŘeÅ¡ení závislostí dokonÄeno" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Zpracování závislosti: %s pro balíÄek: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Ponechají se balíÄky: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> NevyÅ™eÅ¡ená závislost: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "BalíÄek: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Vyžaduje: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Nenalezeno" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Aktualizoval" #: ../output.py:2197 msgid "Downgraded By" msgstr "Snížil verzi" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Zastaral" #: ../output.py:2216 msgid "Available" msgstr "Dostupné" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Zpracování konfliktu: %s je v konfliktu s %s" #: ../output.py:2252 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:2256 #, 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:99 msgid "Running" msgstr "Běží" #: ../utils.py:100 msgid "Sleeping" msgstr "Spí" #: ../utils.py:101 msgid "Uninterruptible" msgstr "NepÅ™eruÅ¡itelné" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Trasován/Zastaven" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Neznámý" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Další aplikace je: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Další aplikace je: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Paměť : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " SpuÅ¡tÄ›n: %s - %s nazpÄ›t" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Stav : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "UkonÄeno na základÄ› pokynu uživatele" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "UkonÄeno kvůli nefunkÄní rouÅ™e" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Zámek aplikace yum je uzamÄen jinou aplikací; ukonÄeno dle konfigurace " "exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Chyba PluginExit: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Chyba Yumu: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Chyba: %s" #: ../utils.py:346 ../yummain.py:194 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" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Můžete zkusit spustit: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Neznámá chyba/y: Výstupní kód: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Závislosti vyÅ™eÅ¡eny" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Hotovo!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 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:59 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" "Povolili jste kontrolu balíÄků pomocí GPG klíÄů, což je dobrá vÄ›c.\n" "Bohužel nemáte ale nainstalován žádný veÅ™ejný GPG klíÄ. Musíte stáhnout klíÄ\n" "pro balíÄek, který si pÅ™ejete nainstalovat a pÅ™idat jej příkazem\n" " rpm --import public.gpg.key\n" "\n" "\n" "Jako druhou možnost můžete uvést URL ke klíÄi, který chcete použít\n" "pro repozitář ve volbÄ› 'gpgkey' v nastavení repozitáře, a yum\n" "jej nainstaluje.\n" "\n" "Více informací získáte u svého distributora nebo správce balíÄku.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, 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:86 msgid "Error: Need an item to match" msgstr "Chyba: K nalezení shody je potÅ™eba pÅ™edmÄ›t" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Chyba: Je potÅ™eba skupina nebo seznam skupin" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Chyba: clean vyžaduje volbu: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Chyba: Neplatný argument pro clean: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Shell nemá žádný argument" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Jméno souboru pÅ™edané shellu: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Soubor %s pÅ™edaný jako argument shellu neexistuje." #: ../yumcommands.py:131 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:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Neexistují žádné povolené repozitáře.\n" " Abyste vidÄ›li povolené repozitáře spusÅ¥te \"yum repolist all\".\n" " Povolit repozitáře můžete pomocí \"yum-config-manager --enable \"" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "BalíÄek..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instalovat balíÄek nebo balíÄky do vaÅ¡eho systému" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Uspořádává se průbÄ›h instalace" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[BalíÄek...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Aktualizovat balíÄek nebo balíÄky na vaÅ¡em systému" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Uspořádává se průbÄ›h aktualizace" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Synchronizovat nainstalované balíÄky na poslední dostupnou verzi" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Uspořádává se proces synchronizace distribuce" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Zobrazit detaily o balíÄku nebo skupinÄ› balíÄků" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Nainstalované balíÄky" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Dostupné balíÄky" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "DodateÄné balíÄky" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Aktualizované balíÄky" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Zastaralé balíÄky" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "NovÄ› pÅ™idané balíÄky" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Nenalezeny shodné balíÄky" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Vypsat balíÄek nebo skupiny balíÄků" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Odstranit balíÄek nebo balíÄky ze systému" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Uspořádává se průbÄ›h odstranÄ›ní" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Uspořádává se zpracování skupiny" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Nenalezeny skupiny, na které by Å¡lo příkaz aplikovat" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Vypsat dostupné skupiny balíÄků" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instalovat balíÄky ze skupiny do systému" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Odstranit balíÄky ze skupiny ze systému" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Zobrazit detaily o skupinÄ› balíÄků" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Vygenerovat skladiÅ¡tÄ› metadat" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Vytváří se skladiÅ¡tní soubory pro vÅ¡echna metadata " #: ../yumcommands.py:557 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:578 msgid "Metadata Cache Created" msgstr "SkladiÅ¡tÄ› metadat vytvoÅ™eno" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Odstranit data ze skladiÅ¡tÄ›" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Nalézt balíÄek, který poskytuje danou hodnotu" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Zkontrolovat dostupné aktualizace balíÄků" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Nalézt detaily balíÄku pro daný Å™etÄ›zec" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Prohledávají se balíÄky: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Aktualizovat balíÄky a brát v úvahu zastaralé" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Uspořádává se průbÄ›h aktualizace" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instalovat lokální RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Uspořádává se zpracování lokálního balíÄku" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "UrÄit který balíÄek poskytuje danou závislost" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Prohledávají se balíÄky kvůli závislostem:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Spustit interaktivní shell yum" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Nastavuje se yum shell" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Zobrazit závislosti balíÄku" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Hledají se závislosti: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Zobrazit nastavené repozitáře softwaru" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "povoleno" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "zakázáno" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Repo-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Repo-jméno : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Repo-status : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Repo-revize : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-tagy : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tagy: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo-aktuální: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Repo-bal. : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Repo-velikost: " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Repo-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Aktualizováno: " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Repo-zrcadla : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Nikdy (poslední: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "OkamžitÄ› (naposledy: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s sekund (naposledy: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Repo-vyprší : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-vyÅ™azeno: " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-zahrnuto: " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Repo-vyÅ™azeno: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "repo id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "jméno repa" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Zobrazit užiteÄnou nápovÄ›du" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Není dostupná nápovÄ›da pro %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "aliasy: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Uspořádává se průbÄ›h reinstalace" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "Reinstalace balíÄku" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Uspořádává se průbÄ›h snížení verze" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Snížení verze balíÄku" #: ../yumcommands.py:1216 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:1255 msgid " Yum version groups:" msgstr " Verze yum skupin:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Skupina :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " BalíÄky :" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Nainstalováno:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Nainstalované skupiny:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Dostupné:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Dostupné skupiny:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Zobrazit nebo používat transakÄní historii" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Neplatný pod-příkaz historie, použijte: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Nemáte přístup k databázi s historií." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Zkontrolovat problémy v rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 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:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Řeší se závislosti" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "UkonÄeno na pokyn uživatele." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() bude v následujících verzích yumu odstranÄ›no.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" "Uspořádává se TransactionSet pÅ™ed tím než bude pÅ™ipravena třída config" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Neplatný tsflag v konfiguraÄním souboru: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Hledá se pkgSack pro závislost: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Prvek: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s zkonvertován na instalaci" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "PÅ™idává se balíÄek %s v módu %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Odstraňuje se balíÄek %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s vyžaduje: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s vyžaduje %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Závazné požadavky již byly prohledány, Å¡vindluje se" #: ../yum/depsolve.py:349 #, 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:357 #, python-format msgid "Potential Provider: %s" msgstr "Možný poskytovatel: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Mód je %s pro poskytovatele %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Mód pro bal. poskytující %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, 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:429 #, 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:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Aktualizuji %s k vyÅ™eÅ¡ení závislostí." #: ../yum/depsolve.py:440 #, 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:471 #, 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:513 #, 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:529 #, 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:540 #, 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:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s je již v ts, vynechává se" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: OznaÄuji %s jako aktualizaci %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: OznaÄuji %s jako instalaci %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "ÚspÄ›ch - prázdná transakce" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Restartuje se smyÄka" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Proces zpracování závislostí konÄí" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "ÚspÄ›ch - závislosti vyÅ™eÅ¡eny" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Kontroluji závislosti pro %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "hledá se %s jako požadavek od %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "SpouÅ¡tí se compare_providers() pro %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "lepší architektura v po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s zastarává %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist porovnán pro %s k %s na %s\n" " VítÄ›z: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "spoleÄné zdrojové rpm %s a %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "základní balíÄek %s je nainstalován pro %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "spoleÄný prefix %s mezi %s a %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "vyžaduje minimálnÄ›: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " VítÄ›z: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Poražený (kým %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Nejlepší pořádek: %s" #: ../yum/__init__.py:234 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:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Repozitář %r: Chyba pÅ™i zpracování konfigurace: %s" #: ../yum/__init__.py:488 #, 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:526 msgid "plugins already initialised" msgstr "zásuvný modul je již inicializován" #: ../yum/__init__.py:533 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:544 msgid "Reading Local RPMDB" msgstr "NaÄítá se lokální RPMDB" #: ../yum/__init__.py:567 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:630 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:660 msgid "Setting up Package Sacks" msgstr "PÅ™ipravuje se pytel balíÄků" #: ../yum/__init__.py:705 #, 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:706 msgid "therefore this repo cannot be reset.\n" msgstr "proto nemůže toto repo být resetováno.\n" #: ../yum/__init__.py:711 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:723 msgid "Building updates object" msgstr "Sestavuje se objekt aktualizací" #: ../yum/__init__.py:765 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:790 msgid "Getting group metadata" msgstr "Získávají se metadata skupin" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "PÅ™idává se skupinový soubor pro repozitář: %s" #: ../yum/__init__.py:827 #, 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:833 msgid "No Groups Available in any repository" msgstr "V žádném repozitáři nejsou dostupné skupiny" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Získávají se pkgtags metadata" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "PÅ™idávají se tagy z repozitáře: %s" #: ../yum/__init__.py:866 #, 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:944 msgid "Importing additional filelist information" msgstr "Importuji informace z dodateÄného seznamu souborů" #: ../yum/__init__.py:958 #, 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:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." 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:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Zkuste odstranit \"%s\", který je chránÄ›ný" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "BalíÄek pÅ™eskoÄen kvůli problémům se závislostmi:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s z %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Nalezeny %d pre-existující problémy rpmdb, následuje výstup \"yum " "check\":" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Varování: RPMDB byla zmÄ›nÄ›na mimo yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "chybÄ›jící požadavek" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "konflikt nainstalovaného" #: ../yum/__init__.py:1525 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:1535 msgid "Transaction couldn't start:" msgstr "Transakce nemůže zaÄít:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Nelze spustit transakci." #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s mÄ›lo být odstranÄ›no, ale není!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Nelze otevřít zámek %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, 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:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Nelze vytvoÅ™it zámek na %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "BalíÄek neodpovídá zamýšlenému stahování. Zkuste spustit: yum " "--enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Nelze zkontrolovat kontrolní souÄet" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "BalíÄek neodpovídá kontrolnímu souÄtu" #: ../yum/__init__.py:1946 #, 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:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "používá se lokální kopie %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Nedostatek diskového prostoru ve stahovacím adresáři %s\n" " * volno %s\n" " * potÅ™eba %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "HlaviÄka není kompletní." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" 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:2147 #, python-format msgid "Public key for %s is not installed" msgstr "VeÅ™ejný klÃ­Ä %s není nainstalován" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problém s otevÅ™ením balíÄku %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "VeÅ™ejný klÃ­Ä %s není důvÄ›ryhodný" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "BalíÄek %s není podepsán" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Nemohu odstranit %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s odstranÄ›n" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Nemohu odstranit %s soubor %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s soubor %s odstranÄ›n" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s soubor odstranÄ›n" #: ../yum/__init__.py:2327 #, 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:2333 #, 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:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() bude odstranÄ›n v příští verzi Yumu. " "Používejte místo nÄ›j searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Prohledává se %d balíÄků" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "prohledává se balíÄek %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "hledá se v souborových položkách" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "hledá se v položkách poskytovatelů" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Pro nastavený repozitář nejsou žádná dostupná skupinová data" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Neexistuje skupina pojmenovaná %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "balíÄek %s nebyl oznaÄen ve skupinÄ› %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "PÅ™idává se balíÄek %s pro skupinu %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Žádný balíÄek pojmenovaný %s není dostupný pro instalaci" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, 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:3022 #, 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:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nebyl nalezen balíÄek pro %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Objekt balíÄku nebyl instancí balíÄkového objektu" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Nebylo urÄeno nic k instalaci" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, 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:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Nenalezena shoda pro argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "BalíÄek %s je nainstalován, ale není dostupný" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Žádné balíÄky dostupné pro instalaci" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "BalíÄek: %s - již je v transakÄní sadÄ›" #: ../yum/__init__.py:3550 #, 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:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "BalíÄek %s je zastaralý balíÄkem %s, ale nový balíÄek nesplňuje závislosti" #: ../yum/__init__.py:3558 #, 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:3566 #, 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:3580 #, 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:3684 msgid "Updating Everything" msgstr "Aktualizuje se vÅ¡e" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, 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:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, 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:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Neaktualizuje se balíÄek, který je zastaralý: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, 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:3982 msgid "No package matched to remove" msgstr "Nenalezen žádný shodný balíÄek pro odstranÄ›ní" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "PÅ™eskakuji aktuálnÄ› používané jádro: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Odstraňuji %s z transakce" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Nelze otevřít: %s. PÅ™eskakuje se." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Zkoumá se %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Nelze lokálnÄ› instalovat deltarpm: %s. PÅ™eskakuje se." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, 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:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "Nelze instalovat balíÄek %s. Je zastaralý nainstalovaným balíÄkem %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "BalíÄek %s není nainstalován, nelze jej aktualizovat. SpusÅ¥te místo toho yum" " install a nainstalujte jej." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Vynechává se %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "OznaÄuje se %s k instalaci" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "OznaÄuje se %s jako aktualizace %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: není aktualizací instalovaného balíÄku." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Nelze otevřít soubor: %s. PÅ™eskakuje se." #: ../yum/__init__.py:4177 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:4203 #, 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:4311 msgid "No package(s) available to downgrade" msgstr "Žádné balíÄky dostupné ke snížení verze" #: ../yum/__init__.py:4319 #, 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:4365 #, python-format msgid "No Match for available package: %s" msgstr "Neexistuje shoda pro dostupný balíÄek: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Pouze aktualizace dostupná pro balíÄek: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "NepodaÅ™ilo se snížit verzi: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Získání GPG klíÄe selhalo: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Neplatný GPG klÃ­Ä pro %s: %s" #: ../yum/__init__.py:4576 #, 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:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG klÃ­Ä %s (0x%s) je již nainstalován" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Import klíÄe selhal (kód %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Import klíÄe probÄ›hl úspěšnÄ›" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 tento balíÄek.\n" "Zkontrolujte, že URL klíÄe jsou pro repozitář správnÄ› nastavena." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Import klíÄe/ů nepomohl, Å¡patný klíÄ(e)?" #: ../yum/__init__.py:4713 #, 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:4754 msgid "Key import failed" msgstr "Import klíÄe selhal" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "GPG klíÄe pro repozitář \"%s\" jsou již nainstalovány, ale nejsou správné.\n" "Zkontrolujte že pro repozitář je správnÄ› nastaveno URL klíÄe." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Nemohu nalézt vhodné zrcadlo" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "PÅ™i stahování balíÄků doÅ¡lo k chybÄ›." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Oznamte prosím tuto chybu na %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Chyby testu transakce: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Nelze vytvoÅ™it skladiÅ¡tÄ›: %s " #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Zavedeny zásuvné moduly: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Neexistuje zásuvný modul pro: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Nezavádí se „%s“ modul, protože je zakázán" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Modul „%s“ nemůže být importován" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Modul „%s“ neuvádí požadovanou verzi API" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Modul „%s“ požaduje API %s. Podporované API je %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Zavádí se zásuvný modul „%s“" #: ../yum/plugins.py:323 #, 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“" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "KonfiguraÄní soubor %s nenalezen" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Nelze nalézt konfiguraÄní soubor pro modul %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registrace příkazů není podporována" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "má chybÄ›jící požadavky" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "má konflikty v instalaci" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s je duplicitní s %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s je zastaralé novÄ›jším %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s poskytuje %s, ale to nelze nalézt" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "PÅ™ebaluje se" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "HlaviÄka nemůže být otevÅ™ena nebo neodpovídá %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "Pro RPM %s selhala kontrola md5" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "Nelze otevřít databázi RPM pro Ätení. Možná je již používána?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Vrátila se prázdná hlaviÄka. NÄ›co se stalo Å¡patnÄ›." #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "PoÅ¡kozená hlaviÄka %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Chyba pÅ™i otevÅ™ení rpm %s - chyba %s" yum-3.4.3/po/pl.po0000664000076400007640000024300611602434452012724 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Piotr DrÄ…g , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Polish (http://www.transifex.net/projects/p/yum/team/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Aktualizowanie" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Usuwanie" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instalowanie" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "PrzestarzaÅ‚e" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Zaktualizowano" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "UsuniÄ™to" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Zainstalowano" #: ../callback.py:130 msgid "No header - huh?" msgstr "Brak nagłówka - hÄ™?" #: ../callback.py:168 msgid "Repackage" msgstr "Ponowne utworzenie pakietu" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Błąd: nieprawidÅ‚owy stan wyjÅ›cia: %s dla %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "UsuniÄ™to: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Usuwanie" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Czyszczenie" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Polecenie \"%s\" zostaÅ‚o już okreÅ›lone" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Ustawianie repozytoriów" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Odczytywanie metadanych repozytoriów z lokalnych plików" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Błąd konfiguracji: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Błąd opcji: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Zainstalowane: %s-%s o %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Zbudowane : %s o %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " WysÅ‚ane: %s o %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Należy podać polecenie" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Nie ma takiego polecenia: %s. ProszÄ™ użyć %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Wymagane miejsce na dysku:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" " Wymagane jest co najmniej %d MB wiÄ™cej miejsca w systemie plików %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Podsumowanie błędów\n" "-------------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Próbowano wykonać transakcjÄ™, ale nie ma nic do zrobienia. KoÅ„czenie " "dziaÅ‚ania." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "KoÅ„czenie dziaÅ‚ania na polecenie użytkownika" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Pobieranie pakietów:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Błąd podczas pobierania pakietów:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Wykonywanie sprawdzania transakcji" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "BÅÄ„D należy zaktualizować pakiet RPM, aby obsÅ‚użyć:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "BÅÄ„D sprawdzania transakcji i rozwiÄ…zywania zależnoÅ›ci:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "Pakiet RPM musi zostać zaktualizowany" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "ProszÄ™ zgÅ‚osić ten błąd na %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Wykonywanie testu transakcji" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Błąd podczas sprawdzania transakcji:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Test transakcji zostaÅ‚ ukoÅ„czony powodzeniem" #: ../cli.py:600 msgid "Running Transaction" msgstr "Wykonywanie transakcji" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Odmawianie automatycznego zaimportowania kluczy podczas nienadzorowanego uruchomienia.\n" "Należy użyć \"-y\", aby wymusić." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Czy chodziÅ‚o o: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Pakiety %s%s%s sÄ… dostÄ™pne, ale nie sÄ… zainstalowane." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Nie ma pakietu %s%s%s." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Pakiety do zainstalowania" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nie ma niczego do zrobienia" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pakietów oznaczonych do aktualizacji" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Brak pakietów oznaczonych do aktualizacji" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d pakietów oznaczonych do synchronizacji dystrybucji" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Brak pakietów oznaczonych do synchronizacji dystrybucji" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pakietów oznaczonych do usuniÄ™cia" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Brak pakietów oznaczonych do usuniÄ™cia" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Pakiety do instalacji poprzedniej wersji" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (z %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Zainstalowany pakiet %s%s%s%s jest niedostÄ™pny." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Pakiety do ponownego zainstalowania" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Nie podano pakietów" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "N/S dopasowane: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Pasuje %stylko%s nazwa i podsumowanie, należy użyć \"search all\", aby " "uzyskać wszystko." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Pasuje %stylko%s peÅ‚na nazwa i podsumowanie, należy użyć \"search all\", " "aby uzyskać wszystko." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "PasujÄ…ce: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Pasuje %sgłównie%s nazwa i podsumowanie, należy użyć \"search all\", aby " "uzyskać wszystko." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Ostrzeżenie: nie odnaleziono wyników dla: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Brak wyników" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nie odnaleziono pakietów dla %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Czyszczenie repozytoriów: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Czyszczenie wszystkiego" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Czyszczenie nagłówków" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Czyszczenie pakietów" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Czytanie metadanych XML" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Czyszczenie bazy danych w pamiÄ™ci podrÄ™cznej" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Czyszczenie metadanych wygasÅ‚ej pamiÄ™ci podrÄ™cznej" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Czyszczenie bazy danych RPM w pamiÄ™ci podrÄ™cznej" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Czyszczenie wtyczek" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Ostrzeżenie: brak pasujÄ…cych grup: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Zainstalowane grupy:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Zainstalowane grupy jÄ™zyków:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "DostÄ™pne grupy:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "DostÄ™pne grupy jÄ™zyków:" #: ../cli.py:1285 msgid "Done" msgstr "UkoÅ„czono" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Ostrzeżenie: grupa %s nie istnieje." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Brak pakietów dostÄ™pnych do instalacji lub aktualizacji w żadnej z żądanych " "grup" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pakietów do instalacji" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Grupa o nazwie %s nie istnieje" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Brak pakietów do usuniÄ™cia z grup" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d pakietów do usuniÄ™cia" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Pakiet %s jest już zainstalowany, pomijanie" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Odrzucanie pakietu %s.%s, którego nie można porównać" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Inne %s nie sÄ… zainstalowane, dodawanie do listy potencjalnie instalowanych" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opcje wtyczki" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Błąd wiersza poleceÅ„: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: opcja %s wymaga parametru" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color przyjmuje jednÄ… z: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot musi być Å›cieżkÄ… bezwzglÄ™dnÄ…: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "wyÅ›wietla ten komunikat pomocy i koÅ„czy pracÄ™" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "toleruje błędy" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" "uruchamia wyłącznie z pamiÄ™ci podrÄ™cznej systemu i nie aktualizuje jej" #: ../cli.py:1652 msgid "config file location" msgstr "poÅ‚ożenie pliku konfiguracji" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maksymalny czas oczekiwania na polecenie" #: ../cli.py:1657 msgid "debugging output level" msgstr "poziom wyjÅ›cia debugowania" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "wyÅ›wietla duplikaty w repozytoriach w poleceniach list/search" #: ../cli.py:1663 msgid "error output level" msgstr "poziom wyjÅ›cia błędów" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "poziom wyjÅ›cia debugowania dla programu RPM" #: ../cli.py:1669 msgid "quiet operation" msgstr "maÅ‚o komunikatów" #: ../cli.py:1671 msgid "verbose operation" msgstr "dużo komunikatów" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "odpowiada tak na wszystkie pytania" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "wyÅ›wietla wersjÄ™ programu yum i koÅ„czy pracÄ™" #: ../cli.py:1676 msgid "set install root" msgstr "ustawia roota instalacji" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "włącza jedno lub wiÄ™cej repozytoriów (wieloznaczniki sÄ… dozwolone)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "wyłącza jedno lub wiÄ™cej repozytoriów (wieloznaczniki sÄ… dozwolone)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "wyklucza pakiety po nazwie lub wyrażeniu regularnym" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "wyłącza wykluczanie z głównego, dla repozytorium lub wszystkiego" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "włącza przetwarzanie przestarzaÅ‚ych pakietów podczas aktualizacji" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "wyłącza wtyczki programu yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "wyłącza sprawdzanie podpisu GPG" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "wyłącza wtyczki po nazwie" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "włącza wtyczki po nazwie" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "pomija pakiety majÄ…ce problemy z rozwiÄ…zaniem zależnoÅ›ci" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontroluje użycie kolorów" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "ustawia wartość zmiennej $releasever w konfiguracji programu yum i plikach " "repozytoriów" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "ustawia bezwzglÄ™dne opcje konfiguracji i repozytoriów" #: ../output.py:307 msgid "Jan" msgstr "sty" #: ../output.py:307 msgid "Feb" msgstr "lut" #: ../output.py:307 msgid "Mar" msgstr "mar" #: ../output.py:307 msgid "Apr" msgstr "kwi" #: ../output.py:307 msgid "May" msgstr "maj" #: ../output.py:307 msgid "Jun" msgstr "cze" #: ../output.py:308 msgid "Jul" msgstr "lip" #: ../output.py:308 msgid "Aug" msgstr "sie" #: ../output.py:308 msgid "Sep" msgstr "wrz" #: ../output.py:308 msgid "Oct" msgstr "paź" #: ../output.py:308 msgid "Nov" msgstr "lis" #: ../output.py:308 msgid "Dec" msgstr "gru" #: ../output.py:318 msgid "Trying other mirror." msgstr "Próbowanie innego serwera lustrzanego." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nazwa : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Architektura : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoka : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Wersja : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Wydanie : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Rozmiar : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repozytorium : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Z repozytorium : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Twórca : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Czas wysÅ‚ania : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Czas zbudowania : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Czas zainstalowania: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Zainstalowane przez: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Zmienione przez : %s" #: ../output.py:612 msgid "Summary : " msgstr "Podsumowanie : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "Adres URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licencja : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Opis : " #: ../output.py:684 msgid "y" msgstr "t" #: ../output.py:684 msgid "yes" msgstr "tak" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "nie" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "W porzÄ…dku? [t/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grupa: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Identyfikator grupy: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Opis: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " JÄ™zyk: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Pakiety obowiÄ…zkowe:" #: ../output.py:791 msgid " Default Packages:" msgstr " DomyÅ›lne pakiety:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Pakiety opcjonalne:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Pakiety warunkowe:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "pakiet: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Brak zależnoÅ›ci dla tego pakietu" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " zależność: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " NierozwiÄ…zana zależność" #: ../output.py:901 msgid "Matched from:" msgstr "Dopasowano z:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licencja : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Nazwa pliku : %s" #: ../output.py:923 msgid "Other : " msgstr "Inne : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "WystÄ…piÅ‚ błąd podczas obliczania caÅ‚kowitego rozmiaru pobierania" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "CaÅ‚kowity rozmiar: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "CaÅ‚kowity rozmiar pobierania: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Rozmiar po zainstalowaniu: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "WystÄ…piÅ‚ błąd podczas obliczania rozmiaru po zainstalowaniu" #: ../output.py:1039 msgid "Reinstalling" msgstr "Ponowne instalowanie" #: ../output.py:1040 msgid "Downgrading" msgstr "Instalowanie poprzedniej wersji" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Instalowanie, aby rozwiÄ…zać zależnoÅ›ci" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Aktualizowanie, aby rozwiÄ…zać zależnoÅ›ci" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Usuwanie, aby rozwiÄ…zać zależnoÅ›ci" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "PominiÄ™to (problemy z zależnoÅ›ciami)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Nie zainstalowano" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Pakiet" #: ../output.py:1075 msgid "Arch" msgstr "Architektura" #: ../output.py:1076 msgid "Version" msgstr "Wersja" #: ../output.py:1076 msgid "Repository" msgstr "Repozytorium" #: ../output.py:1077 msgid "Size" msgstr "Rozmiar" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " zastÄ™puje %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Podsumowanie transakcji\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Instalacja %5.5s pakiet(y)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Aktualizacja %5.5s pakiet(y)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "UsuniÄ™cie %5.5s pakiet(y)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Ponowna instalacja %5.5s pakiet(y)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Instalacja poprzedniej wersji %5.5s pakiet(y)\n" #: ../output.py:1165 msgid "Removed" msgstr "UsuniÄ™to" #: ../output.py:1166 msgid "Dependency Removed" msgstr "UsuniÄ™to zależność" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Zainstalowano zależność" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Zaktualizowano zależność" #: ../output.py:1172 msgid "Replaced" msgstr "ZastÄ…piono" #: ../output.py:1173 msgid "Failed" msgstr "Nie powiodÅ‚o siÄ™" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dwóch" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Obecne pobieranie zostaÅ‚o anulowane, należy %sprzerwać (Ctrl-C) ponownie%s w ciÄ…gu %s%s%s sekund, aby zakoÅ„czyć pracÄ™.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "przerwane przez użytkownika" #: ../output.py:1300 msgid "Total" msgstr "Razem" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "System" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Pomijanie połączonej transakcji %d do %d, jako że nachodzÄ… na siebie" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Brak transakcji" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Podano błędne identyfikatory transakcji lub pakietów" #: ../output.py:1484 msgid "Command line" msgstr "Wiersz poleceÅ„" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Zalogowany użytkownik" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "Identyfikator" #: ../output.py:1489 msgid "Date and time" msgstr "Data i czas" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "CzynnoÅ›ci" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Zmieniono" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Nie podano identyfikatora transakcji" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Podano błędny identyfikator transakcji" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Nie odnaleziono podanego identyfikatora transakcji" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Odnaleziono wiÄ™cej niż jeden identyfikator transakcji." #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Podano błędny identyfikator transakcji lub pakietu" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Zainstalowano poprzedniÄ… wersjÄ™" #: ../output.py:1688 msgid "Older" msgstr "Starsze" #: ../output.py:1688 msgid "Newer" msgstr "Nowsze" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Identyfikator transakcji :" #: ../output.py:1728 msgid "Begin time :" msgstr "Czas rozpoczÄ™cia :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "RozpoczÄ™cie bazy danych RPM:" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u sekund)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minut)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u godzin)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u dni)" #: ../output.py:1756 msgid "End time :" msgstr "Czas ukoÅ„czenia :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "UkoÅ„czenie bazy danych RPM :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Użytkownik :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Kod zwrotny :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Przerwano" #: ../output.py:1773 msgid "Failures:" msgstr "Niepowodzenia:" #: ../output.py:1777 msgid "Failure:" msgstr "Niepowodzenie:" #: ../output.py:1779 msgid "Success" msgstr "Powodzenie" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Wiersz poleceÅ„ :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Przechowano dodatkowe niedomyÅ›lne informacje: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Wykonano transakcjÄ™ za pomocÄ…:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Zmienione pakiety:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "PominiÄ™te pakiety:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problemy bazy danych RPM:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "WyjÅ›cie skryptu:" #: ../output.py:1831 msgid "Errors:" msgstr "Błędy:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Instalacja" #: ../output.py:1839 msgid "Dep-Install" msgstr "Instalacja zależnoÅ›ci" #: ../output.py:1841 msgid "Obsoleting" msgstr "ZastÄ™powanie" #: ../output.py:1842 msgid "Erase" msgstr "UsuniÄ™cie" #: ../output.py:1843 msgid "Reinstall" msgstr "Ponowna instalacja" #: ../output.py:1844 msgid "Downgrade" msgstr "Instalacja poprzedniej wersji" #: ../output.py:1846 msgid "Update" msgstr "Aktualizacja" #: ../output.py:1909 msgid "Time" msgstr "Czas" #: ../output.py:1935 msgid "Last day" msgstr "Ostatni dzieÅ„" #: ../output.py:1936 msgid "Last week" msgstr "Ostatni tydzieÅ„" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Ostatnie dwa tygodnie" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Ostatnie trzy miesiÄ…ce" #: ../output.py:1939 msgid "Last 6 months" msgstr "Ostatnie pół roku" #: ../output.py:1940 msgid "Last year" msgstr "Ostatni rok" #: ../output.py:1941 msgid "Over a year ago" msgstr "Ponad rok temu" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Nie odnaleziono transakcji %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Identyfikator transakcji:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "DostÄ™pne sÄ… dodatkowe informacje o historii:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: nie odnaleziono dodatkowych danych dla tej nazwy" #: ../output.py:2106 msgid "installed" msgstr "zainstalowany" #: ../output.py:2107 msgid "an update" msgstr "zaktualizowany" #: ../output.py:2108 msgid "erased" msgstr "usuniÄ™ty" #: ../output.py:2109 msgid "reinstalled" msgstr "ponownie zainstalowany" #: ../output.py:2110 msgid "a downgrade" msgstr "zainstalowana poprzednia wersja" #: ../output.py:2111 msgid "obsoleting" msgstr "zastÄ™powany" #: ../output.py:2112 msgid "updated" msgstr "zaktualizowany" #: ../output.py:2113 msgid "obsoleted" msgstr "zastÄ…piony" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Pakiet %s.%s %s:%s-%s zostanie %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Wykonywanie sprawdzania transakcji" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Ponowne uruchamianie rozwiÄ…zywania zależnoÅ›ci z nowymi zmianami." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> UkoÅ„czono rozwiÄ…zywanie zależnoÅ›ci" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Przetwarzanie zależnoÅ›ci: %s dla pakietu: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Utrzymywanie pakietu: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> NierozwiÄ…zana zależność: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Pakiet: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Wymaga: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Nie odnaleziono" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Zaktualizowano przez" #: ../output.py:2197 msgid "Downgraded By" msgstr "Zainstalowano poprzedniÄ… wersjÄ™ przez" #: ../output.py:2198 msgid "Obsoleted By" msgstr "ZastÄ…piono przez" #: ../output.py:2216 msgid "Available" msgstr "DostÄ™pne" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Przetwarzanie konfliktów: %s jest w konflikcie z %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> UkÅ‚adanie zestawu transakcji z wybranymi pakietami. ProszÄ™ czekać." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "---> Pobieranie nagłówka dla %s do umieszczenia w zestawie transakcji." #: ../utils.py:99 msgid "Running" msgstr "Wykonywanie" #: ../utils.py:100 msgid "Sleeping" msgstr "Zasypianie" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Nie można przerywać" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Åšledzone/zatrzymane" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Nieznane" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Inna aplikacja to PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Inna aplikacja to: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Pamięć: %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Uruchomiono: %s - %s temu" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Stan: %s, PID: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "KoÅ„czenie dziaÅ‚ania na polecenie użytkownika" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "KoÅ„czenie dziaÅ‚ania z powodu przerwanego potoku" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Inna aplikacja obecnie blokuje program yum. KoÅ„czenie dziaÅ‚ania zgodnie z " "konfiguracjÄ… exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Błąd wyjÅ›cia wtyczki: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Błąd programu yum: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Błąd: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Można spróbować użyć --skip-broken, aby obejść problem" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Można spróbować wykonać polecenie: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Nieznane błędy: kod wyjÅ›cia: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "RozwiÄ…zano zależnoÅ›ci" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "UkoÅ„czono." #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " MaÅ‚e użycie:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Należy być zalogowanym jako root, aby wykonać to polecenie." #: ../yumcommands.py:59 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" "Włączono sprawdzanie pakietów za pomocÄ… kluczy GPG. To dobry pomysÅ‚, brak\n" "jednak zainstalowanych żadnych kluczy publicznych GPG. Należy pobrać klucze\n" "dla pakietów, które majÄ… zostać zainstalowane i zainstalować je.\n" "Można to zrobić wykonujÄ…c polecenie:\n" " rpm --import klucz.publiczny.gpg\n" "\n" "\n" "Można także podać adres URL klucza, który ma być używany dla repozytorium w\n" "opcji \"gpgkey\" w sekcji repozytorium, a program yum go zainstaluje.\n" "\n" "Aby dowiedzieć siÄ™ wiÄ™cej, proszÄ™ skontaktować siÄ™ z dostawcÄ… dystrybucji\n" "lub pakietu.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Błąd: wymagane jest przekazanie listy pakietów do %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Błąd: wymagany jest parametr do dopasowania" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Błąd: wymagana jest grupa lub lista grup" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Błąd: czyszczenie wymaga opcji: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Błąd: nieprawidÅ‚owy parametr czyszczenia: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Brak parametrów dla powÅ‚oki" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Przekazano nazwÄ™ pliku do powÅ‚oki: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Plik %s podany powÅ‚oce jako parametr nie istnieje." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Błąd: podano powÅ‚oce wiÄ™cej niż jeden plik jako parametr." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Brak włączonych repozytoriów.\n" " Wykonanie polecenia \"yum repolist all\" wyÅ›wietli wszystkie posiadane repozytoria.\n" " Można włączyć repozytoria za pomocÄ… polecenia yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKIET..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instaluje pakiet lub pakiety w systemie" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Ustawianie procesu instalacji" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKIET...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Aktualizuje pakiet lub pakiety w systemie" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Ustawianie procesu aktualizacji" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Synchronizuje zainstalowane pakiety do najnowszych dostÄ™pnych wersji" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Ustawianie procesu synchronizacji dystrybucji" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "WyÅ›wietla szczegóły o pakiecie lub grupie pakietów" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Zainstalowane pakiety" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "DostÄ™pne pakiety" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Dodatkowe pakiety" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Zaktualizowane pakiety" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "ZastÄ™powanie przestarzaÅ‚ych pakietów" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Ostatnio dodane pakiety" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Brak pakietów pasujÄ…cych do listy" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "WyÅ›wietla listÄ™ pakietów lub grup pakietów" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Usuwa pakiet lub pakiety z systemu" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Ustawianie procesu usuwania" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Ustawianie procesu grup" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Brak grup, na których można wykonać polecenie" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "WyÅ›wietla listÄ™ dostÄ™pnych grup pakietów" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instaluje pakiety z grupy w systemie" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Usuwa pakiety z grupy z systemu" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "WyÅ›wietla szczegóły o grupie pakietów" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Utworzy pamięć podrÄ™cznÄ… metadanych" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Tworzenie plików pamiÄ™ci podrÄ™cznej ze wszystkich plików metadanych." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Może to chwilÄ™ zająć, z zależnoÅ›ci od prÄ™dkoÅ›ci komputera" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Utworzono pamięć podrÄ™cznÄ… metadanych" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Usuwa dane z pamiÄ™ci podrÄ™cznej" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Wyszukuje pakiet dostarczajÄ…cy podanÄ… wartość" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Sprawdza dostÄ™pne aktualizacje pakietów" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Wyszukuje szczegóły pakietów dla podanego ciÄ…gu" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Wyszukiwanie pakietów: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Aktualizuje pakiety, w tym przestarzaÅ‚e" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Ustawianie procesu aktualizacji" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instaluje lokalny pakiet RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Ustawianie procesu lokalnego pakietu" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "OkreÅ›la, który pakiet dostarcza podanÄ… zależność" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Wyszukiwanie pakietów dla zależnoÅ›ci:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Uruchamia interaktywnÄ… powÅ‚okÄ™ programu yum" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Ustawianie powÅ‚oki programu yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "WyÅ›wietla listÄ™ zależnoÅ›ci pakietu" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Wyszukiwanie zależnoÅ›ci: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "WyÅ›wietla skonfigurowane repozytoria oprogramowania" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "włączone" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "wyłączone" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Identyfikator repozytorium : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Nazwa repozytorium : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Stan repozytorium : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Wersja repozytorium : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Znaczniki repozytorium : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Znaczniki dystrybucji repozytorium: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Aktualizacje repozytorium : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Pakiety repozytorium : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Rozmiar repozytorium : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Podstawowy adres URL repozytorium : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "MetaodnoÅ›nik repozytorium : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Zaktualizowano : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Serwery lustrzane repozytorium : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Nigdy (ostatnio: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Natychmiast (ostatnio: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s sekundy (ostatnio: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Wygaszenie repozytorium : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Wykluczenia z repozytorium : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Dołączone z repozytorium : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Wykluczenia z repozytorium : " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "identyfikator repozytorium" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "stan" #: ../yumcommands.py:1062 msgid "repo name" msgstr "nazwa repozytorium" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "WyÅ›wietla pomocny komunikat o używaniu" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Brak dostÄ™pnej pomocy dla %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "aliasy: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Ustawianie procesu ponownej instalacji" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "Ponownie instaluje pakiet" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Ustawianie procesu instalacji poprzedniej wersji pakietu" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Instaluje poprzedniÄ… wersjÄ™ pakietu" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "WyÅ›wietla wersjÄ™ dla komputera i/lub dostÄ™pnych repozytoriów." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Grupy wersji programu yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Grupa :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Pakiety:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Zainstalowano:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Zainstalowana grupa:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "DostÄ™pne:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "DostÄ™pne grupy:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "WyÅ›wietla lub używa historii transakcji" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "NieprawidÅ‚owe podpolecenie historii, należy użyć: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Brak dostÄ™pu do bazy danych historii." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "ProszÄ™ sprawdzić, czy wystÄ™pujÄ… problemy w bazie danych RPM" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "wczytuje zapisanÄ… transakcjÄ™ z nazwy pliku" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Nie podano zapisanego pliku transakcji." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "wczytywanie transakcji z %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Wczytano transakcjÄ™ z %s z %s elementami" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Sprawdzanie programu yum nie powiodÅ‚o siÄ™: %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Inna aplikacja obecnie blokuje program yum. Oczekiwanie na jej " "zakoÅ„czenie..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "Nie można utworzyć pliku blokady; koÅ„czenie dziaÅ‚ania" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "RozwiÄ…zywanie zależnoÅ›ci" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" "Transakcja zostaÅ‚a zapisana, można jÄ… ponownie wykonać za pomocÄ… polecenia: " "yum load-transaction %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "KoÅ„czenie dziaÅ‚ania na polecenie użytkownika." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Ustawianie zestawów transakcji przed włączeniem klasy konfiguracji" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" "NieprawidÅ‚owa flaga zestawu transakcji tsflag w pliku konfiguracji: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Wyszukiwanie zestawu pakietów dla zależnoÅ›ci: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Element: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s przekonwertowano do zainstalowania" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Dodawanie pakietu %s w trybie %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Usuwanie pakietu %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s wymaga: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s wymaga %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Wymagana zależność zostaÅ‚a już odnaleziona, oszukiwanie" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Wymagana zależność nie jest nazwÄ… pakietu. Wyszukiwanie: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Potencjalny dostawca: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Tryb to %s dla dostawcy %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Tryb dla pakietu dostarczajÄ…cego %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Próba zaktualizowania %s, aby rozwiÄ…zać zależność" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Nie odnaleziono Å›cieżek aktualizacji dla %s. Niepowodzenie." #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: pakiet %s wymagajÄ…cy %s zostaÅ‚ oznaczony jako do usuniÄ™cia" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: zastÄ™powanie przestarzaÅ‚ego pakietu %s pakietem %s, aby rozwiÄ…zać " "zależność." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: aktualizowanie %s, aby rozwiÄ…zać zależność." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Nie można odnaleźć Å›cieżki aktualizacji dla zależnoÅ›ci dla: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Szybko dopasowano %s jako wymaganie %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s jest w dostarczajÄ…cych pakietach, ale jest już zainstalowany, usuwanie." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" "Pakiet %s potencjalnie rozwiÄ…zujÄ…cy ma nowszÄ… wersjÄ™ w zestawie transakcji." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Pakiet %s potencjalnie rozwiÄ…zujÄ…cy ma zainstalowanÄ… nowszÄ… wersjÄ™." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s jest już w zestawie transakcji, pomijanie" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: oznaczanie %s jako aktualizacji dla %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: oznaczanie %s jako do zainstalowania dla %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Powodzenie - pusta transakcja" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Ponowne uruchamianie pÄ™tli" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "KoÅ„czenie procesu zależnoÅ›ci" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Powodzenie - rozwiÄ…zano zależnoÅ›ci" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Sprawdzanie zależnoÅ›ci dla %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "wyszukiwanie %s jako wymagania %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Wykonywanie compare_providers() dla %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "lepsze arch w po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s zastÄ™puje %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist porównaÅ‚o %s do %s na %s\n" " ZwyciÄ™zca: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "wspólny źródÅ‚owy pakiet RPM %s i %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "podstawowy pakiet %s jest zainstalowany dla %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "wspólny przedrostek %s dla %s i %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "wymaga minimum: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " ZwyciÄ™zca: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Przegrany (za pomocÄ… %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Najlepszy porzÄ…dek: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Repozytorium %r: błąd podczas przetwarzania konfiguracji: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" "Repozytorium %r nie posiada nazwy w konfiguracji, używanie identyfikatora" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "wtyczki zostaÅ‚y już zainicjowane" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Odczytywanie lokalnej bazy danych RPM" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Ustawianie zestawów pakietów" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "obiekt repozytorium %s nie posiada metody _resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "wiÄ™c to repozytorium nie może zostać przywrócone.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Budowanie obiektu aktualizacji" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Pobieranie metadanych grup" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Dodawanie pliku grup z repozytorium: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Dodanie pliku grup dla repozytorium nie powiodÅ‚o siÄ™: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Brak dostÄ™pnych grup we wszystkich repozytoriach" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Pobieranie metadanych znaczników pakietów" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Dodawanie znaczników z repozytorium: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" "Dodanie znaczników pakietów dla repozytorium nie powiodÅ‚o siÄ™: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Importowanie dodatkowych informacji o liÅ›cie plików" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Program %s%s%s można odnaleźć w pakiecie yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "PozostaÅ‚y nieukoÅ„czone transakcje. Można rozważyć wykonanie najpierw " "polecenia yum-complete-transaction, aby je ukoÅ„czyć." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Wyszukiwanie niepotrzebnych pozostaÅ‚ych zależnoÅ›ci" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Chronione wersje multilib: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Próbowanie usuniÄ™cia pakietu \"%s\", który jest chroniony" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Pakiety pominiÄ™to z powodu problemów z zależnoÅ›ciami:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s z %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Odnaleziono %d wczeÅ›niej istniejÄ…cych problemów bazy danych RPM. Wynik " "polecenia \"yum check\":" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Ostrzeżenie: baza danych RPM zostaÅ‚a zmieniona poza programem yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "brak wymaganych" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "zainstalowano konflikt" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Ostrzeżenie: podczas transakcji wystÄ…piÅ‚ skrypt lub inne nie krytyczne " "błędy." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Nie można rozpocząć transakcji:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Nie można wykonać transakcji." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "UsuniÄ™cie pliku transakcji %s nie powiodÅ‚o siÄ™" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s miaÅ‚o zostać zainstalowane, ale nie zostaÅ‚o." #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s miaÅ‚o zostać usuniÄ™te, ale nie zostaÅ‚o." #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Nie można otworzyć blokady %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Nie można sprawdzić, czy PID %s jest aktywny" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Istnieje blokada %s: inna kopia jest uruchomiona jako PID %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Nie można utworzyć blokady na %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Pakiet nie zgadza siÄ™ z zamierzonym pobieraniem. Sugestia: proszÄ™ wykonać " "polecenie yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Nie można wykonać sprawdzenia sum kontrolnych" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Sumy kontrolne pakietu nie zgadzajÄ… siÄ™" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "sprawdzenie sum kontrolnych pakietu nie powiodÅ‚o siÄ™, ale zapisywanie w " "pamiÄ™ci podrÄ™cznej dla %s jest włączone" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "używanie lokalnej kopii %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "NiewystarczajÄ…ca ilość miejsca w katalogu pobierania %s\n" " * wolne %s\n" " * wymagane %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Nagłówek nie jest peÅ‚ny." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Nagłówek nie jest w lokalnej pamiÄ™ci podrÄ™cznej, a tryb używania tylko " "pamiÄ™ci podrÄ™cznej jest włączony. Nie można pobrać %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Klucz publiczny dla %s nie jest zainstalowany" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "WystÄ…piÅ‚ problem podczas otwierania pakietu %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Klucz publiczny dla %s nie jest zaufany" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Pakiet %s nie jest podpisany" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Nie można usunąć %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "UsuniÄ™to %s" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Nie można usunąć %s pliku %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "UsuniÄ™to %s plik %s" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "UsuniÄ™to %d %s plików" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "WiÄ™cej niż jeden identyczny wynik znajduje siÄ™ w zestawie dla %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Nic nie pasuje do %s.%s %s:%s-%s z aktualizacji" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() zostanie usuniÄ™te w przyszÅ‚ych wersjach programu yum." " Zamiast tego należy użyć searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Wyszukiwanie %d pakietów" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "wyszukiwanie pakietu %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "wyszukiwanie we wpisach plików" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "wyszukiwanie we wpisach dostarczania" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Brak dostÄ™pnych danych grup dla skonfigurowanych repozytoriów" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Grupa o nazwie %s nie istnieje" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "pakiet %s nie zostaÅ‚ oznaczony w grupie %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Dodawanie pakietu %s z grupy %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Brak dostÄ™pnego pakietu o nazwie %s do zainstalowania" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Ostrzeżenie: grupa %s nie posiada żadnych pakietów." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" "Grupa %s posiada %u pakiety warunkowe, które mogÄ… zostać zainstalowane." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Nie można odnaleźć krotki pakietu %s w zestawie pakietów" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Nie można odnaleźć krotki pakietu %s w bazie danych RPM" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "NieprawidÅ‚owa flaga wersji z: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nie odnaleziono pakietu %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Obiekt pakietu nie byÅ‚ instancjÄ… obiektu pakietu" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Nie podano nic do zainstalowania" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Sprawdzanie wirtualnych zależnoÅ›ci lub plików dla %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Brak wyników dla parametru: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Pakiet %s jest zainstalowany, ale nie jest dostÄ™pny" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Brak pakietów dostÄ™pnych do instalacji" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Pakiet: %s - jest już w zestawie transakcji" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Pakiet %s zostaÅ‚ zastÄ…piony przez %s, który jest już zainstalowany" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Pakiet %s zostaÅ‚ zastÄ…piony przez %s, ale zastÄ™pujÄ…cy pakiet nie speÅ‚nia " "wymagaÅ„" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "Pakiet %s zostaÅ‚ zastÄ…piony przez %s, próbowanie instalacji %s zamiast niego" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Pakiet %s jest już zainstalowany w najnowszej wersji" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Pakiet pasujÄ…cy do %s jest już zainstalowany. Sprawdzanie aktualizacji." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Aktualizowanie wszystkiego" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "PrzestarzaÅ‚y pakiet nie zostanie zaktualizowany: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Pakiet zostaÅ‚ już zastÄ…piony: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "PrzestarzaÅ‚y pakiet nie zostanie zaktualizowany: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Już zaktualizowany pakiet nie zostanie zaktualizowany: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Brak pasujÄ…cych pakietów do usuniÄ™cia" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Pomijanie uruchomionego jÄ…dra: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Usuwanie %s z transakcji" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Nie można otworzyć: %s. Pomijanie." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Sprawdzanie %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Nie można lokalnie zainstalować pakietu RPM delta: %s. Pomijanie." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "Nie można dodać pakietu %s do transakcji. Niezgodna architektura: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Nie można zainstalować pakietu %s. ZostaÅ‚ zastÄ…piony zainstalowanym pakietem" " %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Pakiet %s nie jest zainstalowany, nie można go zaktualizować. ProszÄ™ wykonać" " polecenie yum install, aby go zainstalować." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Pakiet %s.%s nie jest zainstalowany, wiÄ™c nie może zostać zaktualizowany. " "Należy wykonać polecenie yum install, aby go zainstalować." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Wykluczanie %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Oznaczanie %s do zainstalowania" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Oznaczanie %s jako aktualizacji %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: nie aktualizuj zainstalowanego pakietu." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Nie można otworzyć pliku: %s. Pomijanie." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Podczas ponownego instalowania wystÄ…piÅ‚ problem: brak pasujÄ…cych pakietów do" " usuniÄ™cia" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Podczas ponownego instalowania wystÄ…piÅ‚ problem: brak pakietu %s pasujÄ…cego " "do zainstalowania" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Brak pakietów dostÄ™pnych do instalacji poprzedniej wersji" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Pakiet %s może być wielokrotnie instalowany, pomijanie" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Brak wyników dla dostÄ™pnych pakietów: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Dla pakietu dostÄ™pna jest tylko aktualizacja: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Zainstalowanie poprzedniej wersji nie powiodÅ‚o siÄ™: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Pobieranie klucza z %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Pobranie klucza GPG nie powiodÅ‚o siÄ™: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "Podpis GPG klucza %s nie pasuje do klucza CA dla repozytorium: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "Podpis GPG klucza zostaÅ‚ sprawdzony za pomocÄ… kluczy CA" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "NieprawidÅ‚owy klucz GPG z %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" "Przetworzenie klucza GPG nie powiodÅ‚o siÄ™: klucz nie posiada wartoÅ›ci %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Importowanie %s klucza 0x%s:\n" " Identyfikator użytkownika: %s\n" " Pakiet : %s (%s)\n" " Od : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Importowanie %s klucza 0x%s:\n" " Identyfikator użytkownika: \"%s\"\n" " Od : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "Klucz GPG %s (0x%s) jest już zainstalowany" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Zaimportowanie klucza nie powiodÅ‚o siÄ™ (kod %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Klucz zostaÅ‚ pomyÅ›lnie zaimportowany" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Nie zainstalowano żadnych kluczy" #: ../yum/__init__.py:4680 #, 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 "" "Klucze GPG wyÅ›wietlone dla repozytorium \"%s\" sÄ… już zainstalowane, ale nie sÄ… poprawne dla tego pakietu.\n" "ProszÄ™ sprawdzić, czy dla tego repozytorium skonfigurowane sÄ… poprawne adresy URL do kluczy." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Zaimportowanie kluczy nie pomogÅ‚o, błędne klucze?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "Klucz GPG %s (0x%s) zostaÅ‚ już zaimportowany" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Zaimportowanie klucza nie powiodÅ‚o siÄ™" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Nie zainstalowano żadnych kluczy dla repozytorium %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Klucze GPG wyÅ›wietlone dla repozytorium \"%s\" sÄ… już zainstalowane, ale nie sÄ… poprawne.\n" "ProszÄ™ sprawdzić, czy dla tego repozytorium skonfigurowane sÄ… poprawne adresy URL do kluczy." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Nie można odnaleźć odpowiedniego serwera lustrzanego." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "WystÄ…piÅ‚y błędy podczas pobierania pakietów." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "ProszÄ™ zgÅ‚osić ten błąd na %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Błędy testu transakcji: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Nie można ustawić katalogu pamiÄ™ci podrÄ™cznej: %s " #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" "ZależnoÅ›ci nie zostaÅ‚y rozwiÄ…zane. NierozwiÄ…zana transakcja nie zostanie " "zapisana." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Nie można zapisać pliku transakcji %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Nie można uzyskać dostÄ™pu/odczytać zapisanej transakcji %s: %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "wersja bazy danych RPM nie zgadza siÄ™ z wersjÄ… zapisanej transakcji, " #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " ignorowanie, jak zażądano." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " przerywanie." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "nie można odnaleźć tsflags lub nie jest liczbÄ… caÅ‚kowitÄ…." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Odnaleziono txmbr w nieznanym obecnym stanie: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Nie można odnaleźć txmbr: %s w stanie %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Nie można odnaleźć txmbr: %s z pierwotnego: %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "Brak elementów transakcji, zwiÄ…zków lub ts zostaÅ‚o zmodyfikowane," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " ignorowanie, jak zażądano. Należy rozwiÄ…zać zależnoÅ›ci." #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Wczytane wtyczki: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Brak wyników dla wtyczki: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Wtyczka \"%s\" nie zostaÅ‚a wczytana, ponieważ jest wyłączona" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Nie można zaimportować wtyczki \"%s\"" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Wtyczka \"%s\" nie okreÅ›la wymaganej wersji API" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Wtyczka \"%s\" wymaga API %s. ObsÅ‚ugiwane API to %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Wczytywanie wtyczki \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "IstniejÄ… dwie lub wiÄ™cej wtyczek o nazwie \"%s\" w Å›cieżce wyszukiwania " "wtyczek" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Nie odnaleziono pliku konfiguracji %s" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Nie można odnaleźć pliku konfiguracji dla wtyczki %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "rejestracja poleceÅ„ nie jest obsÅ‚ugiwana" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "posiada brakujÄ…ce wymagania" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "posiada zainstalowane konflikty" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s jest duplikatem %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s zostaje zastÄ…piony przez %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s dostarcza %s, ale nie można go odnaleźć" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Ponowne tworzenie pakietu" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "Nie można otworzyć nagłówka lub nie pasuje do %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "Sprawdzenie MD5 pakietu RPM %s nie powiodÅ‚o siÄ™" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Nie można otworzyć bazy danych RPM do odczytania. Może jest już używana?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Otrzymano pusty nagłówek, coÅ› poszÅ‚o źle" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Uszkodzony nagłówek %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Błąd podczas otwierania pakietu RPM %s - błąd %s" yum-3.4.3/po/gu.po0000664000076400007640000021453111602434452012725 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # sweta , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Gujarati (http://www.transifex.net/projects/p/yum/team/gu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gu\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "સà«àª§àª¾àª°à«€ રહà«àª¯àª¾ છે" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "દૂર કરી રહà«àª¯àª¾ છે" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "સà«àª¥àª¾àªªàª¿àª¤ કરી રહà«àª¯àª¾ છે" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "અપà«àª°àªšàª²àª¿àª¤ થયેલ" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "સà«àª§àª¾àª°à«‡àª²" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "દૂર કરેલ" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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:1038 ../output.py:2193 msgid "Removing" msgstr "દૂર કરી રહà«àª¯àª¾ છે" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "સાફ કરો" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "આદેશ \"%s\" પહેલેથી જ વà«àª¯àª¾àª–à«àª¯àª¾àª¯àª¿àª¤ થયેલ છે" #: ../cli.py:127 msgid "Setting up repositories" msgstr "રિપોàªà«€àªŸàª°à«€àª“ને સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "સà«àª¥àª¾àª¨àª¿àª¯ ફાઇલોમાંથી રિપોàªà«€àªŸàª°à«€ મેટાડેટાને વાંચી રહà«àª¯àª¾ છે" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "રૂપરેખાંકન ભૂલ: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "વિકલà«àªªà«‹ ભૂલ: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " સà«àª¥àª¾àªªàª¿àª¤ થયેલ: %s-%s પર %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "તમારે અમà«àª• આદેશને આપવાની જરૂર છે" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "આવો આદેશ નથી: %s. મહેરબાની કરીને %s --help વાપરો" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "ડિસà«àª• જરૂરિયાતો:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "ભૂલ સારાંશ\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "વપરાશકરà«àª¤àª¾ આદેશ પર બહાર નીકળી રહà«àª¯àª¾ છે" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "પેકેજોને ડાઉનલોડ કરી રહà«àª¯àª¾ છે:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "પેકેજોને ડાઉનલોડ કરતી વખતે ભૂલ:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM ને સà«àª§àª¾àª°àªµàª¾àª¨à«€ જરૂર છે" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "મહેરબાની કરીને %s માં આ ભૂલનો અહેવાલ કરો" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "પેકેજ(ઓ) %s%s%s ઉપલબà«àª§ છે, પરંતૠસà«àª¥àª¾àªªàª¿àª¤ થયેલ છે." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "પેકેજ %s%s%s ઉપલબà«àª§ નથી." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "સà«àª¥àª¾àªªàª¿àª¤ કરવા માટે પેકેજ (ઓ)" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "કંઇ કરવાનૠનથી" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "સà«àª§àª¾àª°àªµàª¾ માટે %d પેકેજો ચિહà«àª¨àª¿àª¤ થયેલ છે" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "સà«àª§àª¾àª°àªµàª¾ માટે પેકેજો ચિહà«àª¨àª¿àª¤ થયેલ નથી" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "દૂર કરવા માટે %d પેકેજો ચિહà«àª¨àª¿àª¤ થયેવ છે" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "દૂર કરવા માટે પેકેજો ચિહà«àª¨àª¿àª¤ થયેલ નથી" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (%s માંથી)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ પેકેજ %s%s%s%s ઉપલબà«àª§ નથી." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "પà«àª¨:સà«àª¥àª¾àªªàª¿àª¤ કરવા માટે પેકેજ (ઓ)" #: ../cli.py:960 msgid "No Packages Provided" msgstr "પેકેજો પૂરા પાડેલ નથી" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "ચેતવણી: તેની માટે બંધબેસતૠમળà«àª¯à« નથી: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "%s માટે પેકેજ મળà«àª¯à« નથી" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "બધૠજ સાફ કરી રહà«àª¯àª¾ છે" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "હેડરો સાફ કરી રહà«àª¯àª¾ છે" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "પેકેજો સાફ કરી રહà«àª¯àª¾ છે" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "xml મેટાડેટા સાફ કરી રહà«àª¯àª¾ છે" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "ડેટાબેઠકેશ સાફ કરી રહà«àª¯àª¾ છે" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "પà«àª²àª—ઇનને સાફ કરી રહà«àª¯àª¾ છે" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ જૂથો:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "ઉપલબà«àª§ જૂથો:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "ચેતવણી: જૂથ %s અસà«àª¤àª¿àª¤à«àªµ ધરાવતૠનથી." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "સà«àª¥àª¾àªªàª¿àª¤ અથવા સà«àª§àª¾àª°àªµàª¾ ઉપલબà«àª§ કોઇપણ સૂચિત થયેલ જૂથમાં પેકેજો નથી" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "સà«àª¥àª¾àªªàª¿àª¤ કરવા માટે %d પેકેજ(ઓ)" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "જૂથોમાંથી દૂર કરવા માટે પેકેજો નથી" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "દૂર કરવા માટે %d પેકેજ(ઓ)" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "પેકેજ %s પહેલેથી જ સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે, છોડી રહà«àª¯àª¾ છે" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "પà«àª²àª—ઇન વિકલà«àªªà«‹" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "આદેશ વાકà«àª¯ ભૂલ: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s વિકલà«àªªàª¨à«‡ દલીલની જરૂર છે" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "રૂપરેખાંકન ફાઇલ સà«àª¥àª¾àª¨" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "ડિબગીંગ આઉટપà«àªŸ લેવલ" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "ભૂલ આઉટપà«àªŸ લેવલ" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "rpm માટે ડિબગીંગ આઉટપà«àªŸ લેવલ" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "બધા પà«àª°àª¶à«àª°à«àª¨à«‹ માટે જવાબ હાં" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "Yum આવૃતà«àª¤àª¿ બતાવો અને બહાર નીકળો" #: ../cli.py:1676 msgid "set install root" msgstr "સà«àª¥àª¾àªªàª¨ રà«àªŸ સà«àª¯à«‹àªœàª¿àª¤ કરો" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "àªàª• અથવા વધારે રિપોàªà«€àªŸàª°à«€àª“ને સકà«àª°àª¿àª¯ કરો (વાઇલà«àª¡àª•ારà«àª¡àª¨à«‡ પરવાનગી આપેલ છે)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" "àªàª• અથવા વધારે રિપોàªà«€àªŸàª°à«€àª“ને નિષà«àª•à«àª°àª¿àª¯ કરો (વાઇલà«àª¡àª•ારà«àª¡àª¨à«‡ પરવાનગી આપેલ છે)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "Yum પà«àª²àª—ઇનને નિષà«àª•à«àª°àª¿àª¯ કરો" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "નામ પà«àª°àª®àª¾àª£à«‡ પà«àª²àª—ઇનને નિષà«àª•à«àª°àª¿àª¯ કરો" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "નામ પà«àª°àª®àª¾àª£à«‡ પà«àª²àª—ઇનને સકà«àª°àª¿àª¯ કરો" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "જાનà«àª¯à«àª†àª°à«€" #: ../output.py:307 msgid "Feb" msgstr "ફેબà«àª°à«àª†àª°à«€" #: ../output.py:307 msgid "Mar" msgstr "મારà«àªš" #: ../output.py:307 msgid "Apr" msgstr "àªàªªà«àª°àª¿àª²" #: ../output.py:307 msgid "May" msgstr "મે" #: ../output.py:307 msgid "Jun" msgstr "જà«àª¨" #: ../output.py:308 msgid "Jul" msgstr "જà«àª²àª¾àª‡" #: ../output.py:308 msgid "Aug" msgstr "ઑગસà«àªŸ" #: ../output.py:308 msgid "Sep" msgstr "સપà«àªŸà«‡àª®à«àª¬àª°" #: ../output.py:308 msgid "Oct" msgstr "ઑકà«àªŸà«‹àª®à«àª¬àª°" #: ../output.py:308 msgid "Nov" msgstr "નવેમà«àª¬àª°" #: ../output.py:308 msgid "Dec" msgstr "ડિસેમà«àª¬àª°" #: ../output.py:318 msgid "Trying other mirror." msgstr "બીજા મિરર માટે પà«àª°àª¯àª¤à«àª¨ કરી રહà«àª¯àª¾ છે." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "નામ : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "આવૃતà«àª¤àª¿ : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "માપ : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "સારાંશ : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "લાઇસનà«àª¸ : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "વરà«àª£àª¨ : " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "હાં" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "નાં" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "શà«àª‚ આ બરાબર છે [y/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "જૂથ: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " જૂથ-Id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " વરà«àª£àª¨: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " ફરજિયાત પેકેજો:" #: ../output.py:791 msgid " Default Packages:" msgstr " મૂળભૂત પેકેજો:" #: ../output.py:792 msgid " Optional Packages:" msgstr " વૈકલà«àªªàª¿àª• પેકેજો:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " શરતી પેકેજો:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "પેકેજ: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "લાઇસનà«àª¸ : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "ફાઇલનામ : %s" #: ../output.py:923 msgid "Other : " msgstr "બીજા : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "કà«àª² માપ: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "કà«àª² ડાઉનલોડ માપ: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ માપ: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "પà«àª¨:સà«àª¥àª¾àªªàª¿àª¤ કરી રહà«àª¯àª¾ છે" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ નથી" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "પેકેજ" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "આવૃતà«àª¤àª¿" #: ../output.py:1076 msgid "Repository" msgstr "રિપોàªà«€àªŸàª°à«€" #: ../output.py:1077 msgid "Size" msgstr "માપ" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "દૂર કરેલ" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "નિષà«àª«àª³" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "કà«àª²" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "સિસà«àªŸàª®" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "તારીખ અને સમય" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "કà«àª°àª¿àª¯àª¾ (ઓ)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "વપરાશકરà«àª¤àª¾ :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "નિષà«àª«àª³àª¤àª¾:" #: ../output.py:1779 msgid "Success" msgstr "સફળતા" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "આદેશ વાકà«àª¯ :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb સમસà«àª¯àª¾àª“:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "ભૂલો:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "ભૂંસી નાખો" #: ../output.py:1843 msgid "Reinstall" msgstr "પà«àª¨:સà«àª¥àª¾àªªàª¿àª¤ કરો" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "સà«àª§àª¾àª°àªµà«àª‚" #: ../output.py:1909 msgid "Time" msgstr "સમય" #: ../output.py:1935 msgid "Last day" msgstr "છેલà«àª²à«‹ દિવસ" #: ../output.py:1936 msgid "Last week" msgstr "છેલà«àª²à« અઠવાડિયà«àª‚" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "છેલà«àª²àª¾ 2 અઠવાડિયાઓ" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "છેલà«àª²àª¾ 3 મહિનાઓ" #: ../output.py:1939 msgid "Last 6 months" msgstr "છેલà«àª²àª¾ 6 મહિનાઓ" #: ../output.py:1940 msgid "Last year" msgstr "છેલà«àª²à« વરà«àª·" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "ઉપલબà«àª§ વધારાની ઇતિહાસ જાણકારી:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: આ નામ પà«àª°àª®àª¾àª£à«‡ વધારાની માહિતી મળી નથી" #: ../output.py:2106 msgid "installed" msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "ભૂંસી નાખેલ" #: ../output.py:2109 msgid "reinstalled" msgstr "પà«àª¨:સà«àª¥àª¾àªªàª¿àª¤ થયેલ" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "સà«àª§àª¾àª°à«‡àª²" #: ../output.py:2113 msgid "obsoleted" msgstr "અપà«àª°àªšàª²àª¿àª¤ થયેલ" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> પેકેજને રાખી રહà«àª¯àª¾ છે: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "પેકેજ: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " મળà«àª¯à« નથી" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "ઉપલબà«àª§" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "ચાલી રહà«àª¯à« છે" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "અજà«àªžàª¾àª¤" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " મેમરી : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit ભૂલ: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum ભૂલ: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "ભૂલ: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "સમાપà«àª¤!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "આ આદેશને ચલાવવા માટે તમારે રà«àªŸàª®àª¾àª‚ હોવૠજરૂરી છે." #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PACKAGE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "તમારી સિસà«àªŸàª® પર પેકેજ અથવા પેકેજોને સà«àª¥àª¾àªªàª¿àª¤ કરો" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "સà«àª¥àª¾àªªàª¨ પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છે" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PACKAGE...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "તમારી સિસà«àªŸàª® પર પેકેજ અથવા પેકેજોને સà«àª§àª¾àª°àªµà«àª‚" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "સà«àª§àª¾àª°àªµàª¾àª¨à«€ પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ પેકેજો" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "ઉપલબà«àª§ પેકેજો" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "વધારાનાં પેકેજો" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "સà«àª§àª¾àª°à«‡àª² પેકેજો" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "પેકેજોને અપà«àª°àªšàª²àª¿àª¤ કરી રહà«àª¯àª¾ છે" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "હમણાંજ ઉમેરેલ પેકેજો" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "દૂર કરવાની પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "જૂથ પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "ઉપલબà«àª§ પેકેજ જૂથોની યાદી કરો" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "તમારી સિસà«àªŸàª® પર જૂથમાં પેકેજોને સà«àª¥àª¾àªªàª¿àª¤ કરો" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "તમારી સિસà«àªŸàª®àª®àª¾àª‚થી જૂથમાં પેકેજોને દૂર કરો" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "પેકેજ જૂથ વિશે વિગતોને દરà«àª¶àª¾àªµà«‹" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "બધી મેટાડેટા ફાઇલો માટે કેશ ફાઇલો બનાવી રહà«àª¯àª¾ છે." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "મેટાડેટા કેશ બનાવી" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "કેશ થયેલ માહિતીને દૂર કરો" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "ઉપલબà«àª§ પેકેજ સà«àª§àª¾àª°àª¾àª“ માટે ચકાસો" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "પેકેજોને શોધી રહà«àª¯àª¾ છે: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "અદà«àª¯àª¤àª¨ બનાવવાની પà«àª°àª•à«àª°àª¿àª¯àª¾ સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "સà«àª¥àª¾àª¨àª¿àª¯ RPM ને સà«àª¥àª¾àªªàª¿àª¤ કરો" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "સà«àª¥àª¾àª¨àª¿àª¯ પેકેજ પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Yum Shell ને સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છીàª" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "રૂપરેખાંકિત થયેલ સોફà«àªŸàªµà«‡àª° રિપોàªà«€àªŸàª°à«€àª“ને દરà«àª¶àª¾àªµà«‹" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "સકà«àª°àª¿àª¯" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "નિષà«àª•à«àª°àª¿àª¯" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "પરિસà«àª¥àª¿àª¤àª¿" #: ../yumcommands.py:1062 msgid "repo name" msgstr "રિપોàªà«€àªŸàª°à«€ નામ" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "%s માટે ઉપલબà«àª§ મદદ નથી" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "પેકેજને પà«àª¨:સà«àª¥àª¾àªªàª¿àª¤ કરો" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum આવૃતà«àª¤àª¿ જૂથો:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " જૂથ :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " પેકેજો:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "સà«àª¥àª¾àªªàª¿àª¤ થયેલ:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "ઉપલબà«àª§:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "જૂથ-ઉપલબà«àª§:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "rpmdb માં સમસà«àª¯àª¾àª“ માટે ચકાસો" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "સભà«àª¯: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "પેકેજ %s ને દૂર કરી રહà«àª¯àª¾ છે" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "લà«àªª પà«àª¨:શરૂ કરી રહà«àª¯àª¾ છે" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "%s માટે compare_providers() ચલાવી રહà«àª¯àª¾ છે" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "સામાનà«àª¯ sourcerpm %s અને %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " વિજેતા: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "પà«àª²àª—ઇન પહેલેથી જ પà«àª°àª¾àª°àª‚ભ થયેલ છે" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "સà«àª¥àª¾àª¨àª¿àª¯ RPMDB ને વાંચી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "જૂથ મેટાડેટાને મેળવી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "રિપોàªà«€àªŸàª°à«€ માથી જૂથ ફાઇલને ઉમેરી રહà«àª¯àª¾ છે: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "કોઇપણ રિપોàªà«€àªŸàª°à«€àª®àª¾àª‚ જૂથો ઉપલબà«àª§ નથી" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "રિપોàªà«€àªŸàª°à«€àª®àª¾àª‚થી ટૅગને ઉમેરી રહà«àª¯àª¾ છે: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "વધારાની ફાઇલયાદી જાણકારીને આયાત કરી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "\"%s\" દૂર કરવા માટે પà«àª°àª¯àª¤à«àª¨ કરી રહà«àª¯àª¾ છે, કે જે સà«àª°àª•à«àª·àª¿àª¤ થયેલ છે" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "તાળૠ%s ને ખોલી શકà«àª¯àª¾ નહિં: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "ચકાસવાનà«àª‚ અસમરà«àª¥ જો PID %s સકà«àª°àª¿àª¯ છે" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "%s ની સà«àª¥àª¾àª¨àª¿àª• નકલને વાપરી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "હેડર પૂરà«àª£ નથી." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "%s માટે સારà«àªµàªœàª¨àª¿àª• કી સà«àª¥àª¾àªªàª¿àª¤ થયેલ નથી" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "પેકેજ %s ને ખોલી રહà«àª¯àª¾ હોય તà«àª¯àª¾àª°à«‡ સમસà«àª¯àª¾" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "પેકેજ %s હસà«àª¤àª¾àª•à«àª·àª° થયેલ નથી" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "%s ને દૂર કરી શકાતૠનથી" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s દૂર થયેલ છે" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s ફાઇલો દૂર થયેલ છે" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "%d પેકેજોને શોધી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "પેકેજ %s ને શોધી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "રૂપરેખાંકિત થયેલ રિપોàªà«€àªŸàª°à«€àª“ માટે ઉપલબà«àª§ જૂથ માહિતી નથી" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "નામ થયેલ જૂથ %s અસà«àª¤àª¿àª¤à«àªµ ધરાવતૠનથી" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "જૂથ %s માંથી પેકેજ %s ને ઉમેરી રહà«àª¯àª¾ છે" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "સà«àª¥àª¾àªªàª¿àª¤ કરવા માટે નામ થયેલ પેકેજ %s ઉપલબà«àª§ નથી" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "%s માટે પેકેજ મળà«àª¯à« નથી" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "સà«àª¥àª¾àªªàª¿àª¤ કરવા માટે કઇ જ સà«àªªàª·à«àªŸ થયેલ નથી" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "પેકેજ %s સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે અને ઉપલબà«àª§ નથી" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "સà«àª¥àª¾àªªàª¿àª¤ કરવા માટે પેકેજ (ઓ) ઉપલબà«àª§ નથી" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "બધૠજ સà«àª§àª¾àª°à«€ રહà«àª¯àª¾ છે" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "પેકેજ પહેલેથી જ અપà«àª°àªšàª²àª¿àª¤ થયેલ છે: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "પેકેજને સà«àª§àª¾àª°à«€ રહà«àª¯àª¾ નથી કે જે અપà«àª°àªšàª²àª¿àª¤ થયેલ છે: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "પેકેજને સà«àª§àª¾àª°à«€ રહà«àª¯àª¾ નથી કે જે પહેલેથી જ સà«àª§àª¾àª°à«‡àª² છે: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "%s નà«àª‚ પરિકà«àª·àª£ કરી રહà«àª¯àª¾ છે: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: સà«àª¥àª¾àªªàª¿àª¤ પેકેજોને સà«àª§àª¾àª°àª¾àª¤à« નથી." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "ઉપલબà«àª§ પેકેજ માટે બંધબેસતૠનથી: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "%s માંથી અયોગà«àª¯ GPG કી: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "cachedir ને સà«àª¯à«‹àªœàª¿àª¤ કરી શકà«àª¯àª¾ નહિં: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "લોડ થયેલ પà«àª²àª—ઇન: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "પà«àª²àª—ઇન \"%s\" ને આયાત કરી શકાતૠનથી" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "\"%s\" પà«àª²àª—ઇનને લાવી રહà«àª¯àª¾ છે" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "રૂપરેખાંકન ફાઇલ %s મળà«àª¯à« નથી" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "પà«àª²àª—ઇન %s માટે રૂપરેખાંકન ફાઇલ શોધવામાં અસમરà«àª¥" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "આદેશોનà«àª‚ રજીસà«àªŸà«àª°à«‡àª¶àª¨ આધારભૂત નથી" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/ca.po0000664000076400007640000022274311602434452012701 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Actualitzant" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Suprimint" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instal·lant" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Obsolet" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Actualitzat" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Suprimit" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Instal·lat" #: ../callback.py:130 msgid "No header - huh?" msgstr "No hi ha capçalera" #: ../callback.py:168 msgid "Repackage" msgstr "Reempaqueta" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Error: estat de sortida invàlid: %s per a %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Suprimit: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Suprimint" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Neteja" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "L'ordre «%s» ja està definida" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Configurant repositoris" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "S'estan llegint les metadades de repositoris des de fitxers locals" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Error de configuració: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Error d'opcions: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Instal·lat: %s-%s a %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Muntat : %s a %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Pujat: %s a %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Cal que doneu alguna ordre" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Requeriments de disc:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Resum d'errors\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "S'ha intentat executar la transacció però no hi ha cap tasca a fer. S'està " "sortint." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "S'està sortint de l'ordre de l'usuari" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "S'estan baixant els següents paquets:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "S'ha produït un error baixant els següents paquets:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "S'ha produït un error. Necessiteu actualitzar el gestor rpm:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "Cal actualitzar l'RPM" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Siusplau, informeu d'aquest error a %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "S'està executant la transacció de prova" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "S'ha produït un error en la transacció de prova:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "La transacció de prova ha acabat amb èxit" #: ../cli.py:600 msgid "Running Transaction" msgstr "S'està executant la transacció" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "No s'importaran automàticament les claus en una execució desatesa.\n" "Feu servir \"-y\" per a importar les claus." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Potser volíeu dir: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Paquets %s%s%s disponibles, però no instal·lats." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "El paquet %s%s%s no està disponible." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paquets a instal·lar" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Res a fer" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paquets marcats per a actualitzar" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "No hi ha cap paquet marcat per a actualitzar" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paquets marcats per a suprimir" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "No hi ha cap paquet marcat per a suprimir" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paquets per a desactualitzar" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (des de %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "El paquet instal·lat %s%s%s%s no està disponible." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paquets a reinstal·lar" #: ../cli.py:960 msgid "No Packages Provided" msgstr "No s'ha proporcionat cap paquet" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Avís: no s'ha trobat cap coincidència per a: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "No s'ha trobat cap coincidència" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "No s'ha trobat cap paquet per a %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "S'està netejant tot" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "S'estan netejant les capçaleres" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "S'estan netejant els paquets" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "S'estan netejant les metadades xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "S'està netejant la memòria cau de la base de dades" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "S'està netejant la memòria cau de metadades que han vençut" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "S'estan netejant els connectors" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Grups instal·lats:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Grups disponibles:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Fet" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Avís: El grup %s no existeix." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "No hi ha cap paquet disponible per a instal·lar o actualitzar en els grups " "sol·licitats" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d paquets a instal·lar" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "No existeix cap grup anomenat %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "No hi ha cap paquet a suprimir dels grups" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d paquets a suprimir" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "El paquet %s ja està instal·lat, s'ometrà" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "S'està descartant el paquet no comparable %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "No hi ha cap altre %s instal·lat, s'afegeix a la llista per a una possible " "instal·lació" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opcions del connector" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Error en la línia d'ordres: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: l'opció %s necessita un argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color pren un valor d'entre: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "mostra el missatge d'ajuda i surt" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "sigues tolerant amb els errors" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "ubicació del fitxer de configuració" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "temps màxim d'espera d'ordres" #: ../cli.py:1657 msgid "debugging output level" msgstr "nivell de sortida de depuració" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "mostra duplicats, en repositoris, en les ordres per llistar i cercar" #: ../cli.py:1663 msgid "error output level" msgstr "nivell de sortida d'error" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "operació silenciosa" #: ../cli.py:1671 msgid "verbose operation" msgstr "operació descriptiva" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "respon sí a totes les preguntes" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "mostra la versió del Yum i surt" #: ../cli.py:1676 msgid "set install root" msgstr "estableix l'arrel de la instal·lació" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" "habilita un o més repositoris (es permeten caràcters de reemplaçament)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" "deshabilita un o més repositoris (es permeten caràcters de reemplaçament)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "exclou els paquets per nom o expressió regular del glob" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "inhabilita l'exclusió des de l'inici, per a un repositori o per a tot" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "habilita el processament d'obsolets durant les actualitzacions" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "inhabilita els connectors de Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "inhabilita la comprobació de signatures gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "inhabilita els connectors pel seu nom" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "habilita els connectors pel seu nom" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "omet paquets amb problemes de resolució de dependències" #: ../cli.py:1706 msgid "control whether color is used" msgstr "controla sempre que s'usi color" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "Gen" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Abr" #: ../output.py:307 msgid "May" msgstr "Mai" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Ago" #: ../output.py:308 msgid "Sep" msgstr "Set" #: ../output.py:308 msgid "Oct" msgstr "Oct" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Des" #: ../output.py:318 msgid "Trying other mirror." msgstr "S'està intentant un altre servidor rèplica." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Descripció : " #: ../output.py:684 msgid "y" msgstr "s" #: ../output.py:684 msgid "yes" msgstr "sí" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "no" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "És correcte [s/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grup: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Id de Grup: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Descripció: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Paquets obligatoris:" #: ../output.py:791 msgid " Default Packages:" msgstr " Paquets per defecte:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Paquets opcionals:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Paquets condicionals:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paquet: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " No hi ha dependències per a aquest paquet" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " dependència: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Dependència insatisfeta" #: ../output.py:901 msgid "Matched from:" msgstr "Coincidències amb:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Llicència : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Fitxer : %s" #: ../output.py:923 msgid "Other : " msgstr "Altre : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "S'ha produït un error en calcular la mida total de la descàrrega" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Mida total: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Mida total de la descàrrega: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "Tornant a instal·lar" #: ../output.py:1040 msgid "Downgrading" msgstr "Desfent l'actualització" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "S'està instal·lant per dependències" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "S'està actualitzant degut a les dependències" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "S'està suprimint degut a les dependències" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Ignorat degut a problemes de dependències:" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paquet" #: ../output.py:1075 msgid "Arch" msgstr "Arq" #: ../output.py:1076 msgid "Version" msgstr "Versió" #: ../output.py:1076 msgid "Repository" msgstr "Repositori" #: ../output.py:1077 msgid "Size" msgstr "Mida" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Resum de la transacció\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "Suprimit" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Dependència suprimida" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Dependència instal·lada" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Dependència actualitzada" #: ../output.py:1172 msgid "Replaced" msgstr "Reemplaçat" #: ../output.py:1173 msgid "Failed" msgstr "Ha fallat" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dos" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " S'ha cancel·lat la descàrrega actual, %sinterromp (crtl-c) de nou%s en %s%s%s segons\n" "per a sortir.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "interrupció de l'usuari" #: ../output.py:1300 msgid "Total" msgstr "Total" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "instal·lat" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "suprimit" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "actualitzat" #: ../output.py:2113 msgid "obsoleted" msgstr "obsolet" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> S'està executant la transacció de prova" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" "--> Tornant a calcular la resolució de dependències amb els nous canvis." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Ha finalitzat la resolució de dependències" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> S'està processant la dependència %s per al paquet: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Dependència no resolta: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> S'està processant el conflicte: %s té un conflicte amb %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> S'està poblant la transacció amb els paquets sel·leccionats. Si us plau," " espereu." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "---> S'està baixant la capçalera per a %s per a empaquetar dins de la " "transacció de prova." #: ../utils.py:99 msgid "Running" msgstr "S'està executant" #: ../utils.py:100 msgid "Sleeping" msgstr "Està dormint" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "Zombi" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Traçat/aturat" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Desconegut" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " L'altre aplicatiu és: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " L'altre aplicatiu és: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memòria : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Iniciat: fa %s-%s" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Estat : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "S'està sortint per la cancel·lació de l'usuari" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "S'està sortint en trobar la canonada trencada" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Error: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Hauríeu de provar utilitzant --skip-broken per evitar el problema" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Errors desconeguts: Codi de sortida: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Dependències resoltes" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Completat!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Heu de ser root per a executar aquesta ordre." #: ../yumcommands.py:59 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" "Heu habilitat la comprovació de paquets utilitzant claus GPG. És una bona opció. \n" "No obstant, no teniu cap clau pública GPG instal·lada. Necessiteu baixar\n" "les claus per als paquets que desitgeu instal·lar i instal·lar-les.\n" "Podeu fer-ho executant l'ordre:\n" " rpm --import clau.pública.gpg\n" "\n" "\n" "També podeu especificar la url de la clau que voleu utilitzar\n" "per a un repositori en l'opció 'gpgkey' en la secció d'un repositori i yum \n" "la instal·larà per vosaltres.\n" "\n" "Per a més informació contacteu el vostre distribuïdor o proveïdor de paquets.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Error: es necessita passar una llista de paquets a %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Error: es necessita algun element per comparar" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Error: es necessita un grup o una llista de grups" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Error: la neteja requereix una opció: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Error: argument invàlid per a la neteja: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "No hi ha arguments per a l'intèrpret d'ordres" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Nom del fitxer passat a l'intèrpret d'ordres: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "El fitxer %s donat com a argument a l'intèrpret d'ordres no existeix." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" "Error: s'ha donat més d'un fitxer com a argument per a l'intèrpret d'ordres." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAQUET..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instal·la un o més paquets al vostre sistema" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "S'està preparant el procés d'instal·lació" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAQUET...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "S'ha actualitzat un o més paquets al vostre sistema" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "S'està preparant el procés d'actualització" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Mostra detalls sobre un paquet o un grup de paquets" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Paquets instal·lats" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Paquets disponibles" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Paquets extra" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Paquets actualitzats" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Paquets obsolets" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Paquets recentment afegits" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "No hi ha paquets coincidents per llistar" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Llista un paquet o un grup de paquets" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Suprimeix un o més paquets del vostre sistema" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "S'està preparant el procés de supressió" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "S'està preparant el procés de grup" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "No hi ha cap grup on executar l'ordre" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Llista els grups de paquets disponibles" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instal·la els paquets en un grup en el vostre sistema" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Suprimeix els paquets en un grup en el vostre sistema" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Mostra detalls sobre un grup de paquets" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Genera les metadades de la memòria cau" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" "S'estan fent els fitxers de memòria cau per a tots els fitxers de metadades." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "Això pot trigar una estona depenent de la velocitat d'aquest ordinador" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "S'han creat les metadades per a la memòria cau" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "S'han suprimit les dades de la memòria cau" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Troba quin paquet proporciona el valor donat" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Comprova si hi ha actualitzacions de paquets disponibles" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Busca detalls del paquet per la cadena donada" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "S'estan buscant paquets: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Actualitza paquets tenint en compte els obsolets" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "S'està preparant el procés d'actualització" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instal·la un RPM local" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "S'està configurant el procés local de paquets" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Determina quin paquet satisfà la dependència donada" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "S'estan buscant paquets per a la dependència:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Executa un intèrpret d'ordres interactiu de yum" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "S'està preparant l'intèrpret d'ordres de yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Llista les dependències d'un paquet" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "S'estan trobant dependències: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Mostra els repositoris de programari configurats" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "habilitat" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "deshabilitat" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Id-repo : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Nom-repo : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Estat-repo : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Repo-revisió : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-etiquetes : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-etiq-dist : " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo-actualitzat : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Paquets-repo : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Mida-repo : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "URL-base-repo : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-metaenllaç : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Actualitzat : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Miralls-repo : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Mai (últim: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Temps d'instal·lació (últim: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s segons (últim: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Venç-repo : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-exclou : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-inclou : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "id repo" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "estat" #: ../yumcommands.py:1062 msgid "repo name" msgstr "nom repo" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Mostra un missatge d'ajuda d'ús" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "No hi ha ajuda disponible per a %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "àlies: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "àlies: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "S'està preparant el procés de reinstal·lació" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "reinstal·la un paquet" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "S'està preparant el procés de desactualització" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "desactualitza un paquet" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Mostra una versió per a la màquina i/o repositoris disponibles" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Instal·lat:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Disponible:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Alguna altra aplicació té el bloqueig del yum; s'està esperant a que " "surti..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "S'estan resolent dependències" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "S'està sortint de l'ordre de l'usuari." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() desapareixerà en una futura versió de Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" "S'està configurant TransactionSets abans que la classe de configuració " "estigui iniciada" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Tsflag invàlid en el fitxer de configuració: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "S'està buscant pkgSack per a la dependència: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Membre: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s convertits per a instal·lar" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "S'està afegint el paquet %s en mode %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "S'està suprimint el paquet %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s requereix: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" "El requeriment necessari ja s'ha buscat anteriorment, s'estan fent trampes" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "El requeriment necessari no és un nom de paquet. S'està buscant: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Proveïdor potencial: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "El mode és %s per al proveïdor de %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Mode per al paquet que proporciona %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: el paquet %s requereix %s marcat per a suprimir" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: S'està marcant com a obsolet %s amb %s per resoldre dependències." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: S'està actualitzant %s per a resoldre dependències." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "No es pot trobar un camí d'actualització de dependències per a: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "La coincidència %s es requereix per a %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s es troba en els paquets proporcionats però ja es troba instal·lat, s'està" " suprimint." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" "El paquet potencial que resol dependències %s té una instància nova a ts" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" "El paquet potencial que resol dependències %s té una nova instància " "insta·lada." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s ja es troba en ts, s'està ometent" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: S'està marcant %s com a actualització per a %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: S'està marcant %s com a instal·lació per a %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Èxit - transacció buida" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "S'està recomençant el bucle" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Està acabant el procés de dependències" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Èxit - dependències resoltes" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "S'estan comprobant les dependències per a %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "s'està buscant %s com a requeriment de %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "S'està executant compare_providers() per a %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "millor arq en el po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s fa obsolet %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist ha comparat %s amb %s a %s\n" " Ha guanyat: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "rpm font comú %s i %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "prefix comú de %s entre %s i %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Millor ordre: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigsetup() desapareixerà en una futura versió de Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Falta el nom del repositori %r en la configuració, s'utilitzarà l'id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "els connectors ja estan inicialitzats" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() desapareixerà en una futura versió de Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "S'està llegint un RPMDB local" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() desapareixerà en una futura versió de Yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() desapareixerà en una versió futura de Yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "S'estan configurant els sacs de paquets" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "l'objecte repositori per al repositori %s no té un mètode _resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "Aquest repositori no es pot reiniciar.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() desapareixerà en una futura versió de Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "S'està construint l'objecte d'actualitzacions" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() desapareixerà en una futura versió de Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "S'estan obtenint les metadades del grup" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "S'està afegint el fitxer del grup des del repositori: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "No s'ha pogut afegir el fitxer dels grups des del repositori: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "No hi ha cap grup disponible en cap repositori" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "S'està important informació adicional de la llista de fitxers" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "El programa %s%s%s es troba en el paquet yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Encara hi ha transaccions sense acabar. Hauríeu de considerar executar yum-" "complete-transaction abans per acabar-les." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Paquets omesos degut a problemes de dependències:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s des de %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Avís: ha fallat l'scriptlet o s'han produït altre tipus d'errors no fatals " "durant la transacció." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "No s'ha pogut suprimir el fitxer de transaccions %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "S'havia d'instal·lar %s però no s'ha realitzat!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "S'havia de suprimir %s però no s'ha realitzat!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "No s'ha pogut comprovar si el PID %s es troba actiu" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Bloqueig existent %s: una altra còpia s'està executant amb pid %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "No s'ha pogut realitzar la suma de verificació" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "No coincideix la suma de verificació del paquet" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "la suma de verificació del paquet falla però l'ús de memòria cau està " "habilitat per a %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "s'està utilitzant la còpia local de %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "No hi ha espai suficient al directori de descàrregues %s\n" " * lliure %s\n" " * necessari %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "La capçalera no està completa." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "La capçalera no es troba en la memòria cau local i està habilitat el mode de" " només memòria cau. No es pot baixar %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "La clau pública per a %s no està instal·lada" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Hi ha hagut un problema obrint el paquet %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "La clau pública per a %s no és de confiança" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "El paquet %s no està signat" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "No es pot suprimir %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "S'ha suprimit %s" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "No es pot suprimir %s fitxer %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s fitxer %s suprimit" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s fitxers suprimits" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Hi ha més d'una coincidència idèntica en el sac per a %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "No hi ha coincidències %s.%s-%s:%s-%s de l'actualització" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() desapareixerà en una futura versió de Yum." " Useu searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "S'estan buscant %d paquets" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "s'està buscant el paquet %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "s'està buscant en les entrades de fitxers" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "s'està buscant en les entrades proporcionades" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" "No hi ha dades de grup disponibles en cap dels repositoris configurats" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "No existeix cap grup anomenat %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "el paquet %s no estava marcat en el grup %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "S'està afegint el paquet %s del grup %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "No hi ha cap paquet anomenat %s disponible per a ser instal·lat" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "No s'ha pogut trobar la tupla de paquets %s al sac de paquets" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "No s'ha trobat cap paquet per a %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "L'objecte paquet no era una instància d'objecte paquet" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "No hi ha res especificat per a instal·lar" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" "S'està verificant si hi ha un proveïdor virtual o un fitxer proveïdor per a " "%s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "No hi ha cap coincidència per a l'argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "El paquet %s es troba instal·lat però no és disponible" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "No hi ha cap paquet disponible per a instal·lar" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "El paquet: %s - ja està en la transacció" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "El paquet %s és obsolet degut a %s, que ja està instal·lat" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "El paquet %s és obsolet degut a %s, es provarà d'instal·lar %s en el seu " "lloc" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "El paquet %s ja es troba instal·lat i en l'última versió." #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "El paquet coincident %s ja es troba instal·lat. S'està buscant una " "actualització." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "S'està actualitzant tot" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "No s'actualitzarà el paquet obsolet: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "El paquet és obsolet: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "No s'actualitzarà el paquet obsolet: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "No s'actualitzarà el paquet actualitzat: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "No hi ha cap paquet coincident per a suprimir" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "S'està examinant %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "No s'ha pogut afegir el paquet %s a la transacció. No és una arquitectura " "compatible: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "El paquet %s no està instal·lat; no es pot actualitzar. Executeu «yum " "install» per a instal·lar-lo." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "S'està excloent %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "S'està marcant %s per a ser instal·lat" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "S'està marcant %s com a actualització de %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s no actualitza el paquet instal·lat." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "No es pot obrir el fitxer %s. S'ometrà." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Hi ha un problema en reinstal·lar: no hi ha cap paquet marcat per a suprimir" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Hi ha un problema en reinstal·lar: no hi ha cap paquet %s marcat per a " "instal·lar" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "No hi ha cap paquet disponible per a desactualitzar" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "El paquet %s permet múltiples instal·lacions, s'està ometent" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "No hi ha cap paquet disponible que coincideixi: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Només hi ha una actualització disponible per al paquet: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "La recuperació de la clau GPG ha fallat: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "L'ànalisi de la clau GPG ha fallat: la clau no té el valor %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "La clau GPG de %s (0x%s) ja està instal·lada" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "La importació de la clau ha fallat (codi %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "La clau s'ha importat amb èxit" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" "Les claus GPG llistades per al repositori \"%s\" ja estan instal·lades però no són correctes per a aquest paquet.\n" "Comproveu que les URL de claus correctes estan configurades per a aquest repositori." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "La importació de claus no ha ajudat, eren claus incorrectes?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "La clau GPG a %s (0x%s) ja ha estat importada" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Ha fallat la importació de la clau" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "No s'ha pogut trobar un servidor rèplica vàlid." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "S'han trobat errors baixant paquets." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Siusplau, informeu d'aquest error al %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Errors en la transacció de prova: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Connectors carregats: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "No hi ha cap connector que coincideixi amb: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "No s'està carregant el connector \"%s\", ja que està deshabilitat" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "No s'ha pogut importar el connector \"%s\"" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "El connector \"%s\" no especifica la versió de l'API requerida." #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "El connector \"%s\" requereix l'API %s. L'API disponible és %s" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "S'està carregant el connector \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "Existeixen dos o més connectors amb el mateix nom \"%s\" en el camí de cerca" " de connectors" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "No s'ha trobat el fitxer de configuració %s" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "No s'ha pogut trobar un fitxer de configuració per al connector %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "l'enregistrament d'ordres no està suportat" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Reempaquetant" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "La capçalera no es pot obrir o no coincideix amb %s, %s" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "Falla la comprobació md5 per al RPM %s" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "No s'ha pogut obrir la base de dades RPM per a llegir-la. Potser ja està en " "ús?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "S'ha obtingut una capçalera buida, alguna cosa ha anat malament" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Capçalera malmesa %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "S'ha produït un error en obrir l'rpm %s - error %s" yum-3.4.3/po/Makevars0000664000076400007640000000004411602434452013436 0ustar jamesjamesXGETTEXT_OPTIONS = --keyword=P_:1,2 yum-3.4.3/po/POTFILES.skip0000664000076400007640000000001511602434452014055 0ustar jamesjamespygettext.py yum-3.4.3/po/pt.po0000664000076400007640000016107111602434452012735 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "" #: ../callback.py:130 msgid "No header - huh?" msgstr "Sem cabeçalho - hã?" #: ../callback.py:168 msgid "Repackage" msgstr "" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Erro nas Opções: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "Arq." #: ../output.py:1076 msgid "Version" msgstr "Versão" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Não é possível verificar se o PID %s está activo" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "O cabeçalho não pôde ser aberto ou não corresponde ao %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "O RPM %s falha no código MD5" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "Não foi ler a base de dados do RPM. Talvez já esteja a ser usada?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Foi obtido um cabeçalho vazio; algo se passa de errado" #: ../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" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Erro ao abrir o RPM %s - erro %s" yum-3.4.3/po/id.po0000664000076400007640000016034211602434452012706 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Indonesian (http://www.transifex.net/projects/p/yum/team/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/zh_CN.po0000664000076400007640000022032011602434452013304 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Mike Ma , 2011 # lovenemesis , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Chinese (China) (http://www.transifex.net/projects/p/yum/team/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "正在å‡çº§" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "正在删除" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "正在安装" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "被å–代" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "更新完毕" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "已删除" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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:1038 ../output.py:2193 msgid "Removing" msgstr "正在删除" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "清ç†" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "命令 \"%s\" 已有定义" #: ../cli.py:127 msgid "Setting up repositories" msgstr "设置仓库" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "从本地文件读入仓库元数æ®" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "é…置错误:%s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "属性错误:%s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " 已安装: %s-%s 在 %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " 构建 :%s 在 %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " å·²ç»æäº¤ï¼š%s ,共 %s " #: ../cli.py:336 msgid "You need to give some command" msgstr "你需è¦ç»™å‡ºå‘½ä»¤" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "没有命令: %s。请使用 %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "ç£ç›˜è¦æ±‚:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " è‡³å°‘éœ€è¦ %d MB 以上的空间在文件系统 %s 上。\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "出错情况\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "å°è¯•执行事务但无须任何处ç†ã€‚现在退出。" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "在用户的命令下退出" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "下载软件包:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "下载软件包出错:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "é”™è¯¯ï¼šæ‚¨éœ€è¦æ›´æ–° rpm 以处ç†ï¼š" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM éœ€è¦æ›´æ–°" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "请在%s报告此错误" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "执行事务测试" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "事务检验出错:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "事务测试æˆåŠŸ" #: ../cli.py:600 msgid "Running Transaction" msgstr "执行事务" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "如果ä¸åŠ å¹²é¢„ï¼Œæ‹’ç»è‡ªåŠ¨å¯¼å…¥å¯†é’¥ã€‚\n" "指定 \"-y\" 改å˜è¿™ä¸ªè¡Œä¸ºã€‚" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * 也许您希望:" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "包 %s%s%s å¯ç”¨ï¼Œä½†æœªå®‰è£…。" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "没有å¯ç”¨çš„包 %s%s%s。" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "将安装的软件包" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "无须任何处ç†" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "å‡çº§ %d 个软件包" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "ä¸å‡çº§ä»»ä½•软件包" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "å·²æ ‡è®°çš„æ¬²åˆ†å¸ƒåŒæ­¥çš„%d个包" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "æ²¡æœ‰å·²æ ‡è®°çš„æ¬²åˆ†å¸ƒåŒæ­¥çš„包" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "删除 %d 个软件包" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "ä¸åˆ é™¤ä»»ä½•软件包" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "è¦é™çº§çš„包" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "(æ¥è‡ª %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "安装的包 %s%s%s%s ä¸å¯ç”¨ã€‚" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "é‡è£…的包" #: ../cli.py:960 msgid "No Packages Provided" msgstr "未指定软件包" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "匹é…:%s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "è­¦å‘Šï¼šæ²¡æœ‰åŒ¹é… %s 的软件包" #: ../cli.py:1109 msgid "No Matches found" msgstr "没有找到匹é…的软件包" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "没有找到 %s 软件包" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "正在清ç†ä»“库: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "清ç†ä¸€åˆ‡" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "æ¸…ç†æ–‡ä»¶å¤´ç¼“å­˜" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "清ç†è½¯ä»¶åŒ…" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "æ¸…ç† XML 元数æ®" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "æ¸…ç†æ•°æ®åº“缓存" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "清ç†è¿‡æœŸç¼“存元数æ®" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "正在清ç†ç¼“å­˜rpmdbæ•°æ®" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "æ¸…ç†æ’ä»¶" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "已安装的组:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "有效的组:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "完æˆ" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "警告:组 %s ä¸å­˜åœ¨ã€‚" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "指定组中没有å¯å®‰è£…或å‡çº§çš„软件包" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "安装 %d 个软件包" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "没有å为 %s 的组" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "指定组中没有è¦åˆ é™¤çš„软件包" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "删除 %d 个软件包" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "略过已安装的 %s 软件包" #: ../cli.py:1397 #, 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:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "%s 未安装,加入列表以备安装" #: ../cli.py:1443 msgid "Plugin Options" msgstr "æ’件选项" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "命令行错误:%s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s 选项需è¦å‚æ•°" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color 需è¦å‚数:auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "显示此帮助消æ¯å¹¶é€€å‡º" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "容å¿é”™è¯¯" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "完全从系统缓存è¿è¡Œï¼Œä¸å‡çº§ç¼“å­˜" #: ../cli.py:1652 msgid "config file location" msgstr "é…置文件路径" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "命令最长等待时间" #: ../cli.py:1657 msgid "debugging output level" msgstr "调试输出级别" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "在 list/search 命令下,显示仓库里é‡å¤çš„æ¡ç›®" #: ../cli.py:1663 msgid "error output level" msgstr "错误输出级别" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "rpm调试输出等级" #: ../cli.py:1669 msgid "quiet operation" msgstr "安é™çš„æ“ä½œ" #: ../cli.py:1671 msgid "verbose operation" msgstr "详尽的æ“作过程" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "回答所有的问题为是" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "显示 Yum 版本信æ¯å¹¶é€€å‡º" #: ../cli.py:1676 msgid "set install root" msgstr "设置目标根目录" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "å¯ç”¨ä¸€ä¸ªæˆ–多个仓库(支æŒé€šé…符)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "ç¦ç”¨ä¸€ä¸ªæˆ–多个仓库(支æŒé€šé…符)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "ç”¨å…¨åæˆ–通é…符排除软件包" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "ç¦æ­¢ä»Žä¸»é…置,从仓库或者从任何ä½ç½®æŽ’除" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "å‡çº§æ—¶è€ƒè™‘软件包å–代关系" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "ç¦ç”¨ Yum æ’ä»¶" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "ç¦ç”¨ gpg ç­¾åæ£€æµ‹" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "ç¦ç”¨æŒ‡å®šåç§°çš„æ’ä»¶" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "ç”±åç§°å¯ç”¨æ’ä»¶" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "跳过有ä¾èµ–问题的软件包" #: ../cli.py:1706 msgid "control whether color is used" msgstr "é…置是å¦ä½¿ç”¨é¢œè‰²" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "在yumé…置和repo文件里设置$releasever的值" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "设置任æ„é…置和仓库选项" #: ../output.py:307 msgid "Jan" msgstr "一月" #: ../output.py:307 msgid "Feb" msgstr "二月" #: ../output.py:307 msgid "Mar" msgstr "三月" #: ../output.py:307 msgid "Apr" msgstr "四月" #: ../output.py:307 msgid "May" msgstr "五月" #: ../output.py:307 msgid "Jun" msgstr "六月" #: ../output.py:308 msgid "Jul" msgstr "七月" #: ../output.py:308 msgid "Aug" msgstr "八月" #: ../output.py:308 msgid "Sep" msgstr "乿œˆ" #: ../output.py:308 msgid "Oct" msgstr "åæœˆ" #: ../output.py:308 msgid "Nov" msgstr "å一月" #: ../output.py:308 msgid "Dec" msgstr "å二月" #: ../output.py:318 msgid "Trying other mirror." msgstr "å°è¯•其他镜åƒã€‚" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "åç§° :%s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "构架 :%s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "时期 : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "版本 :%s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "å‘布 :%s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "å¤§å° ï¼š%s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "仓库 :%s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "æ¥è‡ªä»“库 :%s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "æäº¤è€… :%s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "æäº¤æ—¶é—´ :%s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "构建时间:%s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "安装时间:%s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "ç”± %s 安装" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "ç”± %s 修改" #: ../output.py:612 msgid "Summary : " msgstr "简介 : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "ç½‘å€ ï¼š%s" #: ../output.py:615 msgid "License : " msgstr "åè®® : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "æè¿°ï¼š " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "是" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "å¦" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "确定å—?[y/N]:" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "组:%s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " 组编å·ï¼š%s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " æè¿°ï¼š%s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " å¿…è¦çš„软件包:" #: ../output.py:791 msgid " Default Packages:" msgstr " 默认的软件包:" #: ../output.py:792 msgid " Optional Packages:" msgstr " å¯é€‰çš„软件包:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " å¯èƒ½çš„软件包:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "软件包:%s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " 此软件包无ä¾èµ–关系" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " ä¾èµ–: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " 䏿»¡è¶³çš„ä¾èµ–关系" #: ../output.py:901 msgid "Matched from:" msgstr "åŒ¹é…æ¥è‡ªäºŽ:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "åè®® :%s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "文件å :%s" #: ../output.py:923 msgid "Other : " msgstr "å…¶ä»– : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "è®¡ç®—æ€»ä¸‹è½½é‡æ—¶å‡ºé”™" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "总文件大å°ï¼š%s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "总下载é‡ï¼š%s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "安装大å°ï¼š%s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "有一个错误计算安装大å°" #: ../output.py:1039 msgid "Reinstalling" msgstr "釿–°å®‰è£…" #: ../output.py:1040 msgid "Downgrading" msgstr "正在é™çº§" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "为ä¾èµ–而安装" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "为ä¾èµ–而更新" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "为ä¾èµ–而移除" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "跳过(ä¾èµ–问题)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "未安装" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "软件包" #: ../output.py:1075 msgid "Arch" msgstr "æž¶æž„" #: ../output.py:1076 msgid "Version" msgstr "版本" #: ../output.py:1076 msgid "Repository" msgstr "仓库" #: ../output.py:1077 msgid "Size" msgstr "大å°" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " æ›¿æ¢ %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "事务概è¦\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "安装 %5.5s 个包\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "å‡çº§ %5.5s 个包\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "移除 %5.5s 个包\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "釿–°å®‰è£… %5.5s 个包\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "é™çº§ %5.5s 个包\n" #: ../output.py:1165 msgid "Removed" msgstr "删除" #: ../output.py:1166 msgid "Dependency Removed" msgstr "作为ä¾èµ–被删除" #: ../output.py:1168 msgid "Dependency Installed" msgstr "作为ä¾èµ–被安装" #: ../output.py:1170 msgid "Dependency Updated" msgstr "作为ä¾èµ–被å‡çº§" #: ../output.py:1172 msgid "Replaced" msgstr "替代" #: ../output.py:1173 msgid "Failed" msgstr "失败" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, 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:1282 msgid "user interrupt" msgstr "用户中断" #: ../output.py:1300 msgid "Total" msgstr "总计" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "<空>" #: ../output.py:1342 msgid "System" msgstr "系统" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "错误的事务 ID 或软件包" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "登陆用户" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "日期和时间" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "æ“作" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "更改" #: ../output.py:1538 msgid "No transaction ID given" msgstr "没有事务 ID" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "错误的事务 ID" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "未能找到指定事务 ID" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "找到多个事务 ID!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "未指定事务 IDã€æˆ–者软件包" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "é™çº§" #: ../output.py:1688 msgid "Older" msgstr "较è€çš„" #: ../output.py:1688 msgid "Newer" msgstr "较早的" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "事务 ID:" #: ../output.py:1728 msgid "Begin time :" msgstr "èµ·å§‹æ—¶é—´ :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "å¯åЍ rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "ç»“æŸæ—¶é—´ :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "ç»“æŸ rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "用户 :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "è¿”å›žç  ï¼š" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "已终止" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "失败:" #: ../output.py:1779 msgid "Success" msgstr "æˆåŠŸ" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "命令行 :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "å…¶ä»–éžé»˜è®¤ä¿¡æ¯å·²ä¿å­˜ï¼š%d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "事务完æˆç”±ï¼š" #: ../output.py:1804 msgid "Packages Altered:" msgstr "已改å˜çš„包:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "已跳过的包:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb 问题:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scriptlet 输出:" #: ../output.py:1831 msgid "Errors:" msgstr "错误:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "安装" #: ../output.py:1839 msgid "Dep-Install" msgstr "ä¾èµ–安装" #: ../output.py:1841 msgid "Obsoleting" msgstr "å–代中" #: ../output.py:1842 msgid "Erase" msgstr "抹去" #: ../output.py:1843 msgid "Reinstall" msgstr "釿–°å®‰è£…" #: ../output.py:1844 msgid "Downgrade" msgstr "é™çº§" #: ../output.py:1846 msgid "Update" msgstr "æ›´æ–°" #: ../output.py:1909 msgid "Time" msgstr "æ—¶é—´" #: ../output.py:1935 msgid "Last day" msgstr "最近一天" #: ../output.py:1936 msgid "Last week" msgstr "最近一周" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "最近2周" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "最近3个月" #: ../output.py:1939 msgid "Last 6 months" msgstr "最近6个月" #: ../output.py:1940 msgid "Last year" msgstr "最近一年" #: ../output.py:1941 msgid "Over a year ago" msgstr "一年以å‰" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "未找到事务 %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "事务 ID:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "å¯ç”¨çš„é¢å¤–历å²ä¿¡æ¯ï¼š" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: 未找到符åˆè¯¥åç§°çš„é¢å¤–æ•°æ®" #: ../output.py:2106 msgid "installed" msgstr "安装" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "删除" #: ../output.py:2109 msgid "reinstalled" msgstr "已釿–°å®‰è£…" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "å‡çº§" #: ../output.py:2113 msgid "obsoleted" msgstr "å–代" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> 执行事务检查" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> 使用新的信æ¯é‡æ–°è®¡ç®—ä¾èµ–关系。" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> 完æˆä¾èµ–关系计算" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> 处ç†ä¾èµ–关系 %s,它被软件包 %s 需è¦" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> ä¿ç•™è½¯ä»¶åŒ…: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> 无法解决的ä¾èµ–:%s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "软件包:%s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " 需è¦ï¼š%s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " 未找到" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "更新,由" #: ../output.py:2197 msgid "Downgraded By" msgstr "é™çº§ï¼Œç”±" #: ../output.py:2198 msgid "Obsoleted By" msgstr "å–代,由" #: ../output.py:2216 msgid "Available" msgstr "å¯ç”¨" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> å¤„ç† %s 与 %s 的冲çª" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> æ ¹æ®æŒ‡å®šçš„软件包创建事务,请等待。" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> 下载 %s 的文件头作为事务的一部分。" #: ../utils.py:99 msgid "Running" msgstr "è¿è¡Œä¸­" #: ../utils.py:100 msgid "Sleeping" msgstr "ç¡çœ ä¸­" #: ../utils.py:101 msgid "Uninterruptible" msgstr "ä¸å¯ä¸­æ–­" #: ../utils.py:102 msgid "Zombie" msgstr "僵死" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "跟踪/åœæ­¢" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "未知" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " å¦ä¸€ä¸ªåº”ç”¨ç¨‹åºæ˜¯ï¼šPackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " å¦ä¸€ä¸ªåº”ç”¨ç¨‹åºæ˜¯ï¼š%s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " 内存:%5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " å·²å¯åŠ¨ï¼š %s - %s之å‰" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " çŠ¶æ€ ï¼š%s,进程ID:%d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "ç”±äºŽç”¨æˆ·å–æ¶ˆè€Œé€€å‡º" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "由于管é“被破å而退出" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "å¦å¤–一个程åºé”定了 yumï¼›éµå¾ª exit_on_lock 设置退出" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "æ’件退出错误:%s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum 错误:%s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "错误:%s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " 您å¯ä»¥å°è¯•用 --skip-broken æ¥è§£å†³è¯¥é—®é¢˜" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " 您å¯ä»¥å°è¯•è¿è¡Œï¼š rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "æœªçŸ¥é”™è¯¯ï¼šé€€å‡ºç  %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "ä¾èµ–关系解决" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "完毕ï¼" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "你需è¦ä»¥ root 身份执行此命令。" #: ../yumcommands.py:59 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 ç­¾åæ£€æµ‹ï¼Œè¿™æ ·å¾ˆå¥½ã€‚但是,您尚未安装任何 GPG 公钥。请下载您希望安装的软件的签å公钥并安装。å‡è®¾å…¬é’¥å·²ä¸‹è½½ï¼Œå®‰è£…命令是:\n" " rpm --import public.gpg.key\n" "\n" "\n" "或者,在仓库é…置中,使用 'gpgkey' 选项指定仓库使用的公钥的 URL,这样 yum 会自动安装它。\n" "\n" "详情请è”系您的å‘行版或软件包制作人。\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "错误:需è¦ä¸º %s 指定软件包列表" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "é”™è¯¯ï¼šéœ€è¦æŒ‡å®šåŒ¹é…模å¼" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "错误:需è¦ç»„或组的列表" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "错误:清ç†å‘½ä»¤éœ€è¦å‚数:%s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "错误:清ç†å‘½ä»¤å‚æ•°ä¸æ­£ç¡®ï¼š%r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "æ²¡æœ‰ç»™å¤–å£³æŒ‡å®šå‚æ•°" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "传给外壳的文件å:%s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "ä½œä¸ºå‚æ•°ä¼ ç»™å¤–壳的文件 %s ä¸å­˜åœ¨ã€‚" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "é”™è¯¯ï¼šä½œä¸ºå‚æ•°ä¼ ç»™å¤–壳超过一个文件。" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "没有已å¯ç”¨çš„仓库。\n" "执行 \"yum repolist all\" 查看您拥有的仓库。\n" "您å¯ä»¥ç”¨ yum-config-manager --enable <仓库å> æ¥å¯ç”¨ä»“库" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "软件包……" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "å‘系统中安装一个或多个软件包" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "设置安装进程" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[软件包……]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "更新系统中的一个或多个软件包" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "设置更新进程" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "å·²åŒæ­¥è½¯ä»¶åŒ…到最新å¯ç”¨ç‰ˆæœ¬" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "正在设置å‘è¡Œç‰ˆåŒæ­¥è¿›ç¨‹" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "显示关于软件包或组的详细信æ¯" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "已安装的软件包" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "å¯å®‰è£…的软件包" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "更多软件包" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "更新的软件包" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "å–代的软件包" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "最近添加的软件包" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "没有匹é…的软件包å¯ä»¥åˆ—出" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "列出一个或一组软件包" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "从系统中移除一个或多个软件包" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "设置移除进程" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "设置组进程" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "没有指定è¦å¤„ç†çš„组" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "列出å¯å®‰è£…的组" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "å‘系统中安装一组软件包" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "从系统中移除一组软件包" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "显示组的详细信æ¯" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "创建元数æ®ç¼“å­˜" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "ä¸ºå…ƒæ•°æ®æ–‡ä»¶ç”Ÿæˆç¼“存文件。" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "这需è¦ä¸€æ®µæ—¶é—´ï¼Œå–决于这å°è®¡ç®—机的速度" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "元数æ®ç¼“存已建立" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "删除缓存的数æ®" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "查找æä¾›æŒ‡å®šå†…容的软件包" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "æ£€æŸ¥æ˜¯å¦æœ‰è½¯ä»¶åŒ…æ›´æ–°" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "在软件包详细信æ¯ä¸­æœç´¢æŒ‡å®šå­—符串" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "æœç´¢è½¯ä»¶åŒ…:" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "æ›´æ–°è½¯ä»¶åŒ…åŒæ—¶è€ƒè™‘软件包å–代关系" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "设置å‡çº§è¿›ç¨‹" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "安装本地的 RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "设置本地安装进程" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "判断哪个包æä¾›äº†æŒ‡å®šçš„ä¾èµ–" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "查找ä¾èµ–的软件包:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "è¿è¡Œäº¤äº’å¼çš„ yum 外壳" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "设置 Yum 外壳" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "列出软件包的ä¾èµ–关系" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "查找ä¾èµ–:" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "显示已é…置的仓库" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "å¯ç”¨" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "ç¦ç”¨" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "仓库ID : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "仓库å : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "ä»“åº“çŠ¶æ€ ï¼š " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "仓库版本: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "仓库标志 : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "仓库å‘行版标签: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "仓库更新: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "仓库包 : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "ä»“åº“å¤§å° ï¼š " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "仓库基本地å€ï¼š " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "仓库元链接:" #: ../yumcommands.py:981 msgid " Updated : " msgstr "更新:" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "仓库镜åƒï¼š" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "ä»Žä¸ ï¼ˆæœ€åŽ %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "瞬间(最åŽ%s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s ç§’ ï¼ˆæœ€åŽ %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "仓库到期:" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "仓库排除:" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "仓库包括:" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "仓库除外:" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "仓库标识" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "状æ€" #: ../yumcommands.py:1062 msgid "repo name" msgstr "仓库åç§°" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "显示用法信æ¯" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "没有关于 %s 的帮助" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "别å:" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "别å:" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "设置覆盖安装进程" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "覆盖安装一个包" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "设置é™çº§è¿‡ç¨‹" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "é™çº§åŒ…" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "显示机器和/或å¯ç”¨çš„仓库版本。" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum版本组:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " 组 :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " 包:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "已安装:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "组已安装:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "å¯ç”¨ï¼š" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "组内现有:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "显示或使用事务历å²" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "无效的历å²å­å‘½ä»¤ï¼Œä½¿ç”¨ï¼š%s。" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "你没有æƒé™åˆ°åކ岿•°æ®ã€‚" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "检查rpmdb里的问题" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "å¦å¤–一个程åºé”定了 yum;等待它退出……" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "解决ä¾èµ–关系" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "ç”±äºŽç”¨æˆ·å–æ¶ˆè€Œé€€å‡ºã€‚" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "在é…ç½®å¯ç”¨å‰è®¾ç½®äº‹åС集" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "é…置文件 %s 中使用 tsflag 是错误的" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "æœç´¢ç¾¤é›†ä¸­ %s çš„ä¾èµ–关系" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "æˆå‘˜ï¼š%s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s 转为安装" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "添加软件包 %s 到 %s 模å¼" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "正在删除软件包 %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s 需è¦ï¼š%s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s éœ€è¦ %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "已查询过所需的ä¾èµ–关系,跳过" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "所需的ä¾èµ–关系并éžè½¯ä»¶åŒ…å称。æœç´¢ï¼š%s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr " å¯èƒ½çš„æä¾›è€…:%s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "æ¨¡å¼ %s 被用于æä¾› %s 的软件包:%s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "æä¾› %s 的软件包使用的模å¼ï¼š%s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "事务:%s è½¯ä»¶åŒ…è¦æ±‚删除 %s" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "事务:令 %s 被 %s å–代以解决ä¾èµ–关系。" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "事务:更新 %s 以解决ä¾èµ–。" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "无法找到 %s ä¾èµ–的更新路径" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "å¿«é€ŸåŒ¹é… %s 到 %s 的需求" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "æä¾› %s 的软件包存在而且已被安装,ä¸å†æ£€æµ‹ã€‚" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "å¯èƒ½è§£å†³ä¾èµ–çš„ %s è½¯ä»¶åŒ…å·²ç»æœ‰æ›´æ–°çš„版本存在于事务中了。" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "å¯èƒ½è§£å†³ä¾èµ–çš„ %s è½¯ä»¶åŒ…å·²ç»æœ‰æ›´æ–°çš„版本安装过了。" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s 已包å«åœ¨äº‹åŠ¡ä¸­ï¼Œä¸å†é‡å¤" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "事务:将 %s 作为 %s 的更新" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "事务:将 %s 作为 %s 安装" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "æˆåŠŸ - 空的事务" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "釿–°å¼€å§‹å¾ªçޝ" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "ä¾èµ–进程å³å°†å®Œæˆ" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "æˆåŠŸ - ä¾èµ–关系解决" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "检查 %s çš„ä¾èµ–关系" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "æœç´¢ %s 作为 %s çš„ä¾èµ–关系" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "为 %s è¿è¡Œ compare_providers()" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "%s æä¾›äº†æ›´å¥½çš„æž¶æž„选择" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s å–代 %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "比较 %s 与 %s 架构差异,在 %s\n" " 胜者:%s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "%s å’Œ %s 具有共åŒçš„æºä»£ç  rpm" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "基础软件包 %s 由于 %s å·²ç»å®‰è£…" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "å…±åŒçš„å‰ç¼€ %s 存在于 %s å’Œ %s 之间" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "最å°éœ€æ±‚: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " 胜者:%s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " 负者( %d):%s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "最佳顺åºï¼š%s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "软件仓库 %r:传递é…置出错: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "仓库 %r 在é…置文件中未指定å字,使用标识代替" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "æ’ä»¶å·²åˆå§‹åŒ–" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "读入本地 RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "设置软件包群集" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "仓库 %s 的对象缺少 _resetSack 方法\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "因此仓库无法å¤ä½ã€‚\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "建立å‡çº§å¯¹è±¡" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉。\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "获å–组的元数æ®" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "从仓库 %s 中添加组文件" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "为仓库 %s 添加组文件时失败:%s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "在现有的仓库中没有æä¾›ç»„" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "获å–软件包标签元数æ®" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "从软件仓库添加标签:%s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "从软件仓库添加软件包标签失败:%s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "正在导入é¢å¤–的文件列表信æ¯" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "ç¨‹åº %s%s%s ä½äºŽ yum-utils 软件包。" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "存在未完æˆçš„æ“ä½œã€‚æ‚¨æˆ–è®¸éœ€è¦å…ˆè¿è¡Œ yum-complete-transaction æ¥å®Œæˆã€‚" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "å°è¯•移除å—ä¿æŠ¤çš„ \"%s\"" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "因为ä¾èµ–关系问题而跳过的软件包:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s æ¥è‡ª %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "** å‘现 %d 个已存在的 rpmdb 问题, 'yum check' 输出如下:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "警告:RPMDB 在 yum 以外被修改。" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "缺失的需求" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "安装冲çª" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "警告:事务过程中出现 scriptlet 或其他éžè‡´å‘½æ€§é”™è¯¯ã€‚" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "事务无法å¯åŠ¨ï¼š" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "ä¸èƒ½æ‰§è¡Œäº‹åŠ¡ã€‚" #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s å‡å®šè¢«ç§»é™¤ä½†å¹¶éžè¿™æ ·ï¼" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "ä¸èƒ½æ‰“å¼€é” %s : %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "无法检测 PID %s æ˜¯å¦æ¿€æ´»" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "无法在 %s 创建é”:%s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "软件包与预期下载的ä¸ç¬¦ã€‚建议:è¿è¡Œ yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "无法执行校验和" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "软件包校验和ä¸åŒ¹é…" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "软件包校验和失败但是 %s å·²å¯ç”¨ç¼“å­˜" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "使用本地的 %s 副本" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "下载目录 %s 空间ä¸è¶³\n" " * 空闲 %s\n" " * éœ€è¦ %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "文件头ä¸å®Œæ•´ã€‚" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "文件头ä¸åœ¨æœ¬åœ°ç¼“存中,但是因为处于åªä½¿ç”¨ç¼“存的模å¼ï¼Œæ— æ³•下载 %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "%s 的公钥没有安装" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "打开软件包 %s 出现问题" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "%s 的公钥ä¸å¯ä¿¡ä»»" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "软件包 %s 没有签å" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "无法删除 %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s 已删除" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "无法删除 %s 文件 %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s 文件 %s 已删除" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s 文件已删除" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "群集中有超过一个相åŒçš„åŒ¹é… %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "æ›´æ–°ä¸åŒ…æ‹¬åŒ¹é… %s.%s %s:%s-%s 的内容" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "searchPackages() 将从未æ¥ç‰ˆæœ¬çš„ Yum 中去掉,被searchGenerator() 替代。\n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "æœç´¢ %d 个软件包" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "æœç´¢ %s 软件包" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "在文件中æœç´¢" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "åœ¨å¯æä¾›çš„ä¾èµ–中æœç´¢" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "é…置的软件仓库ä¸åŒ…å«ç»„æ•°æ®" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "ä¸å­˜åœ¨ %s 组" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "软件包 %s 没有包å«åœ¨ %s 组中" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "添加包 %s 从组 %s 中" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "找ä¸åˆ°å为 %s 的软件包æ¥å®‰è£…" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "群集中找ä¸åˆ°è½¯ä»¶åŒ… %s" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "rpmdb 中找ä¸åˆ°è½¯ä»¶åŒ…元组 %s" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "找ä¸åˆ° %s 软件包" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "䏿˜¯ä¸€ä¸ªè½¯ä»¶åŒ…对象的实例" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "没有指定è¦å®‰è£…的内容" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "检测 %s æä¾›çš„ä¾èµ–或文件" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "傿•° %s 没有匹é…" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "包 %s 已安装且ä¸å¯ç”¨" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "没有包å¯ä¾›å®‰è£…" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "软件包 %s 已包å«åœ¨äº‹åС䏭" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "软件包 %s 被已安装的 %s å–代" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "软件包 %s å·²ç»è¢« %s å–代,但是å–代的软件包并未满足需求" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "软件包 %s å·²ç»è¢« %s å–代,改为å°è¯•安装 %s" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "包 %s 已安装并且是最新版本" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "åŒ¹é… %s 的软件包已ç»å®‰è£…。检查更新。" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "全部å‡çº§" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "䏿›´æ–°å·²è¢«å–代的软件包:%s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "包已被å–代:%s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "未更新已被废除的软件包:%s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "未更新已被更新的软件包:%s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "没有匹é…çš„è¦åˆ é™¤çš„包" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "跳过正在è¿è¡Œçš„内核:%ss" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "从æ“作中移除 %s" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "无法打开 %s ,跳过。" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "诊断 %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "无法本地安装 deltarpm %s ,跳过。" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "无法添加软件包 %s 到æ“作中。ä¸å±žäºŽå¯å…¼å®¹çš„æž¶æž„:%s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "无法安装软件包 %s 。被已安装软件包 %s 标识为废除" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "软件包 %s 没有安装,ä¸èƒ½æ›´æ–°ã€‚è¿è¡Œ yum install 安装它。" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "排除 %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s 将被安装" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "%s 将作为 %s 的更新" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%sï¼šä¸æ›´æ–°å·²å®‰è£…的软件包。" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "无法打开文件:%s。跳过。" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "覆盖安装出错:没有匹é…çš„è¦åˆ é™¤çš„软件包" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "釿–°å®‰è£…出错:没有匹é…的软件包 %s æ¥å®‰è£…" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "没有å¯ä¾›é™çº§çš„软件包" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "软件包 %s å…è®¸åŒæ—¶å®‰è£…多个版本,跳过" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "未找到匹é…çš„å¯ç”¨è½¯ä»¶åŒ…:%s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "åªæ›´æ–°å¯ç”¨è½¯ä»¶åŒ…:%s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "é™çº§å¤±è´¥ï¼š%s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "èŽ·å– GPG 密钥失败:" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "æ¥è‡ª %s çš„ä¸å¯ç”¨ GPG 密钥:%s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "GPG 密钥传递失败:密钥未包å«å€¼ %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "%s çš„ GPG 密钥(0x%s)已安装" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "导入密钥失败(ä»£ç  %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "导入密钥æˆåŠŸ" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "仓库 \"%s\" çš„ GPG 密钥已安装,但是ä¸é€‚用于此软件包。请检查仓库的公钥 URL 是å¦é…置正确。" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "导入的密钥没有用处,错误的密钥?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "ä½äºŽ %s çš„ GPG 密钥 (0x%s) å·²ç»å¯¼å…¥" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "导入密钥失败" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "\"%s\" 仓库列出的 GPG 密钥已ç»å®‰è£…但并䏿­£ç¡®ã€‚\n" "请检查此仓库正确的密钥 URL é…置。" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "ä¸èƒ½å‘现åˆé€‚的镜åƒã€‚" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "下载软件包时出错。" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "请在 %s 报告这个错误" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "事务测试出错:" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "ä¸èƒ½ç½®ç¼“存目录:%s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "已加载æ’件:" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "æ²¡æœ‰åŒ¹é… %s çš„æ’ä»¶" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "\"%s\" æ’件被ç¦ç”¨ï¼Œå› æ­¤æœªåŠ è½½å®ƒ" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "æ’ä»¶ \"%s\" ä¸èƒ½è¢«å¯¼å…¥" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "æ’ä»¶ \"%s\" 没有指定必è¦çš„ API 版本" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "æ’ä»¶ \"%s\" éœ€è¦ API %s。支æŒçš„ API 为 %s。" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "加载 \"%s\" æ’ä»¶" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "æœç´¢è·¯å¾„中存在两个或多个é‡åæ’ä»¶ \"%s\"" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "找ä¸åˆ°é…置文件 %s" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "找ä¸åˆ°æ’ä»¶ %s çš„é…置文件 " #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "䏿”¯æŒæ³¨å†Œå‘½ä»¤" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "有缺少的需求" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "有已安装冲çª" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s 是 %s 的副本" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s 被 %s å–代" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s æä¾› %s 但ä¸èƒ½è¢«æ‰¾åˆ°" #: ../yum/rpmtrans.py:80 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" yum-3.4.3/po/pt_BR.po0000664000076400007640000023174011602434452013321 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # ufa , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/yum/team/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Atualizando" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Apagando" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instalando" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Obsoletos" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Atualizados" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Removidos" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Instalados" #: ../callback.py:130 msgid "No header - huh?" msgstr "Sem cabeçalho - huh?" #: ../callback.py:168 msgid "Repackage" msgstr "Reempacotar" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Erro: estado de saída inválido: %s de %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Removidos: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Removendo" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Limpeza" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Comando \"%s\" já definido" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Configurando repositórios" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Lendo metadados do repositório a partir dos arquivos locais" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Erro de configuração: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Erro nas opções: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Instalados: %s-%s em %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Construídos : %s em %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Enviados: %s em %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Você precisa dar algum comando" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Comando não encontrado: %s. Por favor, utilize %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Requisitos de disco:\n" #: ../cli.py:402 #, python-format 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:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Sumário de erros\n" "-------------\n" #: ../cli.py:450 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:497 msgid "Exiting on user Command" msgstr "Saindo pelo comando do usuário" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Baixando pacotes:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Erro ao baixar pacotes:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ERRO. Você precisa atualizar o rpm para manipular:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "O RPM precisa ser atualizado" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Por favor, relate esse erro em %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Executando teste de transação" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Erro na verificação da transação:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Teste de transação completo" #: ../cli.py:600 msgid "Running Transaction" msgstr "Executando a transação" #: ../cli.py:630 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" "Use \"-y\" para sobrescrever." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Talvez você queira dizer: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Pacotes %s%s%s disponíveis, mas já instalados." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Nenhum pacote %s%s%s disponível." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Pacotes a serem instalados" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nada a ser feito" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pacotes marcados para atualização" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Nenhum pacote marcado para atualização" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d pacotes marcados para Sincronização da Distribuição" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Nenhum pacote marcado para a Sincronização da Distribuição" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pacotes marcados para remoção" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Nenhum pacote marcado para remoção" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Pacote(s) a ser(em) desatualizados(s)" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (a partir de %s)" #: ../cli.py:939 #, 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:947 msgid "Package(s) to reinstall" msgstr "Pacote(s) a ser(em) reinstalado(s)" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Nenhum pacote fornecido" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Encontrado: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Aviso: nenhum resultado para: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Nenhum pacote localizado" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nenhum pacote localizado para %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Limpando repositórios:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Limpando tudo" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Limpando cabeçalhos" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Limpando pacotes" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Limpando metadados em xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Limpando cache do banco de dados" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Limpando metadados expirados do cache" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Limpando dados rpmdb em cache" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Limpando plugins" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Grupos instalados:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Grupos disponíveis:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Concluído" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Aviso: O grupo %s não existe." #: ../cli.py:1324 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" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pacote(s) a ser(em) instalado(s)" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Nenhum grupo de nome %s existe" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Nenhum pacote a ser removido a partir dos grupos" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d pacote(s) a ser(em) removido(s)" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "O pacote %s já está instalado, ignorando" #: ../cli.py:1397 #, 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:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Nenhum outro %s instalado, adicionado à lista para potencial instalação" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opções do plugin" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Erro na linha de comando: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: a opção %s requer um argumento" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color aceita uma destas opções: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "mostrar essa mensagem ajuda e sai" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "ser tolerante com os erros" #: ../cli.py:1649 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:1652 msgid "config file location" msgstr "configurar localização do arquivo" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "Tempo máximo de espera do comando" #: ../cli.py:1657 msgid "debugging output level" msgstr "nível de depuração na saída" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "mostrar duplicados em repos e em comandos de pesquisa/listagem" #: ../cli.py:1663 msgid "error output level" msgstr "nível de erro na saída" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "nível de depuração na saída para o rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "operação discreta" #: ../cli.py:1671 msgid "verbose operation" msgstr "operação detalhada" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "responder sim para todas as perguntas" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "mostrar versão do Yum ao sair" #: ../cli.py:1676 msgid "set install root" msgstr "definir raiz de instalação" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "habilitar um ou mais repositórios (curingas são permitidos)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "desabilitar um ou mais repositórios (curingas são permitidos)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "excluir pacote(s) por nome ou glob" #: ../cli.py:1689 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" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "Habilitar processo de obsolescência durante as atualizações" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "desabilitar plugins do Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "desabilitar verificação de assinaturas gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "desabilitar plugins pelo nome" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "habilita plugins pelo nome" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "ignorar pacotes com problemas de solução de dependências" #: ../cli.py:1706 msgid "control whether color is used" msgstr "controla o uso da cor" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "defina o valor de $releasever nos arquivos repo e yum config" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "Configurando opções arbitrárias de repositório e configurações. " #: ../output.py:307 msgid "Jan" msgstr "Jan" #: ../output.py:307 msgid "Feb" msgstr "Fev" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Abr" #: ../output.py:307 msgid "May" msgstr "Mai" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Ago" #: ../output.py:308 msgid "Sep" msgstr "Set" #: ../output.py:308 msgid "Oct" msgstr "Out" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Dez" #: ../output.py:318 msgid "Trying other mirror." msgstr "Tentando outro espelho." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nome : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arquitetura : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Época : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Versão : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Lançamento : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Tamanho : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Do repositório : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Executor : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Tempo de execução : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Tempo de compilação : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Tempo de instalação: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Instalado por %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Alterado por : %s" #: ../output.py:612 msgid "Summary : " msgstr "Sumário : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licença : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Descrição : " #: ../output.py:684 msgid "y" msgstr "s" #: ../output.py:684 msgid "yes" msgstr "sim" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "não" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Correto? [s/N]:" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grupo: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Group-Id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Descrição: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Pacotes obrigatórios:" #: ../output.py:791 msgid " Default Packages:" msgstr " Pacotes padrão:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Pacotes opcionais:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Pacotes condicionais:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "pacote: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Nenhuma dependência para este pacote" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " dependência: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Dependência não satisfeita" #: ../output.py:901 msgid "Matched from:" msgstr "Resultado a partir de:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licença : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Nome de arquivo : %s" #: ../output.py:923 msgid "Other : " msgstr "Outro : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Houve um erro no cálculo do tamanho total do download" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Tamanho total: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Tamanho total do download: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Tamanho depois de instalado: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Houve um erro ao calcular o tamanho instalado" #: ../output.py:1039 msgid "Reinstalling" msgstr "Reinstalando" #: ../output.py:1040 msgid "Downgrading" msgstr "Desatualizando" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Instalando para as dependências" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Atualizando para as dependências" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Removendo para as dependências" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Ignorado (problemas de dependências)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Não instalado" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Pacote" #: ../output.py:1075 msgid "Arch" msgstr "Arq." #: ../output.py:1076 msgid "Version" msgstr "Versão" #: ../output.py:1076 msgid "Repository" msgstr "Repo" #: ../output.py:1077 msgid "Size" msgstr "Tam." #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " substituindo %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Resumo da transação\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Instalar %5.5s Pacote(s)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Atualizar %5.5s Pacote(s)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Remover %5.5s Pacote(s)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Reinstalar %5.5s Pacote(s)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Desatualizar %5.5s Pacote(s)\n" #: ../output.py:1165 msgid "Removed" msgstr "Removido(s)" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Dependência(s) removida(s)" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Dependência(s) instalada(s)" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Dependência(s) atualizada(s)" #: ../output.py:1172 msgid "Replaced" msgstr "Substituído(s)" #: ../output.py:1173 msgid "Failed" msgstr "Falhou" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dois" #. 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:1271 #, python-format msgid "" "\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" "para sair.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "interrupção do usuário" #: ../output.py:1300 msgid "Total" msgstr "Total" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Sistema" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "IDs de transação ou pacote(s) fornecido(s) inválido(s)" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Usuário de login" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Data e hora" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Ação(ões)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Alterado" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Nenhum ID de transação fornecido" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "O ID de transação fornecido é inválido" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "O ID de transação dado não foi localizado" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Foi localizado mais de um ID de transação!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Nenhum ID de transação ou pacote fornecido" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Desatualizados" #: ../output.py:1688 msgid "Older" msgstr "Antigo" #: ../output.py:1688 msgid "Newer" msgstr "Recente" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "ID de transação:" #: ../output.py:1728 msgid "Begin time :" msgstr "Horário de início:" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Início do rpmdb:" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "Horário do fim:" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Fim do rpmdb:" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Usuário:" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Código de retorno:" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Interrompido" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "Falha:" #: ../output.py:1779 msgid "Success" msgstr "Sucesso" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Linha de comando :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "informações não-padrão adicionais armazenadas: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transação realizada com:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Pacotes alterados:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Pacotes ignorados: " #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problemas com Rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Saída do scriptlet:" #: ../output.py:1831 msgid "Errors:" msgstr "Erros:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Instalar" #: ../output.py:1839 msgid "Dep-Install" msgstr "Dep-Install" #: ../output.py:1841 msgid "Obsoleting" msgstr "Obsoletos" #: ../output.py:1842 msgid "Erase" msgstr "Apagar" #: ../output.py:1843 msgid "Reinstall" msgstr "Reinstalar" #: ../output.py:1844 msgid "Downgrade" msgstr "Desatualizar" #: ../output.py:1846 msgid "Update" msgstr "Atualizar" #: ../output.py:1909 msgid "Time" msgstr "Hora" #: ../output.py:1935 msgid "Last day" msgstr "Ontem" #: ../output.py:1936 msgid "Last week" msgstr "Uma semana atrás" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "2 semanas atrás" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "3 meses atrás" #: ../output.py:1939 msgid "Last 6 months" msgstr "6 meses atrás" #: ../output.py:1940 msgid "Last year" msgstr "Ano passado" #: ../output.py:1941 msgid "Over a year ago" msgstr "Há mais de um ano" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Nenhuma transação %s achada" #: ../output.py:1990 msgid "Transaction ID:" msgstr "ID da transação:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Informação adicional do histórico disponível:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Não há dados adicionais encontrados por este nome" #: ../output.py:2106 msgid "installed" msgstr "instalado" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "removido" #: ../output.py:2109 msgid "reinstalled" msgstr "Reinstalado" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "atualizado" #: ../output.py:2113 msgid "obsoleted" msgstr "obsoleto" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Executando verificação da transação" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Reiniciando resolução de dependências com as novas alterações." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Resolução de dependências finalizada" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Processando dependência: %s para o pacote: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Manter os pacotes: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Dependência não resolvida: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Pacote: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Requer: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Não encontrado" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Atualizado por" #: ../output.py:2197 msgid "Downgraded By" msgstr "Desatualizado por" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Obsoletado por" #: ../output.py:2216 msgid "Available" msgstr "Disponível" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Processando conflito: %s conflita com %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Construindo conjunto de transações com os pacotes selecionados. Por " "favor aguarde." #: ../output.py:2256 #, 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:99 msgid "Running" msgstr "Executando" #: ../utils.py:100 msgid "Sleeping" msgstr "Dormindo" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Ininterrompível" #: ../utils.py:102 msgid "Zombie" msgstr "Zumbi" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Rastreado/Parado" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Desconhecido" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " O outro aplicativo é: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " O outro aplicativo é: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memória: %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Iniciado: %s - %s atrás" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Estado: %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Saindo pelo cancelamento do usuário" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Saindo por um pipe defeituoso" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "No momento outro aplicativo está com a posse da trava do yum; saindo " "conforme configurado pelo exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Erro PluginExit: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Error do Yum: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Error: %s" #: ../utils.py:346 ../yummain.py:194 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" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Você pode tentar executar: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Erro(s) desconhecido(s): código de saída: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Dependências resolvidas" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Concluído!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Você precisa ser root para executar este comando." #: ../yumcommands.py:59 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" "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" "\n" "\n" "Alternativamente, você pode especificar, na opção \"gpgkey\" da seção\n" " 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" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, 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:86 msgid "Error: Need an item to match" msgstr "Erro: É necessário um item para corresponder" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Erro: É necessário um grupo ou uma lista de grupos" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Erro: a limpeza requer uma opção: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Erro: argumento de limpeza inválido: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Nenhum argumento para o shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Nome de arquivo passado para o shell: %s" #: ../yumcommands.py:125 #, 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:131 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:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Não há repositórios habilitados.\n" "Execute \"yum repolist all\" para ver os repositórios que você tem.\n" "Você pode habilitar repositórios com yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PACOTE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instala um ou mais pacotes no seu sistema" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Configurando o processo de instalação" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PACOTE...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Atualiza um ou mais pacotes do seu sistema" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Configurando o processo de atualização" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Sincronizar os pacotes instalados para as últimas versões disponíveis" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Configurando o processo de Sincronização de Distribuição" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Mostra detalhes sobre um pacote ou grupos de pacotes" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Pacotes instalados" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Pacotes disponíveis" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Pacotes extras" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Pacotes atualizados" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Tornando pacotes obsoletos" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Pacotes adicionados recentemente" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Nenhum pacote correspondente a ser listado" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Lista um pacote ou grupos de pacotes" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Remove um ou mais pacotes do seu sistema" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Configurando o processo de remoção" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Configurando o processo de grupos" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Não há grupos nos quais executar o comando" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Lista os grupos de pacotes disponíveis" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instala pacotes em um grupo ou no seu sistema" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Remove pacotes de um grupo ou do seu sistema" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Mostra detalhes sobre um grupo de pacotes" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Gera o cache de metadados" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Realizando cache de arquivos para todos os metadados." #: ../yumcommands.py:557 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:578 msgid "Metadata Cache Created" msgstr "Cache de metadados criado" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Remove os dados do cache" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Localiza qual pacote fornece o valor dado" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Verifica por atualizações de pacotes disponíveis" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Pesquisa detalhes do pacote para a string fornecida" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Pesquisando por pacotes:" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Atualiza pacotes levando em conta os obsoletos" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Configurando o processo de atualização" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instala um RPM local" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Configurando o processo de pacote local" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Determina qual pacote fornece a dependência dada" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Pesquisando pacotes por dependência:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Executa um shell interativo do yum" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Configurando o shell do Yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Lista as dependências de um pacote" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Localizando dependências:" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Exibe os repositórios de software configurados" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "habilitado" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "desabilitado" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Repo-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Repo-name : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Repo-status : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Repo-revision: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-tags : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tags: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo-updated : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Repo-pkgs : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Repo-size : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Repo-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Atualizados :" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Repo-mirrors : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Nunca (último: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Instante (último: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s segundo(s) (último: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Repo-expire : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-exclude : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-include : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Repo-excluded: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "id do repo" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "nome do repo" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Exibe uma mensagem de uso para ajuda" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Nenhuma ajuda disponível para %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "apelidos: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "apelido: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Configurando o processo de reinstalação" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "reinstala um pacote" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Configurando o processo de desatualização" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "desatualizando um pacote" #: ../yumcommands.py:1216 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:1255 msgid " Yum version groups:" msgstr " Grupos da versão do Yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Grupo:" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Pacotes:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Instalados:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Grupos instalados:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Disponíveis:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Grupos disponíveis:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Exibir ou usar o histórico de transações" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Subcomando de histórico inválido, use: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Você não tem acesso ao banco de dados do histórico." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Procurar por problemas no rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 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:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Resolvendo dependências" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Saindo pelo cancelamento do usuário." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() será removida em uma futura versão do Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" "Configurando TransactionSets antes da ativação da classe de configuração" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "tsflag inválido no arquivo de configuração: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Pesquisando pkgSack para a dep.: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Membro: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s convertido para instalar" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Adicionando pacote %s no modo %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Removendo pacote %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s requer: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s requer %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "O requerimento necessário já foi localizado, enganando" #: ../yum/depsolve.py:349 #, 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:357 #, python-format msgid "Potential Provider: %s" msgstr "Fornecedor em potencial: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "O modo é %s para o fornecedor do %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Modo para o pacote que fornece o %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, 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:429 #, 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:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Atualizando %s para resolver a dependência." #: ../yum/depsolve.py:440 #, 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:471 #, 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:513 #, 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:529 #, 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:540 #, 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:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s já está no ct, pulando esse" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Marcando %s como uma atualização para o %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Marcando %s como uma instalação para o %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Sucesso - transação vazia" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Reiniciando o loop" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Término do processo de dependências" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Sucesso - dependências resolvidas" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Verificando dependências para %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "procurando por %s como um requerimento do %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Executando compare_providers() para %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "melhor arquitetura no po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s torna %s obsoleto" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist comparou %s com %s em %s\n" " Vencedor: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "Sourcerpm comum %s e %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "o pacote base %s está instalado para o %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "prefixo comum de %s entre %s e %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "requer mínimo: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "Vencedor: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "Perdedor(com %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Melhor ordem: %s" #: ../yum/__init__.py:234 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:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Repositório %r: Erro ao analisar a configuração: %s" #: ../yum/__init__.py:488 #, 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:526 msgid "plugins already initialised" msgstr "plugins já inicializados" #: ../yum/__init__.py:533 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:544 msgid "Reading Local RPMDB" msgstr "Lendo RPMDB local" #: ../yum/__init__.py:567 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:630 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:660 msgid "Setting up Package Sacks" msgstr "Configurando sacos de pacotes" #: ../yum/__init__.py:705 #, 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:706 msgid "therefore this repo cannot be reset.\n" msgstr "conseqüentemente este repo não pode ser restaurado.\n" #: ../yum/__init__.py:711 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:723 msgid "Building updates object" msgstr "Construindo objeto de atualizações" #: ../yum/__init__.py:765 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:790 msgid "Getting group metadata" msgstr "Obtendo metadados do grupo" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Adicionando arquivo de grupo a partir do repositório: %s" #: ../yum/__init__.py:827 #, 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:833 msgid "No Groups Available in any repository" msgstr "Nenhum grupo disponível em nenhum repositório" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Obtendo metadados do pkgtags" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Adicionando tags do repositório: %s" #: ../yum/__init__.py:866 #, 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:944 msgid "Importing additional filelist information" msgstr "Importando informações adicionais da lista de arquivos" #: ../yum/__init__.py:958 #, 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:966 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:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Tentando remover \"%s\", que está protegido." #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Pacotes ignorados devido a problemas de dependências:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s a partir de %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Encontrado(s) %d problema(s) pré-existente(s) do rpmdb, saída do 'yum " "check' a seguir:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Aviso: o RPMDB foi alterado de fora do yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "faltando exigências" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "conflito instalado" #: ../yum/__init__.py:1525 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:1535 msgid "Transaction couldn't start:" msgstr "A transação não pode ser iniciada." #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Não foi possível executar a transação." #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s deveria ter sido removido mas não foi!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Não foi possível abrir a trava %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, 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:1789 #, 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:1830 #, 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:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "O Pacote não coincide com o download pretendido. Sugestão: execute yum " "--enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Não foi possível realizar a soma de verificação" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "O pacote não corresponde à soma de verificação" #: ../yum/__init__.py:1946 #, 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" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "usando cópia local do %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Espaço insuficiente no diretório de download %s\n" " * livre %s\n" " * necessário %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "O cabeçalho não está completo." #: ../yum/__init__.py:2089 #, 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." #: ../yum/__init__.py:2147 #, 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:2151 #, python-format msgid "Problem opening package %s" msgstr "Problema ao abrir o pacote %s" #: ../yum/__init__.py:2159 #, 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:2163 #, python-format msgid "Package %s is not signed" msgstr "O pacote %s não está assinado" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Não foi possível remover %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s removido" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Não foi possível remover %s arquivo %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s arquivo %s removido" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s arquivos removidos" #: ../yum/__init__.py:2327 #, 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:2333 #, 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:2632 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:2675 #, python-format msgid "Searching %d packages" msgstr "Pesquisando por %d pacotes" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "pesquisando pelo pacote %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "pesquisando nas entradas do arquivo" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "pesquisando nas entradas dos fornecimentos" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Nenhum dado de grupos disponível para os repositório configurados" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Não existe nenhum grupo de nome %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, 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:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Adicionando o pacote %s do grupo %s" #: ../yum/__init__.py:2891 #, 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:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, 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:3022 #, 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:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nenhum pacote encontrado para %s" #: ../yum/__init__.py:3401 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:3405 msgid "Nothing specified to install" msgstr "Nada especificado para instalar" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, 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:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Nenhuma correspondência para o argumento: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Pacote %s instalado, mas não disponível" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Nenhum pacote disponível para instalar" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Pacote: %s - já está no conjunto de transações" #: ../yum/__init__.py:3550 #, 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:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "O pacote %s foi tornado obsoleto por %s, mas este não provê os requisitos." #: ../yum/__init__.py:3558 #, 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" #: ../yum/__init__.py:3566 #, 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:3580 #, 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:3684 msgid "Updating Everything" msgstr "Atualizando tudo" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, 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:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, 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:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Não atualizando o pacote que está obsoleto: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, 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:3982 msgid "No package matched to remove" msgstr "Nenhum pacote encontrado para remoção" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Ignorando o kernel em execução: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Removendo %s da transação" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Não foi possível abrir: %s. Ignorando." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Examinando %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Não é possível instalar localmente o deltarpm: %s. Ignorando." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, 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." #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Não é possível instalar o pacote % s. É obsoleto pelo pacote instalado %s" #: ../yum/__init__.py:4059 #, 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." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Excluindo %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Marcando %s para ser instalado" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Marcando %s como uma atualização do %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: não atualiza o pacote instalado." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Não foi possível abrir o arquivo: %s. Ignorando." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Problema na reinstalação: nenhum pacote encontrado para remoção" #: ../yum/__init__.py:4203 #, 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:4311 msgid "No package(s) available to downgrade" msgstr "Nenhum pacote disponível para ser desatualizado" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "O pacote %s permite múltiplas instalações, ignorando" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Nenhuma correspondência disponível para o pacote: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Somente a atualização está disponível para o pacote: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Falha ao desatualizar: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "A obtenção da chave GPG falhou:" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "A chave GPG de %s é inválida: %s" #: ../yum/__init__.py:4576 #, 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:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "A chave GPG em %s (0x%s) já está instalada" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Falha na importação da chave (código %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Chave importada com sucesso" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" "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:4689 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:4713 #, 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:4754 msgid "Key import failed" msgstr "Falha na importação da chave" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "As chaves GPG listadas para o repositório \"%s\" já estão instaladas, mas não estão corretas.\n" "Verifique se as URLs das chaves estão configuradas corretamente para este repositório. " #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Não foi possível encontrar um espelho apropriado." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Foram encontrados erros ao baixar os pacotes." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Por favor, relate esse erro em %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Erros do teste de transação:" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Não foi possível definir a cachedir: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Plugins carregados: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Nenhum plugin correspondente para: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "O plugin \"%s\" não será carregado, pois está desabilitado" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "O plugin \"%s\" não pôde ser importado" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "O plugin \"%s\" não especifica a versão requerida da API" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "O plugin \"%s\" requer a API %s. A API suportada é a %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Carregando o plugin \"%s\"" #: ../yum/plugins.py:323 #, 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" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Arquivos de configuração %s não encontrado" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Não foi possível encontrar o arquivo de configuração para o plugin %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "O registro de comandos não é suportado" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "tem exigências faltando do" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "tem conflitos instalados" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s é uma duplicação do %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s foi tornado obsoleto por %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s provê %s mas não pôde ser achado" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Reempacotando" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "O cabeçalho não pode ser aberto ou não coincide com %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" 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?" #: ../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 #, python-format msgid "Damaged Header %s" msgstr "Cabeçalho %s danificado" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Erro ao abrir o rpm %s - erro %s" yum-3.4.3/po/sv.po0000664000076400007640000023366211602434452012750 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Göran Uddeborg , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Swedish (http://www.transifex.net/projects/p/yum/team/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Uppdaterar" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Raderar" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installerar" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Utfasad" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Uppdaterade" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Raderade" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Installerade" #: ../callback.py:130 msgid "No header - huh?" msgstr "Inget huvud - va?" #: ../callback.py:168 msgid "Repackage" msgstr "Paketera om" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Fel: ogiltig utdatatillstÃ¥nd: %s för %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Raderade: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Tar bort" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Rensar upp" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Kommando \"%s\" redan definierat" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Gör i ordning förrÃ¥d" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Läser in förrÃ¥dsmetadata frÃ¥n lokala filer" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Konfigurationsfel: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Fel bland flaggor: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Installerade: %s-%s %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Byggde : %s %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Verkställde : %s %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Du mÃ¥ste ange nÃ¥got kommando" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Inget sÃ¥dant kommando: %s. Använd %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Diskbehov:\n" #: ../cli.py:402 #, python-format 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:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Felsammandrag\n" "-------------\n" #: ../cli.py:450 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:497 msgid "Exiting on user Command" msgstr "Avslutar pÃ¥ användarens order" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Hämtar paket:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Fel när paket hämtades:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Kör transaktionskontroll" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "FEL Du behöver uppdatera rpm för att hantera:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "FEL med transaktionskontroll mot depsolve:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM behöver uppdateras" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Vänligen rapportera detta fel i %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Kör transaktionstest" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Transaktionskontrollfel:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Transaktionskontrollen lyckades" #: ../cli.py:600 msgid "Running Transaction" msgstr "Kör transaktionen" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Vägrar att automatiskt importera nycklar vid oövervakad körning.\n" "Använd \"-y\" för att Ã¥sidosätta." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Du kanske menade: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Paket %s%s%s tillgängliga, men inte installerade." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Inget paket %s%s%s tillgängligt." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paket att installera" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Inget att göra" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paket noterade att uppdateras" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Inga paket noterade att uppdateras" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d paket noterade för distributionssynkronisering" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Inga paket noterade för distributionssynkronisering" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paket noterade att tas bort" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Inga paket noterade att tas bort" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paket att nedgradera" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (frÃ¥n %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Installerat paket %s%s%s%s inte tillgängligt." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paket att ominstallera" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Inga paket angivna" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "N/S matchade: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Matchning %sendast%s av namn och sammandrag, använd \"search all\" för " "allting." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Matchning %sendast%s av fullständigt namn och sammandrag, använd \"search " "all\" för allting." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Matchade: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Matchning %shuvudsakligen%s av namn och sammandrag, använd \"search all\" " "för allting." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Varning: Ingen matchning hittades för: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Inga matchningar hittades" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Inga paket hittades för %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Rensar förrÃ¥d: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Rensar upp allt" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Rensar upp huvuden" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Rensar upp paket" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Rensar upp xml-metadata" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Rensar upp databas-cache" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Rensar upp expire-cache-metadata" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Rensar upp cachad rpmdb-data" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Rensar upp insticksmoduler" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Varning: Inga grupper matchar: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Installerade grupper:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Installerade sprÃ¥kgrupper:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Tillgängliga grupper:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "Tillgängliga sprÃ¥kgrupper:" #: ../cli.py:1285 msgid "Done" msgstr "Klart" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Varning: Grupp %s finns inte." #: ../cli.py:1324 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:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d paket att installera" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Ingen grupp med namnet %s finns" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Inget paket att ta bort frÃ¥n grupper" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d paket att ta bort" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Paket %s är redan installerat, hoppar över" #: ../cli.py:1397 #, 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:1423 #, 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:1443 msgid "Plugin Options" msgstr "Insticksmodulsalternativ" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Kommandoradsfel: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: flaggan %s behöver ett argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color tar en av: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot mÃ¥ste vara en absolut sökväg: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "visa detta hjälpmeddelande och avsluta" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "var tolerant vid fel" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "kör helt frÃ¥n systemets cache, uppdatera inte cachen" #: ../cli.py:1652 msgid "config file location" msgstr "konfigurationsfilens plats" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maximal tid att vänta pÃ¥ kommandon" #: ../cli.py:1657 msgid "debugging output level" msgstr "nivÃ¥ pÃ¥ felsökningsutskrifter" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "visa dubletter, i förrÃ¥d, i list-/search-kommandon" #: ../cli.py:1663 msgid "error output level" msgstr "nivÃ¥ pÃ¥ felutskrifter" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "nivÃ¥ pÃ¥ felsökningsutskrifter för rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "tyst operation" #: ../cli.py:1671 msgid "verbose operation" msgstr "utförlig operation" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "svara ja pÃ¥ alla frÃ¥gor" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "visa Yum-version och avsluta" #: ../cli.py:1676 msgid "set install root" msgstr "ange installationsrot" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "aktivera ett eller flera förrÃ¥d (jokrertecken tillÃ¥ts)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "inaktivera ett eller flera förrÃ¥d (jokertecken tillÃ¥ts)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "uteslut paket via namn eller mönster" #: ../cli.py:1689 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:1692 msgid "enable obsoletes processing during updates" msgstr "aktivera bearbetning av utfasningar under uppdateringar" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "inaktivera Yum-insticksmoduler" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "inaktivera kontroll av gpg-signatur" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "inaktivera insticksmoduler efter namn" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "aktivera insticksmoduler efter namn" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "hoppa över paket med problem vid beroendeupplösning" #: ../cli.py:1706 msgid "control whether color is used" msgstr "styr om färg skall användas" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "sätt värdet pÃ¥ $releasever i yum-konfigurations- och repo-filer" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "sätt godtyckliga konfigurations- och förrÃ¥dsalternativ" #: ../output.py:307 msgid "Jan" msgstr "jan" #: ../output.py:307 msgid "Feb" msgstr "feb" #: ../output.py:307 msgid "Mar" msgstr "mar" #: ../output.py:307 msgid "Apr" msgstr "apr" #: ../output.py:307 msgid "May" msgstr "maj" #: ../output.py:307 msgid "Jun" msgstr "jun" #: ../output.py:308 msgid "Jul" msgstr "jul" #: ../output.py:308 msgid "Aug" msgstr "aug" #: ../output.py:308 msgid "Sep" msgstr "sep" #: ../output.py:308 msgid "Oct" msgstr "okt" #: ../output.py:308 msgid "Nov" msgstr "nov" #: ../output.py:308 msgid "Dec" msgstr "dec" #: ../output.py:318 msgid "Trying other mirror." msgstr "Försöker med en annan spegel." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Namn : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arkitektur : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epok : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Version : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "UtgÃ¥va : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Storlek : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "FörrÃ¥d : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "FrÃ¥n förrÃ¥d : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Verkställare: %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Verkställt : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Byggt : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Installerat : %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Installerat av: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Ändrat av : %s" #: ../output.py:612 msgid "Summary : " msgstr "Sammandrag : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licens : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Beskrivning : " #: ../output.py:684 msgid "y" msgstr "j" #: ../output.py:684 msgid "yes" msgstr "ja" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "nej" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Är detta ok [j/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grupp: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Grupp-id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Beskrivning: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " SprÃ¥k: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Obligatoriska paket:" #: ../output.py:791 msgid " Default Packages:" msgstr " Standardpaket:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Valfria paket:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Villkorliga paket:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paket: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Inga beroenden för detta paket" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " beroende: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Ej uppfyllt beroende" #: ../output.py:901 msgid "Matched from:" msgstr "Matchat frÃ¥n:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licens : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Filnamn : %s" #: ../output.py:923 msgid "Other : " msgstr "Övrigt : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Ett fel uppstod vid beräkningen av total storlek att hämta" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Total storlek: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Total storlek att hämta: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Installerad storlek: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Ett fel uppstod vid beräkningen av installerad storlek" #: ../output.py:1039 msgid "Reinstalling" msgstr "Ominstallerar" #: ../output.py:1040 msgid "Downgrading" msgstr "Nedgraderar" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Installerar pÃ¥ grund av beroenden" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Uppdaterar pÃ¥ grund av beroenden" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Tar bort pÃ¥ grund av beroenden" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Hoppas över (beroendeproblem)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Inte installerat" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paket" #: ../output.py:1075 msgid "Arch" msgstr "Ark" #: ../output.py:1076 msgid "Version" msgstr "Version" #: ../output.py:1076 msgid "Repository" msgstr "FörrÃ¥d" #: ../output.py:1077 msgid "Size" msgstr "Storl." #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " ersätter %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Transaktionssammanfattning\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Installerar %5.5s paket\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Uppdaterar %5.5s Paket\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Tar bort %5.5s paket\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Ominstallerar %5.5s paket\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Nedgraderar %5.5s paket\n" #: ../output.py:1165 msgid "Removed" msgstr "Borttagna" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Borttagna beroenden" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Installerade beroenden" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Uppdaterade beroenden" #: ../output.py:1172 msgid "Replaced" msgstr "Ersatte" #: ../output.py:1173 msgid "Failed" msgstr "Misslyckade" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "tvÃ¥" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Aktuell nedladdning avbröts, %savbryt (ctrl-c) igen%s inom %s%s%s sekunder\n" "för att avsluta.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "avbrott frÃ¥n användaren" #: ../output.py:1300 msgid "Total" msgstr "Totalt" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "UF" #: ../output.py:1324 msgid "E" msgstr "R" #: ../output.py:1325 msgid "R" msgstr "O" #: ../output.py:1326 msgid "D" msgstr "N" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "System" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" "Hoppar över sammanslagen transaktion %d till %d, eftersom de överlappar" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Inga transaktioner" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Felaktiga transaktions ID:n, eller paket, angivna" #: ../output.py:1484 msgid "Command line" msgstr "Kommandorad" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Inloggad användare" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Datum och tid" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Ã…tgärd(er)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Ändrade" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Inget transaktions-ID angivet" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Felaktigt transaktions-ID angivet" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Hittade inte angivet transaktions-ID" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Hittade mer än ett transaktions-ID!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Inget transaktions-ID, eller paket, angivet" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Nedgraderade" #: ../output.py:1688 msgid "Older" msgstr "Äldre" #: ../output.py:1688 msgid "Newer" msgstr "Nyare" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Transaktions-ID:" #: ../output.py:1728 msgid "Begin time :" msgstr "Starttid :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Start-rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u sekunder)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minuter)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u timmar)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u dagar)" #: ../output.py:1756 msgid "End time :" msgstr "Sluttid : " #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Slut-rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Användare :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Returkod :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Avbruten" #: ../output.py:1773 msgid "Failures:" msgstr "Misslyckanden:" #: ../output.py:1777 msgid "Failure:" msgstr "Misslyckades:" #: ../output.py:1779 msgid "Success" msgstr "Lyckades" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Kommandoradsfel:" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Ytterligare icke-standardinformation lagrad: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transaktionen utförd med:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Ändrade paket:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Överhoppade paket:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb-problem:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Skriptutdata:" #: ../output.py:1831 msgid "Errors:" msgstr "Fel:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Installation" #: ../output.py:1839 msgid "Dep-Install" msgstr "Ber-inst" #: ../output.py:1841 msgid "Obsoleting" msgstr "Fasar ut" #: ../output.py:1842 msgid "Erase" msgstr "Radering" #: ../output.py:1843 msgid "Reinstall" msgstr "Ominstallation" #: ../output.py:1844 msgid "Downgrade" msgstr "Nedgradering" #: ../output.py:1846 msgid "Update" msgstr "Uppdatering" #: ../output.py:1909 msgid "Time" msgstr "Tid" #: ../output.py:1935 msgid "Last day" msgstr "Senaste dagen" #: ../output.py:1936 msgid "Last week" msgstr "Senaste veckan" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Senaste 2 veckorna" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Senaste 3 mÃ¥naderna" #: ../output.py:1939 msgid "Last 6 months" msgstr "Senaste 6 mÃ¥naderna" #: ../output.py:1940 msgid "Last year" msgstr "Senaste Ã¥ret" #: ../output.py:1941 msgid "Over a year ago" msgstr "Mer än ett Ã¥r tillbaka" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Ingen transaktion %s funnen" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Transaktions-ID:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Tillgänglig ytterligare historieinformation" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Inga ytterligare data finns med detta namn" #: ../output.py:2106 msgid "installed" msgstr "installerat" #: ../output.py:2107 msgid "an update" msgstr "en uppdatering" #: ../output.py:2108 msgid "erased" msgstr "raderat" #: ../output.py:2109 msgid "reinstalled" msgstr "ominstallerat" #: ../output.py:2110 msgid "a downgrade" msgstr "en nedgradering" #: ../output.py:2111 msgid "obsoleting" msgstr "utfasning" #: ../output.py:2112 msgid "updated" msgstr "uppdaterat" #: ../output.py:2113 msgid "obsoleted" msgstr "utfasat" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Paket %s.%s %s:%s-%s blir %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Kör transaktionskontroll" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Startar om beroendeupplösning med nya ändringar." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Avslutade beroendeupplösning" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Bearbetar beroende: %s för paket: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> BehÃ¥ller paketet: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Ej upplöst beroende: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paket: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Behöver: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Finns inte" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Uppdaterat av" #: ../output.py:2197 msgid "Downgraded By" msgstr "Nedgraderat av" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Utfasat av" #: ../output.py:2216 msgid "Available" msgstr "Tillgängliga" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Bearbetar konflikt: %s stÃ¥r i konflikt med %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Fyller transaktionsmängden med valda paket. Var god dröj." #: ../output.py:2256 #, 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:99 msgid "Running" msgstr "Kör" #: ../utils.py:100 msgid "Sleeping" msgstr "Sover" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Oavbrytbar" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "SpÃ¥rad/Stoppad" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Okänd" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Det andra programmet är: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Det andra programmet är: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Minne : %5s RSS (%5s B VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Startade: %s - för %s sedan" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Status : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Slutar efter att användaren avbröt" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Slutar med brutet rör (pipe)" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Ett annat program hÃ¥ller för närvarande yum-lÃ¥set, avslutar som konfigurerad" " av exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Insticksmodulsavslutsfel: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum-fel: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Fel: %s" #: ../utils.py:346 ../yummain.py:194 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" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Du kan försöka köra: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Okänt fel: Felkod: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Beroenden upplösta" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Klart!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Minianvändning:\n" #: ../yumcommands.py:52 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:59 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" "Du har aktiverat kontroll av paket med GPG-nycklar. Det är bra. Doch har\n" "du inte nÃ¥gra publika GPG-nycklar installerade. Du behöver hämta nycklarna\n" "för paket som du vill installera och installera dem.\n" "Du kan göra det genom att köra kommandot:\n" " rpm --import public.gpg.key\n" "\n" "\n" "Alternativt kan du ange URL:en till nyckeln du vill använda för ett förrÃ¥d\n" "i alternativet gpgkey i en förrÃ¥dssektion och yum kommer installera den Ã¥t\n" "dig.\n" "\n" "För mer information, kontakta leverantören av din distribution eller paket.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, 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:86 msgid "Error: Need an item to match" msgstr "Fel: Behöver nÃ¥got att matcha emot" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Fel: Behöver en grupp eller lista av grupper" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Fel: clean behöver ett argument: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Fel: felaktigt argument till clean: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Inget argument till skalet" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Filnamn skickat till skalet: %s" #: ../yumcommands.py:125 #, 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:131 msgid "Error: more than one file given as argument to shell." msgstr "Fel: mer än en fil angiven som argument till skalet." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Det finns inga aktiverade förrÃ¥d.\n" " Kör â€yum repolist all†för att se vilka förrÃ¥d du har.\n" " Du kan aktivera förrÃ¥d med yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKET..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Installera ett eller flera paket pÃ¥ ditt system" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Förbereder installationsprocessen" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKET...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Uppdatera ett eller flera paket pÃ¥ ditt system" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Förbereder uppdateringsprocessen" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "Synkroniser installerade paket med de senaste tillgängliga versionerna" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Förbereder distributionssynkroniseringsprocessen" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Visa detaljer om ett paket eller en grupp paket" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Installerade paket" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Tillgängliga paket" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Extra paket" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Uppdaterade paket" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Fasar ut paket" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Nyligen tillagda paket" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Inga matchande paket att lista" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Lista ett paket eller en grupp paket" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Ta bort ett eller flera paket frÃ¥n ditt system" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Förbereder processen att ta bort" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Förbereder grupprocessen" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Inga grupper att köra kommandot pÃ¥" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Lista tillgängliga paketgrupper" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Installera paketen i en grupp pÃ¥ ditt system" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Ta bort paketen in en grupp frÃ¥n ditt system" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Visa detaljer om en paketgrupp" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Generera metadata-cache:n" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Skapar cache-filer för alla metadatafiler." #: ../yumcommands.py:557 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:578 msgid "Metadata Cache Created" msgstr "Metadata-cache skapad" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Ta bort cache:ade data" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Ta reda pÃ¥ vilka paket som tillhandahÃ¥ller det angivna värdet" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Leta efter tillgängliga paketuppdateringar" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Sök i paketdetaljer efter den angivna strängen" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Söker paket: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Uppdatera paket med hänsyn tagen till utfasningar" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Förbereder uppgraderingsprocessen" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Installera en lokal RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Förbereder den lokala paketprocessen" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Avgör vilket paket som tillhandahÃ¥ller ett angivet beroende" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Söker i paketen efter beroende:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Kör ett interactivt yum-skal" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Förbereder ett yum-skal" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Lista ett pakets beroenden" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Letar efter beroenden: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Visa konfigurerade programvaruförrÃ¥d" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "aktivt" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "inaktivt" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "FörrÃ¥ds-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "FörrÃ¥dsnamn : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "FörrÃ¥dsstatus : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "FörrÃ¥dsversion : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "FörrÃ¥dstaggar : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "FörrÃ¥ds-distro-taggar: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "FörrÃ¥d uppdaterat: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "FörrÃ¥dspaket : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "FörrÃ¥dstorlek : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "FörrÃ¥dsbasurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "FörrÃ¥dsmetalänk : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Uppdaterat :" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "FörrÃ¥dspeglar : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Aldrig (senast: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Omedelbart (senast: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s sekunder (senast: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "FörrÃ¥d gÃ¥r ut : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "FörrÃ¥d utesluter : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "FörrÃ¥d inkluderar: " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "FörrÃ¥d uteslutet : " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "förrÃ¥ds-id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "förrÃ¥dsnamn" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Visa ett hjälpsamt meddelande om användning" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Ingen hjälp tillgänglig för %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Förbereder ominstallationsprocessen" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "ominstallera ett paket" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Förbereder nedgraderingsprocessen" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "nedgradera ett paket" #: ../yumcommands.py:1216 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:1255 msgid " Yum version groups:" msgstr " Yum versionsgrupper:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Grupp:" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Paket:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installerade:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Gruppinstallerade:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Tillgängliga:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Grupptillgängliga:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Visa, eller använd, transaktionshistorien" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Ogiltigt underkommando till history, använd: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Du har inte tillgÃ¥ng till historie-DB:n." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Kontrollera om det finns problem i rpmdb:n" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "läs in en sparad transaktion frÃ¥n filnamn" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Ingen fil med sparad transaktion angiven." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "läser in transaktionen frÃ¥n %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Transaktionen inläst frÃ¥n %s med %s medlemmar" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Yums kontroller misslyckades: %s" #: ../yummain.py:114 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:120 msgid "Can't create lock file; exiting" msgstr "Det gÃ¥r inte att skapa en lÃ¥sfil, avslutar" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Löser upp beroenden" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "Din transaktion sparades, kör om den med: yum load-transaction %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Slutar efter att användaren avbröt." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() kommer att försvinna i en framtida version av Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Förbereder transaktionsmängder före konfigurationsklass är uppe" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Ogiltig tsflag i konfigurationsfil: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Söker pkgSack efter beroende: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Medlem: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s konverterad till att installera" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Lägger till paket %s i läge %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Tar bort paket %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s behöver: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s behöver %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Nödvändigt behov har redan slagits upp, fuskar" #: ../yum/depsolve.py:349 #, 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:357 #, python-format msgid "Potential Provider: %s" msgstr "Potentiell tillhandahÃ¥llare: %s" #: ../yum/depsolve.py:380 #, 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:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Läge för paket som tillhandahÃ¥ller %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Försöker uppdatera %s för att lösa upp beroenden" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Hittar ingen uppdateringsväg för %s. Misslyckat!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: paket %s behöver %s noteras att raderas" #: ../yum/depsolve.py:429 #, 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:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Uppdaterar %s för att lösa upp beroenden" #: ../yum/depsolve.py:440 #, 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:471 #, 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:513 #, 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:529 #, 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:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Potentiellt upplösande paket %s har nyare instans installerad." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s är redan i ts, hoppar över denna" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Noterar %s som en uppdatering av %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Noterar %s som en installation av %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Klart - tom transaktion" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Startar om slingan" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Beroendeprocessen avslutas" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Klart - beroenden upplösta" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Kontrollerar beroenden för %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "letar efter %s som ett behov för %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Kör compare_providers() för %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "bättre arkitektur i po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s fasar ut %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "arkitekturavstÃ¥nd jämför %s med %s pÃ¥ %s\n" " Vinnare: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "samma käll-rpm %s och %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "baspaket %s är installerat för %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "gemensamt prefix för %s mellan %s och %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "behöver minst: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "Vinnare: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Förlorare(med %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Bästa ordning: %s" #: ../yum/__init__.py:234 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:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "FörrÃ¥d %r: Fel vid tolkning konfiguration: %s" #: ../yum/__init__.py:488 #, 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:526 msgid "plugins already initialised" msgstr "insticksmoduler redan initierade" #: ../yum/__init__.py:533 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:544 msgid "Reading Local RPMDB" msgstr "Läser lokal RPMDB" #: ../yum/__init__.py:567 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:630 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:660 msgid "Setting up Package Sacks" msgstr "Förbereder paketsäckar" #: ../yum/__init__.py:705 #, 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:706 msgid "therefore this repo cannot be reset.\n" msgstr "därför kan inte detta förrÃ¥d Ã¥terställas.\n" #: ../yum/__init__.py:711 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:723 msgid "Building updates object" msgstr "Bygger uppdateringsobjekt" #: ../yum/__init__.py:765 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:790 msgid "Getting group metadata" msgstr "Hämtar gruppmetadata" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Lägger till gruppfil frÃ¥n förrÃ¥det: %s" #: ../yum/__init__.py:827 #, 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:833 msgid "No Groups Available in any repository" msgstr "Inga grupper tillgängliga i nÃ¥got förrÃ¥d" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Hämtar pakettaggsmetadata" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Lägger till taggar frÃ¥n förrÃ¥det: %s" #: ../yum/__init__.py:866 #, 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:944 msgid "Importing additional filelist information" msgstr "Importerar ytterligare fillisteinformation" #: ../yum/__init__.py:958 #, 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:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Det finns oavslutade transaktioner kvar. Du kan överväga att köra yum-" "complete-transaction först för att avsluta dem." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Letar efter överblivna beroenden som inte behövs" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Skyddade multilibversioner: %s ≠ %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Försöker ta bort â€%sâ€, som är skyddad" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Paket hoppades över pÃ¥ grund av beroendeproblem:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s frÃ¥n %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Hittade %d redan befintliga tidigare rpmdb-problem, â€yum checkâ€-utdata " "följer:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Varning: RPMDB ändrad utanför yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "saknade behov" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "installerade konflikter" #: ../yum/__init__.py:1525 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:1535 msgid "Transaction couldn't start:" msgstr "Transaktionen kunde inte starta:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Kunde inte köra transaktionen." #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s skulle tagits bort men det gjordes inte!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Kunde inte öppna lÃ¥set %s: %s " #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, 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:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Kunde inte skapa lÃ¥s av %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Paketet matchar inte den avsedda hämtningen. Förslag: kör yum " "--enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Kunde inte utföra kontrollsummering" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Paketet stämmer inte med kontrollsumman" #: ../yum/__init__.py:1946 #, 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:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "använder lokal kopia av %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Otillräckligt utrymme i hämtningskatalogen %s\n" " * fritt %s\n" " * behovet %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Huvudet är inte komplett." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Huvudet finns inte i den lokala cachen och endast-cache-läget är aktiverat." " Kan inte hämta %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Den publika nyckeln för %s är inte installerad" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problem att öppna paketet %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Den publika nyckeln för %s är inte betrodd" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Paket %s är inte signerat" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Det gÃ¥r inte att ta bort %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s borttaget" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Det gÃ¥r inte att ta bort %s-filen %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s-filen %s borttagen" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s-filer borttagna" #: ../yum/__init__.py:2327 #, 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:2333 #, 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:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() kommer att försvinna i en framtida version av Yum." " Använd searchGenerator() istället. \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Söker i %d paket" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "söker i paketet %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "söker i filposter" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "söker i tillhandahÃ¥llandeposter" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Inga gruppdata är tillgängliga för de konfigurerade förrÃ¥den" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Det finns ingen grupp med namnet %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "paket %s noterades inte i gruppen %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Lägger till paket %s frÃ¥n grupp %s" #: ../yum/__init__.py:2891 #, 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:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Varning: Gruppen %s har inte nÃ¥gra paket." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "Gruppen %s har %u villkorliga paket, vilka kan komma att installeras." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Pakettupel %s fanns inte i paketsäcken" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Pakettupel %s fanns inte i rpmdb" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Ogiltig versionsflagga frÃ¥n: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Inga paket hittades för %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Paketobjektet var inte en paketobjektinstans" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Inget angivet att installeras" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, 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:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Ingen matchning för argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Paket %s installerat och inte tillgänligt" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Inga paket tillgängliga att installera" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paket: %s - redan i transaktionsmängden" #: ../yum/__init__.py:3550 #, 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:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Paket %s fasas ut av %s, men paketet som fasar ut tillhandahÃ¥ller inte " "behoven" #: ../yum/__init__.py:3558 #, 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:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Paket %s är redan installerat och senaste version" #: ../yum/__init__.py:3580 #, 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:3684 msgid "Updating Everything" msgstr "Uppdaterar allt" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, 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:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, 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:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Uppdaterar inte paket som fasas ut: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, 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:3982 msgid "No package matched to remove" msgstr "Inget paket att tas bort matchar" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Hoppar över den körande kärnan: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Ta bort %s frÃ¥n transaktionen" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Det gÃ¥r inte att öppna: %s. Hoppar över." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Undersöker %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Det gÃ¥r inte att lokalinstallera deltarpm: %s. Hoppar över." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, 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:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Det gÃ¥r inte att installera paketet %s. Det är fasas ut av det installerade" " paketet %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Paket %s är inte installerat, kan inte uppdatera det. Kör yum install för " "att installera det istället." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Paketet %s.%s är inte installerat, kan inte uppdatera det. Kör yum install " "för att installera det istället." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Utesluter %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Noterar %s för installation" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Noterar %s som en uppdatering av %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: uppdaterar inte ett installerat paket." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Det gÃ¥r inte att öppna filen: %s. Hoppar över." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Problem att ominstallera: inget paket matchades att tas bort" #: ../yum/__init__.py:4203 #, 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:4311 msgid "No package(s) available to downgrade" msgstr "Inga paket tillgängliga att nedgradera" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Paket %s tillÃ¥ts multipla installationer, hoppar över" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ingen matchning för tillgängliga paket: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Endast uppgradering tillgängliga för paket: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Misslyckades nedgradera: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Hämtar nyckel frÃ¥n %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Hämtandet av GPG-nyckeln misslyckades: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" "GPG-nyckelsignatur pÃ¥ nyckeln %s har inte nÃ¥gon matchande CA-nyckel för " "förrÃ¥det: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "GPG-nyckelsignatur verifierad mot CA-nycklar" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Ogiltig GPG-nyckel frÃ¥n %s: %s" #: ../yum/__init__.py:4576 #, 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:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Importerar %s-nyckel 0x%s:\n" " Användarid: %s\n" " Paket : %s (%s)\n" " FrÃ¥n : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Importerar %s-nyckel 0x%s:\n" " Användarid: â€%sâ€\n" " FrÃ¥n : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG-nyckel vid %s (0x%s) är redan installerad" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Nyckelimport misslyckades (kod %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Nyckelimport lyckades" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Installerade inte nÃ¥gra nycklar" #: ../yum/__init__.py:4680 #, 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-nycklarna uppräknade för förrÃ¥det \"%s\" är redan installerade men de är 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:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Import av nycklar hjälpte inte, fel nycklar?" #: ../yum/__init__.py:4713 #, 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:4754 msgid "Key import failed" msgstr "Nyckelimport misslyckades" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Installerade inte nÃ¥gra nycklar för förrÃ¥det %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "GPG-nycklarna uppräknade för förrÃ¥det \"%s\" är redan installerade men de är inte korrekta.\n" "Kontrollera att rätt nyckel-URL:ar är konfigurerade för detta förrÃ¥d." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Kan inte hitta en lämplig spegel." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Fel uppstod när paket hämtades." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Rapportera gärna detta fel till %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Transaktionstestfel: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Kunde inte sätta cache-katalog: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" "Beroenden inte upplösta. Kommer inte att spara ouppklarad transaktion." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Kunde inte spara transaktionsfilen %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Kunde inte komma Ã¥t/läsa sparad transaktion %s: %s " #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "rpmdb-version stämmer inte med sparad transaktionsversion, " #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " bortser ifrÃ¥n, som begärt." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " avbryter." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "det gÃ¥r inte att hitta tsflags eller sÃ¥ är tsflags inte ett heltal." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Hittade txmbr i okänt aktuellt tillstÃ¥nd: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Kunde inte hitta txmbr: %s i tillstÃ¥nd %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Kunde inte hitta txmbr: %s frÃ¥n ursprung: %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "Transaktionsmedlemmar, -relationer saknas eller ts har ändrats," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " bortser ifrÃ¥n, som begärt. Du mÃ¥ste göra redepsolve!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Inlästa insticksmoduler: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ingen insticksmodul matchar: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Läser inte in insticksmodulen \"%s\" eftersom den är inaktiverad" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Insticksmodulen \"%s\" kan inte importeras" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Insticksmodulen \"%s\" specificerare inte nödvändig API-version" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Insticksmodulen \"%s\" kräver API %s. API:er som stöds är %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Läser in insticksmodulen \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "TvÃ¥ eller flera insticksmoduler med namnet \"%s\" finns i sökvägen för " "insticksmoduler" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Konfigurationsfilen %s finns inte" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Kan inte hitta konfigurationsfil för insticksmodulen %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registrering av kommandon stöds inte" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "har ett saknat beroende pÃ¥" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "har installerad konflikt" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s är en dubblett med %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s fasas ut av %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s tillhandahÃ¥ller %s men det kan inte hittas" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Paketerar om" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "Huvudet kan inte öppnas eller matchar inte %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM %s misslyckas med md5-kontroll" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Det gick inte att öppna RPM-databasen för läsning. Kanske den redan " "används?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Fick ett tomt huvud, nÃ¥gonting har gÃ¥tt fel" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Trasigt huvud %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Fel när rpm %s öppnades - fel %s" yum-3.4.3/po/en_GB.po0000664000076400007640000022674311602434452013274 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Bruce Cowan , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: English (United Kingdom) (http://www.transifex.net/projects/p/yum/team/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Updating" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Erasing" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installing" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Obsoleted" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Updated" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Erased" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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:1038 ../output.py:2193 msgid "Removing" msgstr "Removing" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Cleanup" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Command \"%s\" already defined" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Setting up repositories" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Reading repository metadata in from local files" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Config Error: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Options Error: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Installed: %s-%s at %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Built : %s at %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Committed: %s at %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "You need to give some command" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "No such command: %s. Please use %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Disk Requirements:\n" #: ../cli.py:402 #, 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:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Error Summary\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Trying to run the transaction but nothing to do. Exiting." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Exiting on user Command" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Downloading Packages:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Error Downloading Packages:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Running Transaction Check" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ERROR You need to update rpm to handle:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "ERROR with transaction check vs depsolve:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM needs to be updated" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Please report this error in %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Running Transaction Test" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Transaction Check Error:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Transaction Test Succeeded" #: ../cli.py:600 msgid "Running Transaction" msgstr "Running Transaction" #: ../cli.py:630 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:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Maybe you meant: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Package(s) %s%s%s available, but not installed." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "No package %s%s%s available." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Package(s) to install" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nothing to do" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d packages marked for Update" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "No Packages marked for Update" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d packages marked for Distribution Synchronisation" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "No Packages marked for Distribution Synchronisation" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d packages marked for removal" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "No Packages marked for removal" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Package(s) to downgrade" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (from %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Installed package %s%s%s%s not available." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Package(s) to reinstall" #: ../cli.py:960 msgid "No Packages Provided" msgstr "No Packages Provided" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "N/S Matched: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr " Name and summary matches %sonly%s, use \"search all\" for everything." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Full name and summary matches %sonly%s, use \"search all\" for everything." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Matched: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr " Name and summary matches %smostly%s, use \"search all\" for everything." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Warning: No matches found for: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "No Matches found" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "No Package Found for %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Cleaning repos: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Cleaning up Everything" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Cleaning up Headers" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Cleaning up Packages" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Cleaning up xml metadata" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Cleaning up database cache" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Cleaning up expire-cache metadata" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Cleaning up cached rpmdb data" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Cleaning up plugins" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Warning: No groups match: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Installed Groups:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Installed Language Groups:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Available Groups:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "Available Language Groups:" #: ../cli.py:1285 msgid "Done" msgstr "Done" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Warning: Group %s does not exist." #: ../cli.py:1324 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:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d Package(s) to Install" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "No group named %s exists" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "No packages to remove from groups" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d Package(s) to remove" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Package %s is already installed, skipping" #: ../cli.py:1397 #, 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:1423 #, 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:1443 msgid "Plugin Options" msgstr "Plugin Options" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Command line error: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s option requires an argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color takes one of: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot must be an absolute path: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "show this help message and exit" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "be tolerant of errors" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "run entirely from system cache, don't update cache" #: ../cli.py:1652 msgid "config file location" msgstr "config file location" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maximum command wait time" #: ../cli.py:1657 msgid "debugging output level" msgstr "debugging output level" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "show duplicates, in repos, in list/search commands" #: ../cli.py:1663 msgid "error output level" msgstr "error output level" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "debugging output level for rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "quiet operation" #: ../cli.py:1671 msgid "verbose operation" msgstr "verbose operation" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "answer yes for all questions" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "show Yum version and exit" #: ../cli.py:1676 msgid "set install root" msgstr "set install root" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "enable one or more repositories (wildcards allowed)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "disable one or more repositories (wildcards allowed)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "exclude package(s) by name or glob" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "disable exclude from main, for a repo or for everything" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "enable obsoletes processing during updates" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "disable Yum plugins" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "disable gpg signature checking" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "disable plugins by name" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "enable plugins by name" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "skip packages with depsolving problems" #: ../cli.py:1706 msgid "control whether color is used" msgstr "control whether colour is used" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "set value of $releasever in yum config and repo files" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "set arbitrary config and repo options" #: ../output.py:307 msgid "Jan" msgstr "Jan" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Apr" #: ../output.py:307 msgid "May" msgstr "May" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Aug" #: ../output.py:308 msgid "Sep" msgstr "Sep" #: ../output.py:308 msgid "Oct" msgstr "Oct" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Dec" #: ../output.py:318 msgid "Trying other mirror." msgstr "Trying other mirror." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Name : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arch : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoch : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Version : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Release : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Size : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "From repo : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Committer : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Committime : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Buildtime : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Install time: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Installed by: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Changed by : %s" #: ../output.py:612 msgid "Summary : " msgstr "Summary : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licence : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Description : " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "yes" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "no" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Is this ok [y/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Group: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Group-Id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Description: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Language: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Mandatory Packages:" #: ../output.py:791 msgid " Default Packages:" msgstr " Default Packages:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Optional Packages:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Conditional Packages:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "package: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " No dependencies for this package" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " dependency: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Unsatisfied dependency" #: ../output.py:901 msgid "Matched from:" msgstr "Matched from:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licence : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Filename : %s" #: ../output.py:923 msgid "Other : " msgstr "Other : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "There was an error calculating total download size" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Total size: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Total download size: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Installed size: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "There was an error calculating installed size" #: ../output.py:1039 msgid "Reinstalling" msgstr "Reinstalling" #: ../output.py:1040 msgid "Downgrading" msgstr "Downgrading" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Installing for dependencies" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Updating for dependencies" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Removing for dependencies" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Skipped (dependency problems)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Not installed" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Package" #: ../output.py:1075 msgid "Arch" msgstr "Arch" #: ../output.py:1076 msgid "Version" msgstr "Version" #: ../output.py:1076 msgid "Repository" msgstr "Repository" #: ../output.py:1077 msgid "Size" msgstr "Size" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " replacing %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Transaction Summary\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Install %5.5s Package(s)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Upgrade %5.5s Package(s)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Remove %5.5s Package(s)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Reinstall %5.5s Package(s)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Downgrade %5.5s Package(s)\n" #: ../output.py:1165 msgid "Removed" msgstr "Removed" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Dependency Removed" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Dependency Installed" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Dependency Updated" #: ../output.py:1172 msgid "Replaced" msgstr "Replaced" #: ../output.py:1173 msgid "Failed" msgstr "Failed" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, 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:1282 msgid "user interrupt" msgstr "user interrupt" #: ../output.py:1300 msgid "Total" msgstr "Total" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "System" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Skipping merged transaction %d to %d, as it overlaps" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "No transactions" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Bad transaction IDs, or package(s), given" #: ../output.py:1484 msgid "Command line" msgstr "Command line" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Login user" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Date and time" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Action(s)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Altered" #: ../output.py:1538 msgid "No transaction ID given" msgstr "No transaction ID given" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Bad transaction ID given" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Not found given transaction ID" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Found more than one transaction ID!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "No transaction ID, or package, given" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Downgraded" #: ../output.py:1688 msgid "Older" msgstr "Older" #: ../output.py:1688 msgid "Newer" msgstr "Newer" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Transaction ID :" #: ../output.py:1728 msgid "Begin time :" msgstr "Begin time :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Begin rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u seconds)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minutes)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u hours)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u days)" #: ../output.py:1756 msgid "End time :" msgstr "End time :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "End rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "User :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Return-Code :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Aborted" #: ../output.py:1773 msgid "Failures:" msgstr "Failures:" #: ../output.py:1777 msgid "Failure:" msgstr "Failure:" #: ../output.py:1779 msgid "Success" msgstr "Success" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Command Line :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Additional non-default information stored: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transaction performed with:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Packages Altered:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Packages Skipped:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb Problems:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scriptlet output:" #: ../output.py:1831 msgid "Errors:" msgstr "Errors:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Install" #: ../output.py:1839 msgid "Dep-Install" msgstr "Dep-Install" #: ../output.py:1841 msgid "Obsoleting" msgstr "Obsoleting" #: ../output.py:1842 msgid "Erase" msgstr "Erase" #: ../output.py:1843 msgid "Reinstall" msgstr "Reinstall" #: ../output.py:1844 msgid "Downgrade" msgstr "Downgrade" #: ../output.py:1846 msgid "Update" msgstr "Update" #: ../output.py:1909 msgid "Time" msgstr "Time" #: ../output.py:1935 msgid "Last day" msgstr "Last day" #: ../output.py:1936 msgid "Last week" msgstr "Last week" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Last 2 weeks" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Last 3 months" #: ../output.py:1939 msgid "Last 6 months" msgstr "Last 6 months" #: ../output.py:1940 msgid "Last year" msgstr "Last year" #: ../output.py:1941 msgid "Over a year ago" msgstr "Over a year ago" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "No Transaction %s found" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Transaction ID:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Available additional history information:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: No additional data found by this name" #: ../output.py:2106 msgid "installed" msgstr "installed" #: ../output.py:2107 msgid "an update" msgstr "an update" #: ../output.py:2108 msgid "erased" msgstr "erased" #: ../output.py:2109 msgid "reinstalled" msgstr "reinstalled" #: ../output.py:2110 msgid "a downgrade" msgstr "a downgrade" #: ../output.py:2111 msgid "obsoleting" msgstr "obsoleting" #: ../output.py:2112 msgid "updated" msgstr "updated" #: ../output.py:2113 msgid "obsoleted" msgstr "obsoleted" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Package %s.%s %s:%s-%s will be %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Running transaction check" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Restarting Dependency Resolution with new changes." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Finished Dependency Resolution" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Processing Dependency: %s for package: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Keeping package: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Unresolved Dependency: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Package: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Requires: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Not found" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Updated By" #: ../output.py:2197 msgid "Downgraded By" msgstr "Downgraded By" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Obsoleted By" #: ../output.py:2216 msgid "Available" msgstr "Available" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Processing Conflict: %s conflicts %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Populating transaction set with selected packages. Please wait." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Downloading header for %s to pack into transaction set." #: ../utils.py:99 msgid "Running" msgstr "Running" #: ../utils.py:100 msgid "Sleeping" msgstr "Sleeping" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Uninterruptible" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Traced/Stopped" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Unknown" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " The other application is: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " The other application is: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memory : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Started: %s - %s ago" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " State : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Exiting on user cancel" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Exiting on Broken Pipe" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "PluginExit Error: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum Error: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Error: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " You could try using --skip-broken to work around the problem" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " You could try running: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Unknown Error(s): Exit Code: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Dependencies Resolved" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Complete!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Mini usage:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "You need to be root to perform this command." #: ../yumcommands.py:59 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:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, 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:86 msgid "Error: Need an item to match" msgstr "Error: Need an item to match" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Error: Need a group or list of groups" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Error: clean requires an option: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Error: invalid clean argument: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "No argument to shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Filename passed to shell: %s" #: ../yumcommands.py:125 #, 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:131 msgid "Error: more than one file given as argument to shell." msgstr "Error: more than one file given as argument to shell." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "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 " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PACKAGE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Install a package or packages on your system" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Setting up Install Process" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PACKAGE...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Update a package or packages on your system" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Setting up Update Process" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Synchronise installed packages to the latest available versions" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Setting up Distribution Synchronisation Process" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Display details about a package or group of packages" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Installed Packages" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Available Packages" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Extra Packages" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Updated Packages" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Obsoleting Packages" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Recently Added Packages" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "No matching Packages to list" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "List a package or groups of packages" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Remove a package or packages from your system" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Setting up Remove Process" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Setting up Group Process" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "No Groups on which to run command" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "List available package groups" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Install the packages in a group on your system" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Remove the packages in a group from your system" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Display details about a package group" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Generate the metadata cache" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Making cache files for all metadata files." #: ../yumcommands.py:557 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:578 msgid "Metadata Cache Created" msgstr "Metadata Cache Created" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Remove cached data" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Find what package provides the given value" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Check for available package updates" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Search package details for the given string" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Searching Packages: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Update packages taking obsoletes into account" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Setting up Upgrade Process" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Install a local RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Setting up Local Package Process" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Determine which package provides the given dependency" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Searching Packages for Dependency:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Run an interactive yum shell" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Setting up Yum Shell" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "List a package's dependencies" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Finding dependencies: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Display the configured software repositories" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "enabled" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "disabled" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Repo-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Repo-name : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Repo-status : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Repo-revision: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-tags : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tags: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo-updated : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Repo-pkgs : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Repo-size : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Repo-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Updated : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Repo-mirrors : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Never (last: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Instant (last: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s second(s) (last: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Repo-expire : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-exclude : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-include : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Repo-excluded: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "repo id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "repo name" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Display a helpful usage message" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "No help available for %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "aliases: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Setting up Reinstall Process" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "reinstall a package" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Setting up Downgrade Process" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "downgrade a package" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Display a version for the machine and/or available repos." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum version groups:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Group :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Packages:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installed:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Group-Installed:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Available:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Group-Available:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Display, or use, the transaction history" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Invalid history sub-command, use: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "You don't have access to the history DB." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Check for problems in the rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "load a saved transaction from filename" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "No saved transaction file specified." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "loading transaction from %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Transaction loaded from %s with %s members" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Yum checks failed: %s" #: ../yummain.py:114 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:120 msgid "Can't create lock file; exiting" msgstr "Can't create lock file; exiting" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Resolving Dependencies" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "Your transaction was saved, rerun it with: yum load-transaction %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Exiting on user cancel." #: ../yum/depsolve.py:84 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:99 msgid "Setting up TransactionSets before config class is up" msgstr "Setting up TransactionSets before config class is up" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Invalid tsflag in config file: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Searching pkgSack for dep: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Member: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s converted to install" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Adding Package %s in mode %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Removing Package %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s requires: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s requires %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Needed Require has already been looked up, cheating" #: ../yum/depsolve.py:349 #, 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:357 #, python-format msgid "Potential Provider: %s" msgstr "Potential Provider: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Mode is %s for provider of %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Mode for pkg providing %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Trying to update %s to resolve dep" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "No update paths found for %s. Failure!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s package requiring %s marked as erase" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: Obsoleting %s with %s to resolve dep." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Updating %s to resolve dep." #: ../yum/depsolve.py:440 #, 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:471 #, 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:513 #, 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:529 #, 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:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Potential resolving package %s has newer instance installed." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s already in ts, skipping this one" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Marking %s as update for %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Marking %s as install for %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Success - empty transaction" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Restarting Loop" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Dependency Process ending" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Success - deps resolved" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Checking deps for %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "looking for %s as a requirement of %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Running compare_providers() for %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "better arch in po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s obsoletes %s" #: ../yum/depsolve.py:1310 #, 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:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "common sourcerpm %s and %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "base package %s is installed for %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "common prefix of %s between %s and %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "requires minimal: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Winner: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Loser(with %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Best Order: %s" #: ../yum/__init__.py:234 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:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Repository %r: Error parsing config: %s" #: ../yum/__init__.py:488 #, 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:526 msgid "plugins already initialised" msgstr "plugins already initialised" #: ../yum/__init__.py:533 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:544 msgid "Reading Local RPMDB" msgstr "Reading Local RPMDB" #: ../yum/__init__.py:567 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:630 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:660 msgid "Setting up Package Sacks" msgstr "Setting up Package Sacks" #: ../yum/__init__.py:705 #, 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:706 msgid "therefore this repo cannot be reset.\n" msgstr "therefore this repo cannot be reset.\n" #: ../yum/__init__.py:711 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:723 msgid "Building updates object" msgstr "Building updates object" #: ../yum/__init__.py:765 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:790 msgid "Getting group metadata" msgstr "Getting group metadata" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Adding group file from repository: %s" #: ../yum/__init__.py:827 #, 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:833 msgid "No Groups Available in any repository" msgstr "No Groups Available in any repository" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Getting pkgtags metadata" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Adding tags from repository: %s" #: ../yum/__init__.py:866 #, 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:944 msgid "Importing additional filelist information" msgstr "Importing additional filelist information" #: ../yum/__init__.py:958 #, 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:966 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." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Finding unneeded leftover dependencies" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Protected multilib versions: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Trying to remove \"%s\", which is protected" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Packages skipped because of dependency problems:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s from %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Warning: RPMDB altered outside of yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "missing requires" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "installed conflict" #: ../yum/__init__.py:1525 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:1535 msgid "Transaction couldn't start:" msgstr "Transaction couldn't start:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Could not run transaction." #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s was supposed to be removed but is not!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Could not open lock %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, 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:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Could not create lock at %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Could not perform checksum" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Package does not match checksum" #: ../yum/__init__.py:1946 #, 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:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "using local copy of %s" #: ../yum/__init__.py:1991 #, 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:2052 msgid "Header is not complete." msgstr "Header is not complete." #: ../yum/__init__.py:2089 #, 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:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Public key for %s is not installed" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problem opening package %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Public key for %s is not trusted" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Package %s is not signed" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Cannot remove %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s removed" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Cannot remove %s file %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s file %s removed" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s files removed" #: ../yum/__init__.py:2327 #, 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:2333 #, 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:2632 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:2675 #, python-format msgid "Searching %d packages" msgstr "Searching %d packages" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "searching package %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "searching in file entries" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "searching in provides entries" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "No group data available for configured repositories" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "No Group named %s exists" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "package %s was not marked in group %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Adding package %s from group %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "No package named %s available to be installed" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Warning: Group %s does not have any packages." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "Group %s does have %u conditional packages, which may get installed." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, 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:3022 #, 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:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Invalid version flag from: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "No Package found for %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Package Object was not a package object instance" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Nothing specified to install" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, 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:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "No Match for argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Package %s installed and not available" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "No package(s) available to install" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Package: %s - already in transaction set" #: ../yum/__init__.py:3550 #, 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:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" #: ../yum/__init__.py:3558 #, 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:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Package %s already installed and latest version" #: ../yum/__init__.py:3580 #, 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:3684 msgid "Updating Everything" msgstr "Updating Everything" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, 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:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, 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:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Not Updating Package that is obsoleted: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, 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:3982 msgid "No package matched to remove" msgstr "No package matched to remove" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Skipping the running kernel: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Removing %s from the transaction" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Cannot open: %s. Skipping." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Examining %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Cannot localinstall deltarpm: %s. Skipping." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, 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:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "Cannot install package %s. It is obsoleted by installed package %s" #: ../yum/__init__.py:4059 #, 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:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Excluding %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Marking %s to be installed" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Marking %s as an update to %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: does not update installed package." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Cannot open file: %s. Skipping." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Problem in reinstall: no package matched to remove" #: ../yum/__init__.py:4203 #, 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:4311 msgid "No package(s) available to downgrade" msgstr "No package(s) available to downgrade" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Package %s is allowed multiple installs, skipping" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "No Match for available package: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Only Upgrade available on package: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Failed to downgrade: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Retrieving key from %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG key retrieval failed: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "GPG key signature on key %s does not matvch CA Key for repo: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "GPG key signature verified against CA Key(s)" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Invalid GPG Key from %s: %s" #: ../yum/__init__.py:4576 #, 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:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Importing %s key 0x%s:\n" "Userid : %s\n" "Package: %s (%s)\n" "From : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Importing %s key 0x%s:\n" "Userid : \"%s\"\n" "From : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG key at %s (0x%s) is already installed" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Key import failed (code %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Key imported successfully" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Didn't install any keys" #: ../yum/__init__.py:4680 #, 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:4689 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:4713 #, 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:4754 msgid "Key import failed" msgstr "Key import failed" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Didn't install any keys for repo %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "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." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Unable to find a suitable mirror." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Errors were encountered while downloading packages." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Please report this error at %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Test Transaction Errors: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Could not set cachedir: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "Dependencies not solved. Will not save unresolved transaction." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Could not save transaction file %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Could not access/read saved transaction %s : %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "rpmdb ver mismatched saved transaction version, " #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " ignoring, as requested." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " aborting." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "cannot find tsflags or tsflags not integer." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Found txmbr in unknown current state: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Could not find txmbr: %s in state %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Could not find txmbr: %s from origin: %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "Transaction members, relations are missing or ts has been modified," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " ignoring, as requested. You must redepsolve!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Loaded plugins: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "No plugin match for: %s" #: ../yum/plugins.py:259 #, 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:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Plugin \"%s\" can't be imported" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Plugin \"%s\" doesn't specify required API version" #: ../yum/plugins.py:283 #, 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:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Loading \"%s\" plugin" #: ../yum/plugins.py:323 #, 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:343 #, 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:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Unable to find configuration file for plugin %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registration of commands not supported" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "has missing requires of" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "has installed conflicts" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s is a duplicate with %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s is obsoleted by %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s provides %s but it cannot be found" #: ../yum/rpmtrans.py:80 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" yum-3.4.3/po/ms.po0000664000076400007640000016134311602434452012733 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ms\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "" #: ../callback.py:130 msgid "No header - huh?" msgstr "Tiada pengepala - huh?" #: ../callback.py:168 msgid "Repackage" msgstr "" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "ya" #: ../output.py:685 msgid "n" msgstr "t" #: ../output.py:685 msgid "no" msgstr "tidak" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Adakah ini ok [y/T]:" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "Versi" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "Saiz" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Tidak dapat melaksanakan checksum" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "menggunakan salinan tempatan bagi %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Pengepala tidak lengkap." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Masalah membuka pakej %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Pakej %s tidak ditandatangan" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Tidak dapat membuang %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Tidak dapat membuang %s fail %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s fail %s dibuang" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s fail dibuang" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Mencari %d pakej" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "mencari pakej %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Tiada Pakej dijumpai untuk %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Mengemaskini Semuanya" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Memeriksa %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Menanda %s untuk dipasang" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Tidak dapat membuka fail: %s. Melangkau." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Kekunci berjaya diimport" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Ralat Ujian Transaksi:" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "Pengepala Rosak %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Ralat membuka rpm %s - ralat %s" yum-3.4.3/po/id_ID.po0000664000076400007640000017343311602434452013267 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Teguh Dwicaksana , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id_ID\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Memutakhirkan" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Menghapus" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Memasang" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Usang" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Termutakhirkan" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Dihapus" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Terpasang" #: ../callback.py:130 msgid "No header - huh?" msgstr "Tidak ada header - huh?" #: ../callback.py:168 msgid "Repackage" msgstr "Memaket Ulang" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Dihapus: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Menghapus" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Pembersihan" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Menyiapkan repositori" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Membaca metadata repositori dari berkas lokal" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Kesalahan Konfigurasi: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Kesalahan Opsi: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Terpasang: %s-%s di %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "Anda perlu memberi beberapa perintah" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Persyaratan Disk:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Setidaknya dibutuhkan ruang %dMB lagi di sistem berkas %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Mencoba untuk menjalankan transaksi tetapi tidak ada yang harus dikerjakan. " "Keluar." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Mengunduh Paket-paket:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Kesalahan Saat Mengunduh Paket-paket:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "GALAT Anda perlu memperbarui rpm untuk menangani:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM perlu dimutakhirkan" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Laporkan kesalahan di %s ini" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Menjalankan Uji Transaksi" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Kesalahan Pengujian Transaksi:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Uji Transaksi Berhasil" #: ../cli.py:600 msgid "Running Transaction" msgstr "Menjalankan Transaksi" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Mungkin maksud Anda: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Paket %s%s%s tersedia, tapi tidak terpasang." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Tidak ada paket %s%s%s yang tersedia." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paket yang akan dipasang" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Tak ada tindakan yang dilakukan" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paket telah ditandai untuk dimutakhirkan" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Tidak ada Paket yang ditandai untuk dimutakhirkan" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paket ditandai untuk dihapus" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Tidak ada paket yang ditandai untuk dihapus" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (dari %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Paket %s%s%s%s yang terpasang tidak tersedia." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paket yang akan dipasang ulang" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Tidak ada paket yang tersedia" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Cocok: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Peringatan: Tidak ada yang cocok: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Tidak ada yang cocok" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Tidak ada paket yang ditemukan untuk %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Membersihkan repo: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Membersihkan Semuanya" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Membersihkan Header" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Membersihkan Paket-paket" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Membersihkan metadata xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Membersihkan singgahan basis data" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Membersihkan metadata singgahan yang kadaluarsa" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Membersihkan data rpmdb yang disinggahkan" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Membersihkan pengaya" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Grup yang terpasang:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Grup yang Tersedia:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Selesai" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Peringatan: Grup %s tidak ada." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d Paket yang akan dipasang" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Tidak ada nama grup %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Tidak ada paket yang akan dihapus dari grup" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d Paket akan dihapus" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Paket %s sudah diinstal, lewati" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opsi Pengaya" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Galat di perintah baris: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: opsi %s membutuhkan argumen" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "tampilkan pesan bantuan ini dan keluar" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "toleran terhadap kesalahan" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" "jalankan sepenuhnya dari singgahan sistem, jangan memutakhirkan persinggahan" #: ../cli.py:1652 msgid "config file location" msgstr "lokasi berkas konfigurasi" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "waktu tunggu perintah maksimum" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "operasi senyap" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "jawab ya untuk semua pertanyaan" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "tampilkan versi Yum dan keluar" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" "aktifkan satu atau lebih repositori (diperbolehkan menggunakan wildcard)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" "nonaktifkan satu atau lebih repositori (diperbolehkan menggunakan wildcard)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "nonaktifkan pengaya Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "nonaktifkan pemeriksaan tanda tangan gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "nonaktifkan pengaya berdasarkan nama" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "aktifkan pengaya berdasarkan nama" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "tentukan nilai $releasever di berkas konfigurasi yum dan repo" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "Jan" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Apr" #: ../output.py:307 msgid "May" msgstr "Mei" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Agu" #: ../output.py:308 msgid "Sep" msgstr "Sep" #: ../output.py:308 msgid "Oct" msgstr "Okt" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Des" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nama : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arst : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Versi : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Rilis : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Ukuran : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repo : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Dari repo : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Waktu pemasangan: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Dipasang oleh: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Diubah oleh : %s" #: ../output.py:612 msgid "Summary : " msgstr "Ringkasan : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Lisensi : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Keterangan : " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "ya" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "no" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grup: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " ID-Grup: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Deskripsi: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Paket-paket Wajib:" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr " Paket-paket Opsional:" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paket: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Lisensi : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Nama berkas : %s" #: ../output.py:923 msgid "Other : " msgstr "Lainnya : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Ada kesalahan saat menghitung ukuran total pengunduhan" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Ukuran total: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Total ukuran pengunduhan: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Ukuran terpasang: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Ada kesalahan saat menghitung ukuran terpasang" #: ../output.py:1039 msgid "Reinstalling" msgstr "Memasang ulang" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Tidak terpasang" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paket" #: ../output.py:1075 msgid "Arch" msgstr "Arst" #: ../output.py:1076 msgid "Version" msgstr "Versi" #: ../output.py:1076 msgid "Repository" msgstr "Repositori" #: ../output.py:1077 msgid "Size" msgstr "Ukuran" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Ringkasan Transaksi\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Pasang %5.5s Paket\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Hapus %5.5s Paket\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Pasang Ulang %5.5s Paket\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "Dihapus" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Ketergantungan Dihapus" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Ketergantungan Dipasang" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Ketergantungan Dimutakhirkan" #: ../output.py:1172 msgid "Replaced" msgstr "Diganti" #: ../output.py:1173 msgid "Failed" msgstr "Gagal" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dua" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "diinterupsi pengguna" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Sistem" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Tanggal dan waktu" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Tindakan" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Diubah" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Tak ada ID transaksi yang diberikan" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Tidak ditemukan ID transaksi yang diberikan" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Ditemukan lebih dari satu ID transaksi!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Tidak ada ID transaksi, atau paket, yang diberikan" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "Lebih Lama" #: ../output.py:1688 msgid "Newer" msgstr "Lebih Baru" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "ID Transaksi:" #: ../output.py:1728 msgid "Begin time :" msgstr "Waktu mulai :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "Waktu selesai :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Pengguna :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Kode-Balikan :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Dibatalkan" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "Kegagalan:" #: ../output.py:1779 msgid "Success" msgstr "Sukses" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Perintah Baris :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transaksi dilakukan dengan:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Paket Diubah:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Paket Dilewati:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Permasalahan rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Keluaran scriptlet:" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Instal" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "Hapus" #: ../output.py:1843 msgid "Reinstall" msgstr "Instal Ulang" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "Mutakhirkan" #: ../output.py:1909 msgid "Time" msgstr "Waktu" #: ../output.py:1935 msgid "Last day" msgstr "Hari terakhir" #: ../output.py:1936 msgid "Last week" msgstr "Minggu lalu" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "2 minggu terakhir" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "3 bulan terakhir" #: ../output.py:1939 msgid "Last 6 months" msgstr "6 bulan terakhir" #: ../output.py:1940 msgid "Last year" msgstr "Setahun terakhir" #: ../output.py:1941 msgid "Over a year ago" msgstr "Lebih dari setahun yang lalu" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "terpasang" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "dihapus" #: ../output.py:2109 msgid "reinstalled" msgstr "dipasang ulang" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "termutakhirkan" #: ../output.py:2113 msgid "obsoleted" msgstr "usang" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Menjalankan pemeriksaan transaksi" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paket: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Dibutuhkan: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Tidak ditemukan" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Dimutakhirkan Oleh" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "Tersedia" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "Berjalan" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Tak dapat diinterupsi" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Tak diketahui" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Aplikasi lainnya adalah: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Aplikasi lainnya adalah: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memori : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Dijalankan: %s - %s yang lalu" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " State : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Selesai!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Nama berkas telah diteruskan ke shell: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Tidak ada repo yang aktif.\n" "Jalankan \"yum repolist all\" untuk melihat repo apa yang Anda miliki.\n" "Anda dapat mengaktifkan repo dengan yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKET..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Memasang paket di sistem Anda" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Menyiapkan Proses Pemasangan" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKET...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Memutakhirkan paket-paket di sistem Anda" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Menyiapkan Proses Pemutakhiran" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Paket Terpasang" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Paket Tersedia" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Paket Tambahan" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Paket Termutakhirkan" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Paket Usang" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Paket yang baru ditambah" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Tidak ada Paket yang cocok dalam daftar" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Daftar paket atau kelompok paket" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Hapus paket dari sistem Anda" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Menyiapkan Proses Penghapusan" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Menyiapkan Proses Grup" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instal RPM lokal" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Menyiapkan Proses Paket Lokal" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Pencarian Paket untuk Ketergantungan:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Jalankan shell yum interaktif" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Menyiapkan Shell Yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Daftar ketergantungan paket" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Mencari ketergantungan: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Tampilkan repositori perangkat lunak yang terkonfigurasi" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "aktif" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "nonaktif" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "ID-Repo : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Nama-Repo : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Status-Repo : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Revisi-Repo: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Tag-Repo : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Ukuran-Repo : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Tak Pernah (terakhir: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Menampilkan versi mesin dan/atau repo yang tersedia." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Grup versi Yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Grup :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Paket:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Terpasang:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Grup-Terpasang:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Tersedia" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Grup-Tersedia:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Tampilkan, atau gunakan, riwayat transaksi" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Anda tidak memiliki akses ke DB riwayat" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Memeriksa masalah di rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Anggota: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s telah dikonversi untuk instalasi" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Menghapus Paket: %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s membutuhkan: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s membutuhkan %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/ur.po0000664000076400007640000016034311602434452012741 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Urdu (http://www.transifex.net/projects/p/yum/team/ur/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ur\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/fr.po0000664000076400007640000024425611602434452012730 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Kévin Raymond , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: French (http://www.transifex.net/projects/p/yum/team/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Mise à jour " #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Suppression " #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installation de" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Obsolète " #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Mis à jour " #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Supprimés " #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Installé " #: ../callback.py:130 msgid "No header - huh?" msgstr "Aucun en-tête - heu ?" #: ../callback.py:168 msgid "Repackage" msgstr "Réempaquetage " #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Erreur : statut de sortie invalide : %s pour %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Supprimé : %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Suppression " #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Nettoyage " #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Commande « %s » déjà définie" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Configuration des dépôts" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Lecture des méta données du dépôt depuis les fichiers locaux" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Erreur de configuration : %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Erreur d'options : %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Installés : %s-%s à %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Compilé : %s à %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Commité : %s à %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Vous devez spécifier des commandes" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Aucune commande telle que : %s. Veuillez utiliser %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Besoins en espace disque :\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Au moins %d Mio requis sur le système de fichiers %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Résumé des erreurs\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Tentative d'exécution de la transaction mais aucune tâche à effectuer. " "Sortie." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Arrêt à la demande de l'utilisateur" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Téléchargement des paquets :" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Erreur durant le téléchargement des paquets :\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Test de la transaction en cours" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ERREUR Vous devez mettre à jour rpm pour manipuler :" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" "ERREUR lors de la vérification de la transaction avec les dépendances :" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM doit être mis à jour" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Veuillez reporter cette erreur dans %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Lancement de la transaction de test" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Erreur du contrôle de transaction :\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Transaction de test réussie" #: ../cli.py:600 msgid "Running Transaction" msgstr "Lancement de la transaction" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Refus de l'importation automatique des clés lors d'une exécution inattendue.\n" "Utilisez l'option « -y » pour passer outre." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Vouliez-vous dire : " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Le ou les paquets %s%s%s sont disponibles, mais non installés." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Aucun paquet %s%s%s disponible." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paquets à installer" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Rien à faire" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paquets marqués pour mise à jour" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Aucun paquet marqué pour mise à jour" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d paquets marqués pour la synchronisation de la distribution" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Aucun paquet marqué pour la synchronisation de la distribution" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paquets marqués pour suppression" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Aucun paquet marqué pour suppression" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paquets à rétrograder" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "(depuis %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Paquets installés %s%s%s%s indisponibles." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paquets à réinstaller" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Pas de paquet fourni" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "Non spécifié, correspond à : %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Correspondance dans les noms et résumés %suniquement%s, utilisez « search " "all » pour une recherche complète." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Correspondance complète dans les noms et résumés %suniquement%s, utilisez " "« search all » pour une recherche complète." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr " Marqués : %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Correspondance dans les noms et résumés %sprincipalementt%s, utilisez « " "search all » pour une recherche complète." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Attention : aucune correspondance trouvée pour : %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Aucune correspondance trouvée" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Aucun paquet trouvé pour %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Nettoyage des dépôts : " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Nettoyage complet" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Nettoyage des en-têtes" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Nettoyage des paquets" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Nettoyage des méta données xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Nettoyage du cache de la base de données" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Nettoyage des méta données expirées dans le cache" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Nettoyage des données du cache de RPMDB" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Nettoyage des modules complémentaires" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Attention : aucun groupe ne correspond : %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Groupes installés :" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Groupes de langues installés :" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Groupes disponibles :" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "Groupes de langues disponibles :" #: ../cli.py:1285 msgid "Done" msgstr "Effectué" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Attention : le groupe %s n'existe pas." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Aucun paquet disponible pour installation ou mise à jour dans les groupes " "demandés" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d paquet(s) à installer" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Aucun groupe nommé %s n'existe" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Aucun paquet du groupe à supprimer" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d paquet(s) à supprimer" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Le paquet %s est déjà installé, omission" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Rejet du paquet non comparable %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Pas d'autre %s installé, ajout à la liste pour installation potentielle" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Options du plugin" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Erreur sur la ligne de commande : %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s : l'option %s requiert un argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color accepte les paramètres : auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--installroot doit correspondre à un chemin absolu : %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "affiche ce message d'aide et quitte" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "tolère les erreurs" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "exécute entièrement depuis le cache, sans le mettre à jour" #: ../cli.py:1652 msgid "config file location" msgstr "emplacement du fichier de configuration" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "temps d'attente maximum de la commande" #: ../cli.py:1657 msgid "debugging output level" msgstr "niveau de déboguage pour la sortie" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "affiche les doublons dans les dépôts, pour les commandes list/search" #: ../cli.py:1663 msgid "error output level" msgstr "niveau d'erreur pour la sortie" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "niveau de déboguage pour rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "opération silencieuse" #: ../cli.py:1671 msgid "verbose operation" msgstr "opération verbeuse" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "répondre oui à toutes les questions" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "affiche la version de Yum et quitte" #: ../cli.py:1676 msgid "set install root" msgstr "définit la racine d'installation" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "active un ou plusieurs dépôts (jokers autorisés)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "désactive un ou plusieurs dépôts (jokers autorisés)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" "exclut des paquets par leur nom (le caractère * générique peut être utilisé)" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" "désactive l'exclusion pour le dépôt principal, pour un dépôt particulier ou " "pour tout" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "active le traitement des paquets obsolètes pendant les mises à jour" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "désactive les modules complémentaires Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "désactive la vérification de clé gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "désactive les modules complémentaires par nom" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "active les modules complémentaires par nom" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "omettre les paquets qui ont des problèmes de dépendances" #: ../cli.py:1706 msgid "control whether color is used" msgstr "contrôle l'utilisation de la couleur" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "configuration de la valeur de $releasever dans le fichier de configuration " "de yum et dans les fichiers des dépôts" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "réinitialise la configuration ainsi que les options des dépôts" #: ../output.py:307 msgid "Jan" msgstr "Jan" #: ../output.py:307 msgid "Feb" msgstr "Fév" #: ../output.py:307 msgid "Mar" msgstr "Mars" #: ../output.py:307 msgid "Apr" msgstr "Avr" #: ../output.py:307 msgid "May" msgstr "Mai" #: ../output.py:307 msgid "Jun" msgstr "Juin" #: ../output.py:308 msgid "Jul" msgstr "Jui" #: ../output.py:308 msgid "Aug" msgstr "Août" #: ../output.py:308 msgid "Sep" msgstr "Sep" #: ../output.py:308 msgid "Oct" msgstr "Oct" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Déc" #: ../output.py:318 msgid "Trying other mirror." msgstr "Essai d'un autre miroir." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nom : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Architecture : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Date : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Version : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Révision : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Taille : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Dépôt  : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Depuis le dépôt : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Auteur : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Date de validation : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Date de compilation : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Date d'installation : %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Installés par : %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Modifié par  : %s" #: ../output.py:612 msgid "Summary : " msgstr "Résumé  : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licence  : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Description : " #: ../output.py:684 msgid "y" msgstr "o" #: ../output.py:684 msgid "yes" msgstr "oui" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "non" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Est-ce correct [o/N] : " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Groupe : %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Id du g : %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Description : %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Langue : %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Paquets mandataires :" #: ../output.py:791 msgid " Default Packages:" msgstr " Paquets par défaut :" #: ../output.py:792 msgid " Optional Packages:" msgstr " Paquets optionnels :" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Paquets conditionnels :" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paquet : %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Pas de dépendances pour ce paquet" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " dépendance : %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Dépendance non satisfaite" #: ../output.py:901 msgid "Matched from:" msgstr "Correspondance depuis :" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licence  : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Nom de fichier  : %s" #: ../output.py:923 msgid "Other : " msgstr "Autre  :" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" "Une erreur est survenue pendant le calcul de la taille totale des " "téléchargements" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Taille totale : %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Taille totale des téléchargements : %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Taille d'installation : %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" "Une erreur est survenue pendant le calcul de la taille des données " "installées" #: ../output.py:1039 msgid "Reinstalling" msgstr "Réinstallation " #: ../output.py:1040 msgid "Downgrading" msgstr "Retour à la version précédente" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Installation pour dépendances " #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Mise à jour pour dépendances " #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Suppression pour dépendances " #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Omis (problèmes de dépendances) " #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Non installé" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paquet" #: ../output.py:1075 msgid "Arch" msgstr "Architecture" #: ../output.py:1076 msgid "Version" msgstr "Version" #: ../output.py:1076 msgid "Repository" msgstr "Dépôt" #: ../output.py:1077 msgid "Size" msgstr "Taille " #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " remplacement de %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Résumé de la transaction\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Installation de %5.5s paquets\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Mise à jour de %5.5s paquets\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Suppression de %5.5s paquets\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Réinstallation de %5.5s paquets\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Retour à une version antérieur de %5.5s paquets\n" #: ../output.py:1165 msgid "Removed" msgstr "Supprimés " #: ../output.py:1166 msgid "Dependency Removed" msgstr "Dépendances supprimées " #: ../output.py:1168 msgid "Dependency Installed" msgstr "Dépendances installées " #: ../output.py:1170 msgid "Dependency Updated" msgstr "Dépendances mises à jour " #: ../output.py:1172 msgid "Replaced" msgstr "Remplacés " #: ../output.py:1173 msgid "Failed" msgstr "Échec" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "deux" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" "Téléchargement courant annulé, demandez de nouveau l%sinterruption (crtl-c)%s dans %s%s%s secondes\n" "pour quitter.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "interruption par l'utilisateur" #: ../output.py:1300 msgid "Total" msgstr "Total" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Système" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" "Omission des transactions regroupées de %d à %d, puisqu'elles se superposent" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Pas de transaction" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Le ou les paquets ou identifiants de transaction fournis sont erronés" #: ../output.py:1484 msgid "Command line" msgstr "Ligne de commande" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Identifiant utilisateur" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "Id" #: ../output.py:1489 msgid "Date and time" msgstr "Date et heure" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Action" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Modifié" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Aucun identifiant de transaction n'a été fourni" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "L'identifiant de transaction fourni est erroné" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "L'identifiant de transaction fourni est introuvable" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Plus d'un identifiant de transaction a été trouvé !" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Le paquet ou l'identifiant de transaction fourni sont absents" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Rétrogradé" #: ../output.py:1688 msgid "Older" msgstr "Plus ancien" #: ../output.py:1688 msgid "Newer" msgstr "Plus récent" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Identifiant de transaction :" #: ../output.py:1728 msgid "Begin time :" msgstr "Temps de début :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Début de RPMDB :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u secondes)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minutes)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u heures)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u jours)" #: ../output.py:1756 msgid "End time :" msgstr "Temps de fin :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Fin de RPMDB :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Utilisateur :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Code retour :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Avorté" #: ../output.py:1773 msgid "Failures:" msgstr "Échecs :" #: ../output.py:1777 msgid "Failure:" msgstr "Échec :" #: ../output.py:1779 msgid "Success" msgstr "Réussi" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Ligne de commande :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Informations supplémentaires stockées : %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transaction effectuée avec :" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Paquets modifiés :" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Paquets ignorés :" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problèmes RPMDB :" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Sortie du scriplet :" #: ../output.py:1831 msgid "Errors:" msgstr "Erreurs :" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Installation " #: ../output.py:1839 msgid "Dep-Install" msgstr "Installation déps." #: ../output.py:1841 msgid "Obsoleting" msgstr "Obsolète" #: ../output.py:1842 msgid "Erase" msgstr "Supprimé" #: ../output.py:1843 msgid "Reinstall" msgstr "Réinstallation" #: ../output.py:1844 msgid "Downgrade" msgstr "Retour à la version précédente" #: ../output.py:1846 msgid "Update" msgstr "Mise à jour" #: ../output.py:1909 msgid "Time" msgstr "Heure" #: ../output.py:1935 msgid "Last day" msgstr "Dernier jour" #: ../output.py:1936 msgid "Last week" msgstr "Semaine dernière" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Deux dernières semaines" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Trois derniers mois" #: ../output.py:1939 msgid "Last 6 months" msgstr "Six derniers mois" #: ../output.py:1940 msgid "Last year" msgstr "L'année dernière" #: ../output.py:1941 msgid "Over a year ago" msgstr "Il y a plus d'un an" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Aucune transaction %s n'a été trouvée" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Identifiant de transaction :" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Informations additionnelles disponibles dans l'historique :" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s : aucune donnée supplémentaire trouvée avec ce nom" #: ../output.py:2106 msgid "installed" msgstr "installé" #: ../output.py:2107 msgid "an update" msgstr "la mise à jour" #: ../output.py:2108 msgid "erased" msgstr "effacé" #: ../output.py:2109 msgid "reinstalled" msgstr "réinstallé" #: ../output.py:2110 msgid "a downgrade" msgstr "une rétrogradation" #: ../output.py:2111 msgid "obsoleting" msgstr "obsolète" #: ../output.py:2112 msgid "updated" msgstr "mis à jour" #: ../output.py:2113 msgid "obsoleted" msgstr "obsolète" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Le paquet %s.%s %s:%s-%s sera %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Lancement de la transaction de test" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" "--> Redémarrage de la résolution des dépendances avec les nouveaux " "changements." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Résolution des dépendances terminée" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Traitement de la dépendance : %s pour le paquet : %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Conservation du paquet : %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Dépendance non résolue : %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paquet : %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Requiert : %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s : %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Non trouvé" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Mis à jour par" #: ../output.py:2197 msgid "Downgraded By" msgstr "Rétrogradé par" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Rendu obsolète par" #: ../output.py:2216 msgid "Available" msgstr "Disponible" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Traitement du conflit : %s entre en conflit avec %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Peuplement du jeu de transaction avec les paquets sélectionnés. Merci de" " patienter." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "--> Téléchargement de l'en-tête de %s pour l'ajouter à la transaction." #: ../utils.py:99 msgid "Running" msgstr "Exécution" #: ../utils.py:100 msgid "Sleeping" msgstr "Mise en attente" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Impossible d'interrompre" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Tracé/Stoppé" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Inconnu" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " L'autre application est : PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " L'autre application est : %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Mémoire : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Débuté : il y a %s - %s" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " État : %s, pid : %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Sortie sur annulation par l'utilisateur" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Sortie suite à une redirection cassée" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Une autre application verrouille actuellement l'utilisation de yum ; " "fermeture en cours conformément à la configuration de exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Erreur de PluginExit : %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Erreur de yum : %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Erreur : %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" " Vous pouvez essayer d'utiliser --skip-broken pour contourner le problème" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Vous pouvez essayer d'exécuter : rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Erreur inconnue : code de sortie %d :" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Dépendances résolues" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Terminé !" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Usage minimal :\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Vous devez être super-utilisateur pour lancer cette commande." #: ../yumcommands.py:59 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" "Vous avez activé la vérification des paquets via clés GPG. C'est une bonne chose. \n" "Cependant, vous n'avez aucune clé GPG publique installée. Vous devez télécharger\n" "et installer les clés pour les paquets que vous souhaitez installer..\n" "Vous pouvez le faire en lançant la commande :\n" " rpm --import public.gpg.key\n" "\n" "\n" "Alternativement, vous pouvez spécifier l'URL de la clé que vous souhaitez utiliser\n" "pour un dépôt dans l'option 'gpgkey' dans une section du dépôt et yum\n" "l'installera pour vous.\n" "\n" "Pour plus de renseignements, contactez le fournisseur de paquets de votre distribution.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Erreur : il faut passer une liste de paquets à %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Erreur : un élément de correspondance est requis" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Erreur : un groupe ou une liste de groupes est requise" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Erreur : clean requiert une option : %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Erreur : argument invalide pour clean : %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Pas d'options à passer au terminal" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Nom de fichier passé au terminal : %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Le fichier %s passé en argument au shell n'existe pas." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Erreur : plus d'un fichier passé en argument au shell." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Aucun dépôt n'est activé.\n" " Exécutez « yum repolist all » pour consulter la liste des dépôts installés.\n" " Vous pouvez activer des dépôts avec la commande yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAQUETAGE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Installe un ou plusieurs paquets sur votre système" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Configuration du processus d'installation" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAQUET…]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Met à jour un ou plusieurs paquets sur votre système" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Configuration du processus de mise à jour" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "Synchronise les paquets installés vers leurs versions les plus récentes" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Configuration du processus de synchronisation de la distribution" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Affiche les détails d'un paquet ou d'un groupe de paquets" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Paquets installés" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Paquets disponibles" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Paquets supplémentaires" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Paquets mis à jour" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Obsolescence des paquets" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Paquets récemment ajoutés" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Aucun paquet correspondant à lister" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Liste un paquet ou un groupe de paquets" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Supprime un ou plusieurs paquets de votre système" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Configuration du processus de suppression" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Configuration du processus de gestion des groupes" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Aucun groupe sur lequel lancer la commande" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Liste les groupes de paquets disponibles" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Installe les paquets d'un groupe sur votre système" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Supprime les paquets d'un groupe de votre système" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Affiche des détails sur un groupe de paquets" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Génère le cache des méta données" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" "Création des fichiers de cache pour tous les fichiers de méta données." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "Cela peut prendre du temps en fonction de la vitesse de cet ordinateur" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Cache des méta données créé" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Supprime les données en cache" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Cherche à quel paquet correspond la valeur donnée" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Cherche les mises à jour de paquets disponibles" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Cherche les détails du paquet en fonction de la chaîne entrée" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Recherche dans les paquets :" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Met à jour en tenant compte des paquets obsolètes" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Configuration du processus de mise à jour" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Installe un RPM local" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Configuration du processus de paquets locaux" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Détermine quel paquet fournit une dépendance donnée" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Recherche dans les paquets pour la dépendance :" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Lance un shell yum interactif" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Configuration du shell Yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Liste les dépendances d'un paquet" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Recherche de dépendances :" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Affiche les dépôts logiciels configurés" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "activé" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "désactivé" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Id du dépôt : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Nom du dépôt : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "État du dépôt : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Révision du dépôt :" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Tags du dépôt :" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tags : " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Mise à jour du dépôt :" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Paquets du dépôt  : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Taille du dépôt  : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Baseurl du dépôt : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Méta-lien du dépôt :" #: ../yumcommands.py:981 msgid " Updated : " msgstr " Mis à jour : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Miroirs du dépôt :" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Jamais (dernier : %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Instant (dernier : %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s secondes (en date du : %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Expiration du dépôt : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Exclus du dépôt :" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Inclus au dépôt :" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Exclus du dépôt : " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "id du dépôt" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "statut" #: ../yumcommands.py:1062 msgid "repo name" msgstr "nom du dépôt" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Affiche un message d'aide à l'utilisation" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Aucune aide disponible pour %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "alias : " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias : " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Configuration du processus de réinstallation" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "Réinstaller un paquet" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Configuration du processus de retour à une version antérieure" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Restaure un paquet à une version antérieure" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Affiche une version de la machine ou des dépôts disponibles" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "Groupes de version de yum :" #: ../yumcommands.py:1265 msgid " Group :" msgstr "Groupe :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "Paquets :" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installés :" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Groupe installé :" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Disponible :" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Groupes disponibles :" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Affiche ou utilise l'historique de transaction" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Sous-commande de l'historique invalide, utilisez : %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Vous n'avez pas accès à la base de données de l'historique." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Recherche des problèmes dans RPMDB" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "charge une transaction sauvegardée à partir d'un nom de fichier" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Aucun fichier de sauvegarde de transaction spécifié." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "Chargement de la transaction à partir de %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Transaction chargée à partir de %s avec %s membres" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Échec du vérificateur de Yum : %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Une autre application verrouille actuellement l'utilisation de yum ; attente" " de déverrouillage..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "Impossible de créer le fichier verrou, arrêt" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Résolution des dépendances" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" "Votre transaction a été sauvegardée, relancez-là avec : yum load-transaction" " %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Sortie sur annulation par l'utilisateur." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Mise en place de l'ensemble des transactions avant configuration" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "tsflag invalide dans le fichier de configuration : %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Recherche dans le regroupement pour la dépendance : %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Membre : %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s converti pour installation" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Ajout du paquet %s en mode %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Suppression du paquet %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s requiert : %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s requiert %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Le prérequis a déjà été trouvé, on triche" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Le prérequis n'est pas un nom de paquet. Recherche de : %s " #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Fournisseur potentiel : %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Le mode est %s pour le fournisseur de %s : %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Mode pour le paquet qui fournit %s : %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Éssai de mise à jour de %s pour résoudre les dépendances" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Pas de chemin de mise à jour pour %s. Échec !" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO : le paquet %s requiert la suppression de %s" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO : Obsolescence de %s avec %s pour résoudre les dépendances." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO : Mise à jour de %s pour la résolution des dépendances." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" "Impossible de trouver un chemin de mise à jour pour la dépendance de : %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Correspondance %s trouvée pour %s " #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s est dans les paquets fournis mais est déjà installé, suppression." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" "ts contient une version plus récente du paquet %s susceptible de résoudre la" " dépendance." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" "Le paquet susceptible de résoudre la dépedence %s est déjà installé dans une" " version plus récente." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s déjà dans ts, omission de celui-ci" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO : Sélection de %s pour mise à jour de %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO : Sélection de %s pour installation de %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Succès - transaction vide" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Re-démarrage de la boucle" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Finalisation du processus de dépendance" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Succès - dépendances résolues" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Recherche des dépendances pour %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "recherche de %s comme prérequis de %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Lancement de compare_providers() pour %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "meilleure architecture dans l'objet paquet %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s rend obsolète %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "architecture %s comparée à %s sur %s\n" " Gagnant : %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "rpm source commun pour %s et %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "le paquet de base %s est installé pour %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "préfixe commun %s entre %s et %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "requiert au minimum : %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Vainqueur : %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Perdant (avec %d) : %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Meilleur ordre : %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Dépôt %r : erreur lors de l'analyse de la configuration : %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" "Il manque le nom du dépôt %r dans la configuration, utilisation de " "l'identifiant" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "modules complémentaires déjà initialisés" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Lecture de la base de données RPM locale" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Configuration du groupe de paquets" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "une méthode _resetSack est manquante pour l'objet dépôt du dépôt %s\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "en conséquence ce dépôt ne peut être réinitialisé.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Construction de l'objet de mises à jour" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() sera supprimé dans une future version de Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Obtention des méta données du groupe" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Ajout du ficher de groupes depuis le dépôt : %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Échec d'ajout du fichier de groupes pour le dépôt : %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Aucun groupe disponible dans les dépôts" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Obtention des méta-données de pkgtags" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Ajout des tags depuis le dépôt : %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Échec d'ajout des tags du paquet pour le dépôt : %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Import d'informations additionnelles sur la liste de fichiers" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Le programme %s%s%s est présent dans le paquet yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Il reste des transactions non terminées. Vous devriez envisager de lancer de" " yum-complete-transaction pour les terminer." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Recherche de dépendances inutiles" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" "protection contre les différentes versions de bibliothèques : %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Tentative de retrait de « %s », qui est protégé" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Paquets omis en raison de problèmes de dépendances :" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s depuis %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** %d problèmes RPMDB préexistants trouvés, la sortie de « yum check » est " "la suivante :" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" "Avertissement : RPMDB a été modifiée par une autre application que yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "dépendances manquantes" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "conflit installé" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Attention : scriptlet ou autres erreurs non fatales pendant la transaction." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "La transaction n'a pas pu démarrer :" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Impossible d'exécuter la transaction." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Échec de la suppression du fichier de transaction %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s est censé être installé, mais ne l'est pas !" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s est censé être supprimé, mais ne l'est pas !" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Impossible de libérer le verrou %s : %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Impossible de vérifier si le PID %s est actif" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Verrou %s existant : une autre copie est lancée avec le pid %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Impossible de créer le verrou sur %s : %s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Le paquet ne correspond pas au téléchargement attendu. Suggestion : exécutez" " yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ne peut procéder à la vérification des sommes de contrôle" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Le paquet ne correspond pas à sa somme de contrôle" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "Le paquet ne correspond pas à la somme de contrôle mais le cache est activé " "pour %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "utilisation de la copie locale de %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Espace disque insuffisant dans le dossier de téléchargement %s\n" " * libre %s\n" " * nécessaire %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "L'en-tête est incomplet." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "L'en-tête n'est pas dans le cache et le mode cache uniquement est activé. " "Impossible de télécharger %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "La clé publique pour %s n'est pas installée" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problème à l'ouverture du paquet %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "La clé publique pour %s n'est pas de confiance" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Le paquet %s n'est pas signé" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Impossible de supprimer %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s supprimé" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Impossible de supprimer depuis %s le fichier %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "fichier de %s : %s supprimé" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d fichiers de %s supprimés" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Plus d'une correspondance identique dans le regroupement pour %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Rien ne correspond à %s.%s %s:%s-%s dans la mise à jour" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() sera supprimé dans une future version de Yum." " Utilisez searchGenerator() à la place. \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Recherche de %d paquets" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "recherche du paquet %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "recherche dans les entrées de fichiers" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "recherche dans les entrées de correspondance" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Aucune donnée sur les groupes disponible pour les dépôts configurés" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Aucun groupe nommé %s n'existe" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "le paquet %s n'a pas été marqué dans le groupe %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Ajout du paquet %s pour le groupe %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Aucun paquet nommé %s n'est disponible pour installation" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Attention : le goupe %s ne contient aucun paquets." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" "Le groupe %s contient %u paquets conditionnels, qui sont susceptibles d'être" " installés." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Impossible de trouver le tuple de paquet %s dans le regroupement" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Impossible de trouver le tuple de paquet %s dans RPMDB" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Version de drapeau invalide : %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Aucun paquet trouvé pour %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "L'objet paquet n'était pas une instance correcte d'objet paquet" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Rien de spécifié pour installation" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" "Recherche de correspondance virtuelle ou de correspondance fichier pour %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Aucune correspondance pour l'argument : %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Le paquet %s est installé et n'est pas disponible" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Aucun paquet disponible pour installation" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paquet : %s - déjà dans le jeu de transaction" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Le paquet %s est rendu obsolète par %s qui est déjà installé" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Le paquet %s est rendu obsolète par %s, mais l'obsolescence n'affecte pas " "les dépendances" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "Le paquet %s est rendu obsolète par %s, tentative d'installation de %s à la " "place" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Le paquet %s est déjà installé dans sa dernière version" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Le paquet qui correspond à %s est déjà installé. Recherche d'une mise à " "jour." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Mise à jour complète" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" "Pas de mise à jour des paquets qui ont déjà été rendus obsolètes : %s.%s " "%s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Paquet déjà rendu obsolète : %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Pas de mise à jour du paquet qui est obsolète : %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" "Pas de mise à jour des paquets qui ont déjà été mis à jour : %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Aucun paquet sélectionné pour suppression" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Omission du noyau en cours d'exécution : %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Suppression de %s de la transaction" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Impossible d'ouvrir : %s. Omission." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Examen de %s : %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Impossible d'exécuter localinstall sur le deltarpm : %s. Omission." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Impossible d'ajouter le paquet %s à la transaction. Architecture " "incompatible : %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Impossible d'installer le paquet %s. Il est rendu obsolète par le paquet %s " "installé" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Le paquet %s n'est pas installé, il est impossible de le mettre à jour. " "Lancez plutôt yum install pour l'installer." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Le paquet %s.%s n'est pas installé, il ne peut pas être mis à jour. Utilisez" " « yum install » pour l'installer." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Exclusion de %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Sélection de %s pour installation " #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Sélection de %s pour mise à jour de %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s : ne met pas à jour le paquet installé." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Impossible d'ouvrir le fichier : %s. Omission." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Problème dans la réinstallation : aucun paquet correspondant à supprimer" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Problème dans la réinstallation : aucun paquet %s correspondant à installer" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Aucun paquet disponible pour retour à une version antérieure" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Le paquet %s autorise des installations multiples, omission" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Aucune correspondance pour le paquet disponible : %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Mise à jour uniquement disponible pour le paquet : %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Échec lors du lors du retour à la version précédente : %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Récupération de la clé à partir de %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Échec de la récupération de la clé GPG : " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "La signature de la clé GPG %s ne correspond pas à celle du dépôt : %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "Signature de clé GPG vérifiée avec un certificat d'autorité de clés." #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Clé GPG invalide depuis %s :%s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Échec d'analyse de la clé GPG : la clé n'a pas de valeur %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Importation de la clé %s 0x%s :\n" " Utilisateur : %s\n" " Paquet       : %s (%s)\n" " À partir de : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Importation de la clé %s 0x%s :\n" " Utilisateur : « %s »\n" " À partir de : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "La clé GPG %s (0x%s) est déjà installée" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "L'import de la clé à échoué (code %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "La clé a été importée avec succès" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Toutes les clés n'ont pas été installées" #: ../yum/__init__.py:4680 #, 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 "" "Les clés GPG listées pour le dépôt « %s » sont déjà installées mais sont incorrectes pour ce paquet.\n" "Vérifiez que les URL des clés pour ce dépôt soient correctes." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" "L'import de la ou des clés n'a pas résolu le problème, clés incorrectes ?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "La clé GPG %s (0x%s) est déjà importée" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "L'import de la clé à échoué" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Aucune clé n'a été installée pour le dépôt %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Les clés GPG listées pour le dépôt « %s » sont déjà installées mais sont incorrectes.\n" "Vérifiez que les URL des clés pour ce dépôt soient correctes." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Impossible de trouver un miroir adapté." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Des erreurs ont été rencontrée durant le téléchargement des paquets." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Veuillez reporter cette erreur dans %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Erreurs de la transaction de test : " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Impossible de configurer cachedir : %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" "Les dépendances ne sont pas résolues. Les transactions non résolues ne " "seront pas sauvegardées." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Impossible de sauvegarder le fichier de transaction %s : %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "Impossible de lire le fichier de transaction sauvegardé %s : %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" "La version de rpmdb ne correspond pas à la version de la transaction " "enregistrée," #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " ignoré, comme spécifié." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " arrêt." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "impossible de trouver de tsflags, ou alors ce n'est pas un entier." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "txmbr est dans un état inconnu : %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Impossible de trouver txmbr : %s dans l'état %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Impossible de trouver txmbr : %s depuis : %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" "Des composants ou relations de la transactions sont manquant, ou la " "transaction a été modifiée," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" " ignoré, comme spécifié. Vous devez résoudre les dépendances à nouveau !" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Modules complémentaires chargés : " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Aucun plugin correspondant pour : %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Le module complémentaire « %s » est désactivé, il ne sera pas chargé" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "L'extension « %s » ne peut pas être importé" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" "Le module complémentaire « %s » ne spécifie pas la version de l'API requise" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" "Le module complémentaire « %s » requiert l'API %s. L'API supportée est %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Chargement du module complémentaire « %s »" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "Au moins deux modules complémentaires avec le même nom « %s » existent dans " "le chemin de recherche des modules complémentaires" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Fichier de configuration %s non trouvé" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" "Impossible de trouver le fichier de configuration pour le module " "complémentaire %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "enregistrement de commandes non supporté" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "a des dépendances manquantes de" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "des conflits sont installés" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s est un doublon de %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s est rendu obsolète par %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s fournit %s mais est introuvable" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Réempaquetage" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "L'en-tête ne peut être ouvert ou ne correspond pas à %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "Échec du contrôle MD5 pour le RPM %s" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Impossible de lire la base de données RPM. Peut être est-elle déjà utilisée " "?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Un en-tête vide a été reçu, quelque chose s'est mal passé" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "En-tête endommagée %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Erreur d'ouverture du rpm %s - erreur %s" yum-3.4.3/po/uk.po0000664000076400007640000027727311602434452012745 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Yuri Chornoivan , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Ukrainian (http://www.transifex.net/projects/p/yum/team/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "ОновленнÑ" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "ВилученнÑ" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Ð’ÑтановленнÑ" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Став заÑтарілим" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Оновлено" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Вилучено" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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:1038 ../output.py:2193 msgid "Removing" msgstr "ВилученнÑ" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð¸Ñка" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Команду «%s» вже визначено" #: ../cli.py:127 msgid "Setting up repositories" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñховищ" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… Ñховища з локальних файлів" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Помилка налаштуваннÑ: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Помилка у параметрах: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Ð’Ñтановлено: %s-%s у %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Зібрано : %s о %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " ÐадіÑлано : %s о %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Вам Ñлід вказати ÑкуÑÑŒ команду" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Команди %s не виÑвлено. Будь лаÑка, ÑкориÑтайтеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Вимоги до диÑка:\n" #: ../cli.py:402 #, 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:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Резюме помилок\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ— за умови порожнього ÑпиÑку операцій. Завершуємо " "роботу." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ за бажаннÑм кориÑтувача" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Ð—Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð²:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð²:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ операції" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ПОМИЛКÐ. Вам Ñлід оновити rpm Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "ПОМИЛКРперевірки дії під Ñ‡Ð°Ñ Ñ€Ð¾Ð·Ð²â€™ÑÐ·Ð°Ð½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM Ñлід оновити" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Будь лаÑка, повідомте про цю помилку за адреÑою %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "ЗапуÑкаєтьÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð· перевірки" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Помилка під Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ операції:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Операцію з перевірки уÑпішно завершено" #: ../cli.py:600 msgid "Running Transaction" msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ—" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Ðвтоматичне Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ñ–Ð² під Ñ‡Ð°Ñ Ð½ÐµÐºÐµÑ€Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ запуÑку заборонено.\n" "СкаÑувати заборону можна параметром «-y»." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Можливо, ви хотіли викориÑтати: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "ДоÑтупні невÑтановлені пакунки %s%s%s." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Пакунок %s%s%s недоÑтупний." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Пакунки, Ñкі Ñлід вÑтановити" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Ðічого виконувати" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d пакунків позначено Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Ð”Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ðµ позначено жодного пакунка" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d пакунків позначено Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñинхронізації диÑтрибутивів" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" "Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñинхронізації диÑтрибутивів не позначено жодного пакунка" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d пакунків позначено Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Ð”Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð½Ðµ позначено жодного пакунка" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Пакунки, верÑÑ–ÑŽ Ñких Ñлід знизити" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (з %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Ð’Ñтановлений пакунок %s%s%s%s недоÑтупний." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Пакунки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²ÑтановленнÑ" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Ðе надано жодного пакунка" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "ВідповідніÑть Ð/Р: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Виконано пошук %sлише%s за назвою Ñ– резюме, ÑкориÑтайтеÑÑ Â«search all» длÑ" " пошуку у вÑÑ–Ñ… даних" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Виконано пошук %sлише%s за повною назвою Ñ– резюме, ÑкориÑтайтеÑÑ Â«search " "all» Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у вÑÑ–Ñ… даних" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Відповідники: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Виконано пошук %sпереважно%s за назвою Ñ– резюме, ÑкориÑтайтеÑÑ Â«search " "all» Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у вÑÑ–Ñ… даних" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "ПопередженнÑ: відповідників %s не знайдено" #: ../cli.py:1109 msgid "No Matches found" msgstr "Ðе знайдено відповідників" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Пакунків з %s не знайдено" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Ð¡Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів Ñховищ: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð²Ñього" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð²" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð¹Ð²Ð¸Ñ… пакунків" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ бази даних" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… заÑтарілого кешу" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐµÑˆÐ¾Ð²Ð°Ð½Ð¸Ñ… даних rpmdb" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÑ–Ð²" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "ПопередженнÑ: відповідних груп не знайдено: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Ð’Ñтановлені групи:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Ð’Ñтановлені групи мов:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "ÐаÑвні групи:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "ДоÑтупні групи мов:" #: ../cli.py:1285 msgid "Done" msgstr "Виконано" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "ПопередженнÑ: групи з назвою %s не Ñ–Ñнує." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "У жодній з вказаних груп немає пакунків Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ оновленнÑ" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d пакунків Ð´Ð»Ñ Ð²ÑтановленнÑ" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Групи з назвою %s не Ñ–Ñнує" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Пакунків Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð· груп не знайдено" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d пакунків Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Пакунок %s вже вÑтановлено, пропуÑкаємо" #: ../cli.py:1397 #, 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:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "Ðе вÑтановлено інших %s, додаємо до ÑпиÑку потенційного вÑтановленнÑ" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Параметри додатка" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Помилка Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s потрібен аргумент" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color повинен мати один з аргументів: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "Ðргументом --installroot має бути абÑолютний шлÑÑ…: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "показати це довідкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– завершити роботу" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "ігнорувати помилки" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "запуÑтити на оÑнові ÑиÑтемного кешу, не оновлювати кеш" #: ../cli.py:1652 msgid "config file location" msgstr "Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° налаштувань" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "макÑимальний Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" #: ../cli.py:1657 msgid "debugging output level" msgstr "рівень докладноÑті діагноÑтичних повідомлень" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "показати дублікати у Ñховищах та командах побудови ÑпиÑку та пошуку" #: ../cli.py:1663 msgid "error output level" msgstr "рівень докладноÑті повідомлень про помилки" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "рівень докладноÑті діагноÑтичних повідомлень rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "обробка без Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ" #: ../cli.py:1671 msgid "verbose operation" msgstr "докладна обробка команд" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "відповіÑти «так» на вÑÑ– питаннÑ" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "показати верÑÑ–ÑŽ Yum Ñ– завершити роботу" #: ../cli.py:1676 msgid "set install root" msgstr "вÑтановити кореневий каталог вÑтановленнÑ" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" "увімкнути одне або декілька Ñховищ (можна викориÑтовувати шаблони заміни)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" "вимкнути одне або декілька Ñховищ (можна викориÑтовувати шаблони заміни)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "виключити пакунки за назвою або формальним виразом" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "вимкнути Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð· main Ð´Ð»Ñ Ñховища або на загальному рівні" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "увімкнути обробку заÑтарілих пакунків під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "вимкнути додатки Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "вимкнути перевірку підпиÑів gpg" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "вимкнути додатки за назвою" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "увімкнути додатки за назвою" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "пропуÑтити пакунки з помилками у розв’Ñзанні залежноÑтей" #: ../cli.py:1706 msgid "control whether color is used" msgstr "визначає, чи Ñлід викориÑтовувати розфарбовуваннÑ" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ $releasever у налаштуванні yum config and repo files" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "вÑтановити довільні параметри Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– Ñховищ" #: ../output.py:307 msgid "Jan" msgstr "Ñіч" #: ../output.py:307 msgid "Feb" msgstr "лют" #: ../output.py:307 msgid "Mar" msgstr "бер" #: ../output.py:307 msgid "Apr" msgstr "кві" #: ../output.py:307 msgid "May" msgstr "тра" #: ../output.py:307 msgid "Jun" msgstr "чер" #: ../output.py:308 msgid "Jul" msgstr "лип" #: ../output.py:308 msgid "Aug" msgstr "Ñер" #: ../output.py:308 msgid "Sep" msgstr "вер" #: ../output.py:308 msgid "Oct" msgstr "жов" #: ../output.py:308 msgid "Nov" msgstr "лиÑ" #: ../output.py:308 msgid "Dec" msgstr "гру" #: ../output.py:318 msgid "Trying other mirror." msgstr "Спроба викориÑÑ‚Ð°Ð½Ð½Ñ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ дзеркала." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Ðазва : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Ðрхітектура : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Епоха : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "ВерÑÑ–Ñ : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "ВипуÑк : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Розмір : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Сховище : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Зі Ñховища : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Ðвтор : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Ð§Ð°Ñ Ð²Ð½ÐµÑку : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Ð§Ð°Ñ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Ð’ÑтановленнÑ: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "КориÑтувач : %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Змінено : %s" #: ../output.py:612 msgid "Summary : " msgstr "Резюме : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "ÐдреÑа : %s" #: ../output.py:615 msgid "License : " msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "ÐžÐ¿Ð¸Ñ : " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "так" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "ні" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Виконати дію? [y/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Група: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Ід. групи: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " ОпиÑ: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Мова: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Обов’Ñзкові пакунки:" #: ../output.py:791 msgid " Default Packages:" msgstr " Типові пакунки:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Додаткові пакунки:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Залежні пакунки:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "пакунок: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Пакунок не залежить від інших пакунків" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " залежніÑть: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Ðезадоволена залежніÑть" #: ../output.py:901 msgid "Matched from:" msgstr "ВідповідніÑть:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Ðазва файла : %s" #: ../output.py:923 msgid "Other : " msgstr "Інше : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Під Ñ‡Ð°Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ обÑÑгу Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Загальний обÑÑг: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Загальний обÑÑг звантаженнÑ: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Розмір піÑÐ»Ñ Ð²ÑтановленнÑ: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Під Ñ‡Ð°Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð¾Ð±ÑÑгу піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°" #: ../output.py:1039 msgid "Reinstalling" msgstr "ПеревÑтановленнÑ" #: ../output.py:1040 msgid "Downgrading" msgstr "Ð—Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ—" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Пропущено (проблеми з залежноÑÑ‚Ñми)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Ðе вÑтановлено" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Пакунок" #: ../output.py:1075 msgid "Arch" msgstr "Ðрхітектура" #: ../output.py:1076 msgid "Version" msgstr "ВерÑÑ–Ñ" #: ../output.py:1076 msgid "Repository" msgstr "Сховище" #: ../output.py:1077 msgid "Size" msgstr "Розмір" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " заміна %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Резюме операції\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %5.5s пакунків\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %5.5s пакунків\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ %5.5s пакунків\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "ПеревÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %5.5s пакунків\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Ð—Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— %5.5s пакунків\n" #: ../output.py:1165 msgid "Removed" msgstr "Вилучено" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Вилучено залежноÑті" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Ð’Ñтановлено залежноÑті" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Оновлено залежноÑті" #: ../output.py:1172 msgid "Replaced" msgstr "Замінено" #: ../output.py:1173 msgid "Failed" msgstr "Помилка" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, 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:1282 msgid "user interrupt" msgstr "перервано кориÑтувачем" #: ../output.py:1300 msgid "Total" msgstr "Загалом" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "<не вÑтановлено>" #: ../output.py:1342 msgid "System" msgstr "СиÑтема" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Пропущено операцію з Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %d з %d через Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´Ð°Ð½Ð¸Ñ…" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Ðемає операцій" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Вказано помилкові ідентифікатори операцій або пакунки" #: ../output.py:1484 msgid "Command line" msgstr "Командний Ñ€Ñдок" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "КориÑтувач" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "Ід." #: ../output.py:1489 msgid "Date and time" msgstr "Дата Ñ– чаÑ" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Дії" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Змінено" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Ðе вказано ідентифікатора операції" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Вказано помилковий ідентифікатор операції" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Ðе виÑвлено вказаного ідентифікатора операції" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "ВиÑвлено більше одного ідентифікатора операції!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Ðе вказано ідентифікатора операції або назви пакунка" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Знижено верÑÑ–ÑŽ" #: ../output.py:1688 msgid "Older" msgstr "Старіший" #: ../output.py:1688 msgid "Newer" msgstr "Ðовіший" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Ід. операції :" #: ../output.py:1728 msgid "Begin time :" msgstr "Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Початок rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u Ñекунд)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u хвилин)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u годин)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u днів)" #: ../output.py:1756 msgid "End time :" msgstr "Ð§Ð°Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ rpmdb:" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "КориÑтувач :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Повернутий код :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Перервано" #: ../output.py:1773 msgid "Failures:" msgstr "Помилки:" #: ../output.py:1777 msgid "Failure:" msgstr "Помилка:" #: ../output.py:1779 msgid "Success" msgstr "УÑпіх" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Командний Ñ€Ñдок :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Збережені додаткові нетипові дані : %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Результат Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ—:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Змінено пакунків:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Пропущено пакунків:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Проблеми з rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Виведено Ñкриптом:" #: ../output.py:1831 msgid "Errors:" msgstr "Помилки:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Ð’Ñтановити" #: ../output.py:1839 msgid "Dep-Install" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· залежноÑÑ‚Ñми" #: ../output.py:1841 msgid "Obsoleting" msgstr "Робить заÑтарілим" #: ../output.py:1842 msgid "Erase" msgstr "Стерти" #: ../output.py:1843 msgid "Reinstall" msgstr "ПеревÑтановленнÑ" #: ../output.py:1844 msgid "Downgrade" msgstr "Понизити" #: ../output.py:1846 msgid "Update" msgstr "Оновити" #: ../output.py:1909 msgid "Time" msgstr "ЧаÑ" #: ../output.py:1935 msgid "Last day" msgstr "ПротÑгом днÑ" #: ../output.py:1936 msgid "Last week" msgstr "Попереднього тижнÑ" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Попередні 2 тижні" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Попередні 3 міÑÑці" #: ../output.py:1939 msgid "Last 6 months" msgstr "Попередні 6 міÑÑців" #: ../output.py:1940 msgid "Last year" msgstr "Попередній рік" #: ../output.py:1941 msgid "Over a year ago" msgstr "Понад рік тому" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Ðе знайдено операції %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Ід. операції :" #: ../output.py:1991 msgid "Available additional history information:" msgstr "ДоÑтупні додаткові дані з журналу:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— назви додаткових даних не знайдено" #: ../output.py:2106 msgid "installed" msgstr "вÑтановленнÑ" #: ../output.py:2107 msgid "an update" msgstr "оновленнÑм" #: ../output.py:2108 msgid "erased" msgstr "вилучено" #: ../output.py:2109 msgid "reinstalled" msgstr "перевÑтановлено" #: ../output.py:2110 msgid "a downgrade" msgstr "зниженнÑм верÑÑ–Ñ—" #: ../output.py:2111 msgid "obsoleting" msgstr "робити заÑтарілим" #: ../output.py:2112 msgid "updated" msgstr "оновлено" #: ../output.py:2113 msgid "obsoleted" msgstr "визнано заÑтарілим" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Пакунок %s.%s %s:%s-%s буде %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ операції" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> ПерезапуÑкаєтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей з урахуваннÑм змін." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей завершено" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Обробка залежноÑті: %s Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Збережено пакунок: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Ðерозв'Ñзана залежніÑть: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Пакунок: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Потребує: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Ðе знайдено" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Оновлено" #: ../output.py:2197 msgid "Downgraded By" msgstr "Знижено верÑÑ–ÑŽ" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Став заÑтарілим" #: ../output.py:2216 msgid "Available" msgstr "ÐаÑвні" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Обробка конфлікту: %s конфліктів %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ñ… пакунків до операції. Зачекайте, будь лаÑка." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> У ÑпиÑок операцій звантажуєтьÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº пакунка %s." #: ../utils.py:99 msgid "Running" msgstr "ВиконаннÑ" #: ../utils.py:100 msgid "Sleeping" msgstr "Сплю" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Безперервний" #: ../utils.py:102 msgid "Zombie" msgstr "Зомбі" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "З траÑуваннÑм/зупинкою" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Ðевідомо" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Сторонньою програмою Ñ”: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Сторонньою програмою Ñ”: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Пм’Ñть : %5s RSS (%5sБ VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Почато: %s - %s тому" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Стан : %s, PID: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ на запит кориÑтувача" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ через розрив зв’Ñзку" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Зараз yum блокує ÑÑ‚Ð¾Ñ€Ð¾Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°. Завершуємо роботу відповідно до " "Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Помилка PluginExit: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Помилка Yum: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Помилка: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Щоб обійти проблему, Ñпробуйте ÑкориÑтатиÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --skip-broken" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Спробуйте віддати команду: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Ðевідомі помилки: код виходу: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "ЗалежноÑті розв’Ñзано" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Завершено!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Коротко щодо викориÑтаннÑ:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" "Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— команди вам Ñлід набути прав доÑтупу адмініÑтративного " "кориÑтувача." #: ../yumcommands.py:59 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:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Помилка: %s Ñлід передати ÑпиÑок пакунків" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Помилка: Ñлід вказати ключ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñті" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Помилка: Ñлід вказати групу або ÑпиÑок груп" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Помилка: Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ clean Ñлід вказати %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Помилка: некоректний аргумент clean: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ðе вказано аргумент shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "shell передано назву файла: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Файла %s, переданого Ñк аргумент параметра shell, не знайдено." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Помилка: shell передано Ñк аргументи декілька файлів." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Ðе увімкнено жодного Ñховища.\n" " Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду ÑпиÑку вÑÑ–Ñ… Ñховищ віддайте команду «yum repolist all».\n" " Увімкнути Ñховище можна за допомогою команди yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "ПÐКУÐОК…" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° або пакунків у вашій ÑиÑтемі" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу вÑтановленнÑ" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[ПÐКУÐОК…]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² вашої ÑиÑтеми" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу оновленнÑ" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð²Ñтановлених пакунків з найÑвіжішими доÑтупними верÑÑ–Ñми" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу Ñинхронізації диÑтрибутивів" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Показати подробиці щодо пакунка або групи пакунків" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Ð’Ñтановлені пакунки" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "ДоÑтупних пакунків" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Зайвих пакунків" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Оновлених пакунків" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "ЗаÑтарілих пакунків" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "ОÑтанні додані пакунки" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "У ÑпиÑку не виÑвлено відповідних пакунків" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "СпиÑок пакунків або груп пакунків" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° або пакунків з вашої ÑиÑтемі" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу вилученнÑ" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ груп" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ðе виÑвлено груп, над Ñкими має бути виконано команду" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "СпиÑок можливих груп пакунків" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² групи" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² групи" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Показ подробиць щодо групи пакунків" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ метаданих" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² кешу Ð´Ð»Ñ Ð²ÑÑ–Ñ… файлів метаданих." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "Процедура може тривати доÑить довго, триваліÑть залежить від потужноÑті " "комп’ютера." #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Створено кеш метаданих" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐµÑˆÐ¾Ð²Ð°Ð½Ð¸Ñ… даних" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Пошук пакунка за вказаним ключем" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Перевірка доÑтупноÑті оновлень пакунків" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Пошук подробиць щодо пакунка за вказаним Ñ€Ñдком" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Пошук пакунків: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² з врахуваннÑм заÑÑ‚Ð°Ñ€Ñ–Ð²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð²" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу оновленнÑ" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ пакунка RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ локального пакунка" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°, що міÑтить вказану залежніÑть" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Пошук пакунків Ð´Ð»Ñ Ð·Ð°Ð´Ð¾Ð²Ð¾Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñті:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "ЗапуÑк інтерактивної оболонки yum" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸ Yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Показ ÑпиÑку залежноÑтей пакунків" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Пошук залежноÑтей: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Показ ÑпиÑку увімкнених Ñховищ програмного забезпеченнÑ" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "увімкнено" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "вимкнено" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Ід. Ñховища : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Ðазва Ñховища : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Стан Ñховища : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "ВерÑÑ–Ñ Ñховища: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Мітки Ñховища : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Мітки диÑтрибутива Ñховища: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñховища: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Пакунки Ñховища: " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Розмір Ñховища: " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "ÐдреÑа Ñховища: " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "МетапоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñховища: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Оновлено : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Дзеркала Ñховищ: " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Ðіколи (воÑтаннє: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Ðегайно (лишилоÑÑ: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s Ñекунд (лишилоÑÑ: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Строк дії Ñховища: " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Ð’Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñховища: " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñховища: " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Виключені Ñховища: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "ід. Ñховища" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "Ñтан" #: ../yumcommands.py:1062 msgid "repo name" msgstr "назва Ñховища" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Показати кориÑну підказку щодо викориÑтаннÑ" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Довідки щодо %s не виÑвлено" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "інші назви: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "інша назва: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу перевÑтановленнÑ" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "перевÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу Ð·Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ—" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "Ð·Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— пакунка" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Показ верÑÑ–Ñ— Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ñ— архітектури Ñ–/або ÑпиÑку доÑтупних Ñховищ." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Групи верÑій Yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Група :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Пакунки:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Ð’Ñтановлено:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Ð’Ñтановлені групи:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "ДоÑтупні:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "ДоÑтупні групи:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Показ або викориÑÑ‚Ð°Ð½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ операцій" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Ðекоректна підкоманда журналу, ÑкориÑтайтеÑÑ: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” права доÑтупу до бази даних журналу." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Пошук проблем у rpmdb" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "завантажити збережену операцію з файла з вказаною назвою" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "Ðе вказано файла збережених запиÑів операцій" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ— з %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Операцію завантажено з %s, кількіÑть дій — %s" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Спроба перевірки yum зазнала невдачі: %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Зараз yum блокує ÑÑ‚Ð¾Ñ€Ð¾Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°. Зачекаємо на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ—Ñ— роботи..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "Ðе вдалоÑÑ Ñтворити файл блокуваннÑ. Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸." #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Розв’ÑÐ·Ð°Ð½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" "Ваш Ð·Ð°Ð¿Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ— було збережено, повторити операцію можна за допомогою " "команди: yum load-transaction %s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ на запит кориÑтувача." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð±Ð¾Ñ€Ñ–Ð² операцій до Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ñу налаштувань" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ tsflag у файлі налаштувань: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Пошук pkgSack Ð´Ð»Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñті: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "ЧаÑтина: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s перетворено Ð´Ð»Ñ Ð²ÑтановленнÑ" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° %s у режимі %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s потребує: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s потребує %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Потрібний пакунок вже знайдено, обхідний маневр" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Потрібна залежніÑть задана не Ñка назва пакунка. Шукаємо: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Можливе джерело залежноÑті: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Режим %s Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Режим Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Спроба Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s з метою розв’ÑÐ·Ð°Ð½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "Ðе знайдено шлÑхів Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s. Помилка!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: пакунок %s, потрібний Ð´Ð»Ñ %s, позначено Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: %s Ñтає заÑтарілим піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s Ð´Ð»Ñ Ñ€Ð¾Ð·Ð²â€™ÑÐ·Ð°Ð½Ð½Ñ " "залежноÑтей." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s Ð´Ð»Ñ Ñ€Ð¾Ð·Ð²â€™ÑÐ·Ð°Ð½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ шлÑÑ… Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñті %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Ð’Ñтановлено швидку відповідніÑть %s пакунку потрібному Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s належить до ÑпиÑку Ñупутніх пакунків, його вже вÑтановлено, пропуÑкаємо." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Потенційний пакунок розв’ÑÐ·Ð°Ð½Ð½Ñ %s має новішу верÑÑ–ÑŽ у ts." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Ð’Ñтановлено новішу верÑÑ–ÑŽ потенційного пакунка розв’ÑÐ·Ð°Ð½Ð½Ñ %s." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s вже перебуває у ÑпиÑку, пропуÑкаємо його" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s Ñк Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s Ñк такий, Ñкий Ñлід вÑтановити Ð´Ð»Ñ %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "УÑпіх — Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "ПерезапуÑк циклу" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу розв’ÑÐ·Ð°Ð½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "УÑпіх — залежноÑті розв’Ñзано" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Перевірка залежноÑтей Ð´Ð»Ñ %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "пошук %s, потрібного Ð´Ð»Ñ %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ compare_providers() Ð´Ð»Ñ %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "краща архітектура у po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s робить заÑтарілим %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist порівнÑно %s з %s у %s\n" " Кращий варіант: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "загальний sourcerpm %s Ñ– %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "базовий пакунок %s вÑтановлено Ð´Ð»Ñ %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "загальний Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ %s Ð´Ð»Ñ %s Ñ– %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "мінімальна вимога: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Переможець: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Ðевдаха(з %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Ðайкращий порÑдок: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Сховище %r: помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ налаштувань: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" "Ð”Ð»Ñ Ñховища %r у налаштуваннÑÑ… не вказано назви, викориÑтовуємо " "ідентифікатор" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "додатки вже ініціалізовано" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() буде уÑунуто у наÑтупних верÑÑ–ÑÑ… Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð±Ð¾Ñ€Ñ–Ð² пакунків" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "Об’єкт Ñховища %s не має _resetSack method,\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "тому параметри цього Ñховища не може бути відновлено до початкових.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Побудова об’єкта оновленнÑ" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… групи" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° групи зі Ñховища: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ файл груп зі Ñховища: %s — %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "У жодному Ñховищі немає доÑтупних груп" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… міток пакунків" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¼Ñ–Ñ‚Ð¾Ðº зі Ñховища: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ мітки пакунків Ð´Ð»Ñ Ñховища: %s — %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… відомоÑтей ÑпиÑку файлів" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "У пакунку yum-utils виÑвлено програму %s%s%s." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "ЗалишилиÑÑ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ñ– операції. Ð”Ð»Ñ Ñ—Ñ… Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ð°Ð¼ Ñлід Ñпочатку " "запуÑтити yum-complete-transaction." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Пошук непотрібних залишкових операцій" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Захищені верÑÑ–Ñ— multilib: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Спроба Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ запиÑу «%s»" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Пакунки, пропущені через проблеми з залежноÑÑ‚Ñми:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s з %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Знайдено %d проблем rpmdb, Ñкі вже Ñ–Ñнували, командою «yum check» " "виведено такі дані:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "ПопередженнÑ: RPMDB змінено поза межами yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "не має потрібних" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "конфлікт вÑтановленнÑ" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "ПопередженнÑ: під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ— ÑталиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñкриптів " "та інші некритичні помилки." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¸ операцію:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¸ операцію." #: ../yum/__init__.py:1552 #, 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:1590 #, 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:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s мало бути вилучено, але цього не ÑталоÑÑ!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¸Ñ‚Ð¸, чи Ñ” активним PID %s" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Ðе вдалоÑÑ Ñтворити Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Пакунок не відповідає тому, Ñкий програма має намір звантажити. ПропозиціÑ: " "віддайте команду yum -enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¸Ñ‚Ð¸ контрольну Ñуму" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Контрольна Ñума пакунка не збігаєтьÑÑ Ð· еталонною" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "контрольна Ñума пакунка не збігаєтьÑÑ, ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ %s увімкнено" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "викориÑтано локальну копію %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "ÐедоÑтатньо міÑÑ†Ñ Ñƒ каталозі Ð´Ð»Ñ Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½ÑŒ %s\n" " * вільно %s\n" " * потрібно %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Заголовок не завершено." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Заголовка немає у локальному кеші, увімкнено режим «лише кешуваннÑ». Ðе " "вдалоÑÑ Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Відкритий ключ Ð´Ð»Ñ %s не вÑтановлено" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Проблеми з відкриттÑм пакунка %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Відкритий ключ %s не Ñ” надійним" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Пакунок %s не підпиÑано" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s вилучено" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ файл %s, %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "Файл %s, %s, вилучено" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "Вилучено %d файлів %s" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "У наборі Ð´Ð»Ñ %s знайдено декілька ідентичних відповідників" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Ðемає відповідників %s.%s %s:%s-%s з оновленнÑ" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() буде уÑунуто у майбутніх верÑÑ–ÑÑ… Yum. " "ВикориÑтовуйте краще searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Пошук %d пакунків" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "пошук пакунка %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "пошук Ñеред файлів" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "пошук у Ñупутніх запиÑах" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Ð”Ð»Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñховищ дані груп недоÑтупні" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Групи з назвою %s не Ñ–Ñнує" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "пакунок %s було позначено у групі %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° %s з групи %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ пакунок з назвою %s Ð´Ð»Ñ Ð²ÑтановленнÑ" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "ПопередженнÑ: у групі %s немає жодного пакунка." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "У групі %s %u необов’Ñзкових пакунки, Ñкі може бути вÑтановлено." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "У наборі пакунків не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ кортеж пакунків %s" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "У базі даних RPM не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ кортеж пакунків %s" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Ðекоректний прапорець верÑÑ–Ñ— від: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Пакунків з %s не знайдено" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Об’єкт пакунка не був екземплÑром об’єкта пакунка" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "СпиÑок вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Пошук віртуальних Ñупутніх пакунків або файлів Ð´Ð»Ñ %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Відповідника параметра не знайдено: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Пакунок %s вже вÑтановлено, його не можна позначити" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Ðемає доÑтупних Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð²" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Пакунок: %s — вже у наборі операцій" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Пакунок %s Ñтав заÑтарілим піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Пакунок %s Ñтав заÑтарілим піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s, але заÑтарілий пакунок не " "міÑтить вимог до інших пакунків" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "Пакунок %s Ñтав заÑтарілим піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s, Ñпробуємо вÑтановити " "заміÑть нього %s" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Пакунок %s вже вÑтановлено, його верÑÑ–Ñ Ñ” найÑвіжішою" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "Відповідник пакунка %s вже вÑтановлено. Перевірка Ñ–ÑÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Повне оновленнÑ" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Ðеоновлюваний пакунок, Ñкий вже заÑтарів: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Пакунок вже заÑтарілий: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Ðеоновлюваний пакунок, Ñкий заÑтарів: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Ðеоновлюваний пакунок, Ñкий було оновлено раніше: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Відповідного пакунка Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð½Ðµ знайдено" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Пропущено поточне робоче Ñдро: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ %s з запиÑу операції" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸: %s. ПропуÑкаємо." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Перевірка %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ локальне вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ deltarpm: %s. Пропущено." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ пакунок %s до операції. ÐеÑуміÑна архітектура: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Ðе вдалоÑÑ Ð²Ñтановити пакунок %s. Він Ñ” заÑтарілим піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ " "пакунка %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Пакунок %s не вÑтановлено, не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ його. Віддайте команду yum " "install, щоб вÑтановити цей пакунок." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Пакунок %s.%s не вÑтановлено, його не можна оновити. Вам Ñлід ÑкориÑтатиÑÑ " "командою «yum install» Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ вÑтановленнÑ." #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Ð’Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s Ð´Ð»Ñ Ð²ÑтановленнÑ" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s Ñк Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: не оновлює вÑтановлений пакунок." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл %s. ПропуÑкаємо." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Проблема з перевÑтановленнÑм: не виÑвлено пакунків Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Проблема з перевÑтановленнÑм: не виÑвлено відповідного пакунка %s Ð´Ð»Ñ " "вÑтановленнÑ" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Ðемає доÑтупних Ð´Ð»Ñ Ð·Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— пакунків" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" "Пакунок %s можна вÑтановлювати паралельно з іншими верÑÑ–Ñми, пропуÑкаємо" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ðемає відповідників Ð´Ð»Ñ Ð´Ð¾Ñтупного пакунка: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Ð”Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° доÑтупне лише оновленнÑ: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð¸Ð·Ð¸Ñ‚Ð¸ верÑÑ–ÑŽ: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° з %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Ðевдала Ñпроба Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° GPG: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "Ключ підпиÑу GPG ключа %s не збігаєтьÑÑ Ð· ключем CA Ñховища: %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "Перевірено відповідніÑть підпиÑу ключа GPG ключам CA" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Ðекоректний ключ GPG з %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Помилка обробник ключа GPG: у ключі немає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° %s 0x%s:\n" " Ідентифікатор: «%s»\n" " Пакунок : %s (%s)\n" " Джерело : %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° %s 0x%s:\n" " Ідентифікатор: «%s»\n" " Джерело : %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "Ключ GPG у %s (0x%s) вже вÑтановлено" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° (код %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Ключ уÑпішно імпортовано" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "Ðе вÑтановлено жодного ключа" #: ../yum/__init__.py:4680 #, 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:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ñ–Ð² не допомогло, помилкові ключі?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "Ключ GPG у %s (0x%s) вже імпортовано" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "Ðе вÑтановлено жодного ключа Ð´Ð»Ñ Ñховища %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Ключі GPG зі ÑпиÑку Ñховища «%s» вже вÑтановлено, але вони Ñ” некоректними.\n" "Перевірте, чи правильно вказано адреÑи URL Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñховища." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідного дзеркала." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Під Ñ‡Ð°Ñ Ñпроби Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² ÑталиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Повідомте про цю помилку за адреÑою %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Помилки під Ñ‡Ð°Ñ Ñ‚ÐµÑтуваннÑ: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ теку кешуваннÑ: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" "ЗалежноÑті не розв’Ñзано. Ð—Ð°Ð¿Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ— з нерозв’Ñзаними залежноÑÑ‚Ñми не " "буде збережено." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ файл операцій %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп або прочитати збережений Ð·Ð°Ð¿Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ— %s: %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "верÑÑ–Ñ rpmdb не відповідає збереженим даним щодо верÑÑ–Ñ— у операції, " #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " ігноруєтьÑÑ Ñƒ відповідь на запит." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ tsflags або tsflags не Ñ” цілим чиÑлом." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Знайдено txmbr у невідомому поточному Ñтані: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ txmbr: %s у Ñтані %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ txmbr: %s з джерела: %s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "Ðе виÑтачає дій операції, зв’Ñзків або ts було змінено," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" " ігноруєтьÑÑ Ñƒ відповідь на запит. Вам Ñлід повторно виконати розв’ÑÐ·Ð°Ð½Ð½Ñ " "залежноÑтей!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Завантажені додатки: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ðе виÑвлено відповідника додатка %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Додаток «%s» не завантажуєтьÑÑ, оÑкільки його вимкнено" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Додаток «%s» не можна імпортувати" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Додаток «%s» не визначає потрібної верÑÑ–Ñ— API" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Ð”Ð»Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ° «%s» потрібна верÑÑ–Ñ API %s. Поточна верÑÑ–Ñ API — %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ° «%s»" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "За адреÑою пошуку додатків виÑвлено декілька додатків з назвою «%s»" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Файл налаштувань %s не знайдено" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл налаштувань Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ° %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "підтримки реєÑтрації команд не передбачено" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "не має потрібних залежноÑтей" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "конфліктує зі вÑтановленими пакунками" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s Ñ” дублікатом з %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s Ñ” заÑтарілим піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s міÑтить %s, але його не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸" #: ../yum/rpmtrans.py:80 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" yum-3.4.3/po/hi.po0000664000076400007640000016034411602434452012714 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Hindi (http://www.transifex.net/projects/p/yum/team/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/mr.po0000664000076400007640000016034611602434452012734 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Marathi (http://www.transifex.net/projects/p/yum/team/mr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mr\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/zh_TW.po0000664000076400007640000016035611602434452013352 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.net/projects/p/yum/team/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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 "" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "" #: ../cli.py:127 msgid "Setting up repositories" msgstr "" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr "" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr "" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr "" #: ../cli.py:336 msgid "You need to give some command" msgstr "" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" #: ../cli.py:497 msgid "Exiting on user Command" msgstr "" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "" #: ../cli.py:600 msgid "Running Transaction" msgstr "" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "" #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "" #: ../cli.py:960 msgid "No Packages Provided" msgstr "" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "" #: ../cli.py:1109 msgid "No Matches found" msgstr "" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" #: ../cli.py:1443 msgid "Plugin Options" msgstr "" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "" #: ../cli.py:1657 msgid "debugging output level" msgstr "" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" #: ../cli.py:1663 msgid "error output level" msgstr "" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "" #: ../cli.py:1671 msgid "verbose operation" msgstr "" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "" #: ../cli.py:1676 msgid "set install root" msgstr "" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "" #: ../cli.py:1706 msgid "control whether color is used" msgstr "" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "" #: ../output.py:307 msgid "Feb" msgstr "" #: ../output.py:307 msgid "Mar" msgstr "" #: ../output.py:307 msgid "Apr" msgstr "" #: ../output.py:307 msgid "May" msgstr "" #: ../output.py:307 msgid "Jun" msgstr "" #: ../output.py:308 msgid "Jul" msgstr "" #: ../output.py:308 msgid "Aug" msgstr "" #: ../output.py:308 msgid "Sep" msgstr "" #: ../output.py:308 msgid "Oct" msgstr "" #: ../output.py:308 msgid "Nov" msgstr "" #: ../output.py:308 msgid "Dec" msgstr "" #: ../output.py:318 msgid "Trying other mirror." msgstr "" #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "" #: ../output.py:684 msgid "y" msgstr "" #: ../output.py:684 msgid "yes" msgstr "" #: ../output.py:685 msgid "n" msgstr "" #: ../output.py:685 msgid "no" msgstr "" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr "" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr "" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr "" #: ../output.py:791 msgid " Default Packages:" msgstr "" #: ../output.py:792 msgid " Optional Packages:" msgstr "" #: ../output.py:793 msgid " Conditional Packages:" msgstr "" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "" #: ../output.py:816 msgid " No dependencies for this package" msgstr "" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr "" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr "" #: ../output.py:901 msgid "Matched from:" msgstr "" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "" #: ../output.py:923 msgid "Other : " msgstr "" #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "" #: ../output.py:1075 msgid "Arch" msgstr "" #: ../output.py:1076 msgid "Version" msgstr "" #: ../output.py:1076 msgid "Repository" msgstr "" #: ../output.py:1077 msgid "Size" msgstr "" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "" #: ../output.py:1166 msgid "Dependency Removed" msgstr "" #: ../output.py:1168 msgid "Dependency Installed" msgstr "" #: ../output.py:1170 msgid "Dependency Updated" msgstr "" #: ../output.py:1172 msgid "Replaced" msgstr "" #: ../output.py:1173 msgid "Failed" msgstr "" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "" #: ../output.py:1300 msgid "Total" msgstr "" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "" #: ../output.py:2113 msgid "obsoleted" msgstr "" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" #: ../utils.py:99 msgid "Running" msgstr "" #: ../utils.py:100 msgid "Sleeping" msgstr "" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr "" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr "" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr "" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr "" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr "" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "" #: ../yumcommands.py:59 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 "" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "" #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "" #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "" #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "" #: ../yumcommands.py:981 msgid " Updated : " msgstr "" #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "" #: ../yumcommands.py:1062 msgid "repo name" msgstr "" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "" #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr "" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "" #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "" #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "" #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "" #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "" #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "" #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" #: ../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 "" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "" yum-3.4.3/po/sr.po0000664000076400007640000024014411602434452012735 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Ðжурирам" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Бришем" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "ИнÑталирам" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Превазиђени" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Ðжурирани" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "ОбриÑани" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 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:1038 ../output.py:2193 msgid "Removing" msgstr "Уклањам" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Чишћење" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Ðаредба „%s“ је већ дефиниÑана" #: ../cli.py:127 msgid "Setting up repositories" msgstr "ПоÑтављам ризнице" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Читам метаподатке ризница из локалних датотека" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Грешка при подешавању: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Грешка у опцијама: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " ИнÑталиран : %s-%s %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Ðаправио/ла: %s %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Објавио/ла : %s %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Морате да унеÑете неку команду" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Захтеви диÑка:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Сажетак грешака\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Покушавам да извршим транÑакцију али нема шта да Ñе ради. Излазим." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Излазим на команду кориÑника" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Преузимам пакете:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Грешка при преузимању пакета:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Пријавите ову грешку у %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Извршавам проверу транÑакције" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Грешка при провери транÑакције:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Провера транÑакције је уÑпела" #: ../cli.py:600 msgid "Running Transaction" msgstr "Извршавам транÑакцију" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Одбијам да аутоматÑки увезем кључеве када Ñе извршавање не надгледа.\n" "За превазилажење овога кориÑтите „-y“." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Можда Ñте миÑлили: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "%s%s%s пакет је доÑтупан, али није инÑталиран." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Ðе поÑтоји доÑтупан пакет %s%s%s." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Пакет(и) који ће Ñе инÑталирати" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Ðема шта да Ñе ради" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d пакети означени за ажурирање" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Ðема пакета означених за ажурирање" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d пакети означени за уклањање" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Ðема пакета означених за уклањање" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Пакет(и) који ће Ñе уназадити" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Пакет(и) који ће Ñе поново инÑталирати" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Ðиједан пакет није добављен" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Упозорење: није нађено подударање за %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "ÐиÑу пронађена подударања" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "ÐиÑу пронађени пакети за %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "ЧиÑтим Ñве" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "ЧиÑтим заглавља" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "ЧиÑтим пакете" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "ЧиÑтим xml метаподатке" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "ЧиÑтим кеш базе података" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "ЧиÑтим expire-cache метаподатке" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "ЧиÑтим додатке" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "ИнÑталиране групе:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "ДоÑтупне групе:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Урађено" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Упозорење: група %s не поÑтоји." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Ðема доÑтупних пакета за инÑталацију или ажурирање у Ñвим захтеваним групама" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d пакет(и) за инÑталацију" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Ðе поÑтоји група под именом %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Ðема пакета за уклањање из група" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d пакет(и) за уклањање" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Пакет %s је већ инÑталиран, преÑкачем га" #: ../cli.py:1397 #, 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:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Ðе поÑтоји инÑталиран други %s, додајем га у ÑпиÑак за потенцијалну " "инÑталацију" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Опције додатка" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Грешка командне линије: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s опција захтева аргумент" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color прима један од Ñледећих: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "прикажи ову помоћну поруку и изађи" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "буди толерантан на грешке" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" #: ../cli.py:1652 msgid "config file location" msgstr "меÑто датотеке подешавања" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "најдуже време чекања на команду" #: ../cli.py:1657 msgid "debugging output level" msgstr "ниво излазног приказа за проналажење грешака" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" "приказуј дупликате, у ризницама, у командама за излиÑтавање/претраживање" #: ../cli.py:1663 msgid "error output level" msgstr "ниво излазног приказа грешака" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "" #: ../cli.py:1669 msgid "quiet operation" msgstr "тиха радња" #: ../cli.py:1671 msgid "verbose operation" msgstr "опширна радња" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "одговори Ñа да на Ñва питања" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "прикажи Yum верзију и изађи" #: ../cli.py:1676 msgid "set install root" msgstr "поÑтави корени директоријум инÑталације" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "укључи једну или више ризница (Ñкраћенице Ñу дозвољене)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "иÑкључи једну или више ризница (Ñкраћенице Ñу дозвољене)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "изузми пакет(е) по имену или глобу" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "иÑкључи изузимање из главног Ñкупа, за ризницу или за Ñве" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "укључи обраду заÑтарелих пакета у току ажурирања" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "иÑкључи додатке за Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "иÑкључи проверу gpg потпиÑа" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "иÑкључи додатке по имену" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "укључи додатке по имену" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "преÑкочи пакете који имају проблема Ñа решавањем завиÑноÑти" #: ../cli.py:1706 msgid "control whether color is used" msgstr "контролише да ли Ñе кориÑти боја" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "" #: ../output.py:307 msgid "Jan" msgstr "јан" #: ../output.py:307 msgid "Feb" msgstr "феб" #: ../output.py:307 msgid "Mar" msgstr "мар" #: ../output.py:307 msgid "Apr" msgstr "апр" #: ../output.py:307 msgid "May" msgstr "мај" #: ../output.py:307 msgid "Jun" msgstr "јун" #: ../output.py:308 msgid "Jul" msgstr "јул" #: ../output.py:308 msgid "Aug" msgstr "авг" #: ../output.py:308 msgid "Sep" msgstr "Ñеп" #: ../output.py:308 msgid "Oct" msgstr "окт" #: ../output.py:308 msgid "Nov" msgstr "нов" #: ../output.py:308 msgid "Dec" msgstr "дец" #: ../output.py:318 msgid "Trying other mirror." msgstr "Покушавам други одраз." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Ризница : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "" #: ../output.py:612 msgid "Summary : " msgstr "" #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "УРЛ : %s" #: ../output.py:615 msgid "License : " msgstr "" #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "ÐžÐ¿Ð¸Ñ : " #: ../output.py:684 msgid "y" msgstr "d" #: ../output.py:684 msgid "yes" msgstr "da" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "ne" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Да ли је ово у реду [d/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Група: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " ИБ групе: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " ОпиÑ: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Обавезни пакети:" #: ../output.py:791 msgid " Default Packages:" msgstr " Подразумевани пакети:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Изборни пакети:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " УÑловљени пакети:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "пакет: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Ðе поÑтоје завиÑноÑти овог пакета" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " завиÑноÑÑ‚: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Ðезадовољена завиÑноÑÑ‚" #: ../output.py:901 msgid "Matched from:" msgstr "Повезан из :" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Лиценца : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Име датотеке: %s" #: ../output.py:923 msgid "Other : " msgstr "ОÑтало : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Догодила Ñе грешка при рачунању укупне величине за преузимање" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Укупна величина: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Укупна величина за преузимање: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "" #: ../output.py:1039 msgid "Reinstalling" msgstr "" #: ../output.py:1040 msgid "Downgrading" msgstr "" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "ИнÑталирам због завиÑноÑти" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Ðжурирам због завиÑноÑти" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Уклањам због завиÑноÑти" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "ПреÑкочено (проблеми Ñа завиÑноÑтима)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Пакет" #: ../output.py:1075 msgid "Arch" msgstr "Ðрхитектура" #: ../output.py:1076 msgid "Version" msgstr "Верзија" #: ../output.py:1076 msgid "Repository" msgstr "Ризница" #: ../output.py:1077 msgid "Size" msgstr "Величина" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr "" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "" #: ../output.py:1165 msgid "Removed" msgstr "Уклоњено" #: ../output.py:1166 msgid "Dependency Removed" msgstr "ЗавиÑноÑÑ‚ уклоњена" #: ../output.py:1168 msgid "Dependency Installed" msgstr "ЗавиÑноÑÑ‚ инÑталирана" #: ../output.py:1170 msgid "Dependency Updated" msgstr "ЗавиÑноÑÑ‚ ажурирана" #: ../output.py:1172 msgid "Replaced" msgstr "Замењено" #: ../output.py:1173 msgid "Failed" msgstr "ÐеуÑпех" #. Delta between C-c's so we treat as exit #: ../output.py:1260 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" #: ../output.py:1282 msgid "user interrupt" msgstr "прекид од Ñтране кориÑника" #: ../output.py:1300 msgid "Total" msgstr "Укупно" #: ../output.py:1322 msgid "I" msgstr "" #: ../output.py:1323 msgid "O" msgstr "" #: ../output.py:1324 msgid "E" msgstr "" #: ../output.py:1325 msgid "R" msgstr "" #: ../output.py:1326 msgid "D" msgstr "" #: ../output.py:1327 msgid "U" msgstr "" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "" #: ../output.py:1489 msgid "Date and time" msgstr "" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "" #: ../output.py:1538 msgid "No transaction ID given" msgstr "" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "" #: ../output.py:1688 msgid "Older" msgstr "" #: ../output.py:1688 msgid "Newer" msgstr "" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "" #: ../output.py:1728 msgid "Begin time :" msgstr "" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "" #: ../output.py:1779 msgid "Success" msgstr "" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "" #: ../output.py:1804 msgid "Packages Altered:" msgstr "" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "" #: ../output.py:1831 msgid "Errors:" msgstr "" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "" #: ../output.py:1839 msgid "Dep-Install" msgstr "" #: ../output.py:1841 msgid "Obsoleting" msgstr "" #: ../output.py:1842 msgid "Erase" msgstr "" #: ../output.py:1843 msgid "Reinstall" msgstr "" #: ../output.py:1844 msgid "Downgrade" msgstr "" #: ../output.py:1846 msgid "Update" msgstr "" #: ../output.py:1909 msgid "Time" msgstr "" #: ../output.py:1935 msgid "Last day" msgstr "" #: ../output.py:1936 msgid "Last week" msgstr "" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "" #: ../output.py:1939 msgid "Last 6 months" msgstr "" #: ../output.py:1940 msgid "Last year" msgstr "" #: ../output.py:1941 msgid "Over a year ago" msgstr "" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "" #: ../output.py:1990 msgid "Transaction ID:" msgstr "" #: ../output.py:1991 msgid "Available additional history information:" msgstr "" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "" #: ../output.py:2106 msgid "installed" msgstr "инÑталиран" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "обриÑан" #: ../output.py:2109 msgid "reinstalled" msgstr "" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "ажуриран" #: ../output.py:2113 msgid "obsoleted" msgstr "превазиђен" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Извршава Ñе провера транÑакције" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Поновно покретање разрешавања завиÑноÑти Ñа новим променама." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Завршено је разрешавање завиÑноÑти" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Обрађујем завиÑноÑÑ‚: %s за пакет: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Ðеразрешена завиÑноÑÑ‚: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "" #: ../output.py:2197 msgid "Downgraded By" msgstr "" #: ../output.py:2198 msgid "Obsoleted By" msgstr "" #: ../output.py:2216 msgid "Available" msgstr "" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Сукоб при обради: %s Ñе Ñукоби Ñа %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Попуњавам Ñкуп транÑакције Ñа изабраним пакетима. Молим ваÑ, Ñачекајте." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Преузимам заглавље за %s ради паковања у Ñкуп транÑакције." #: ../utils.py:99 msgid "Running" msgstr "Извршава Ñе" #: ../utils.py:100 msgid "Sleeping" msgstr "УÑпаван" #: ../utils.py:101 msgid "Uninterruptible" msgstr "" #: ../utils.py:102 msgid "Zombie" msgstr "Зомби" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Праћен/зауÑтављен" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Ðепознат" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Други програм је: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Други програм је: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Меморија: %5s RSS (%5sБ VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Покренут: %s - %s раније" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Стање : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Излазим када кориÑник откаже" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Излазим када Ñе Ñломи цев" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Грешка: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" " Можете да пробате употребу --skip-broken опције ради заобилажења проблема" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Ðепозната грешка(е): излазни код: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "ЗавиÑноÑти Ñу разрешене" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Завршено!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Морате бити root кориÑник да биÑте извршили ову команду." #: ../yumcommands.py:59 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" "Такође, можете одредити урл за кључ који желите да кориÑтите\n" "за ризницу у „gpgkey“ опцији у одељку везаним за ризнице и yum \n" "ће га инÑталирати за ваÑ.\n" "\n" "За више информација контактирајте добављача ваше диÑтрибуције или пакета.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Грешка: потребно је да додате ÑпиÑак пакета за %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Грешка: потребно је придружити Ñтавку" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Грешка: потребна је група или ÑпиÑак група" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Грешка: clean захтева опцију: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Грешка: погрешан clean аргумент:%r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ðе поÑтоји аргумент за командно окружење" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Име датотеке је проÑлеђено командном окружењу: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "" "Ðе поÑтоји датотека %s, која је проÑлеђена као аргумент командном окружењу." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "" "Грешка: више од једне датотеке је проÑлеђено као аргумент командном " "окружењу." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "ПÐКЕТ..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "ИнÑталирајте пакет или пакете на ваш ÑиÑтем" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð½Ñталације" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[ПÐКЕТ...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Ðжурирај пакет или пакете на вашем ÑиÑтему" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð°Ð¶ÑƒÑ€Ð¸Ñ€Ð°ÑšÐ°" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Прикажи детаље о Ñваком пакету или групи пакета" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "ИнÑталирани пакети" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "ДоÑтупни пакети" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Додатни пакети" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Ðжурирани пакети" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Превазиђени пакети" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Ðедавно додати пакети" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Ðе поÑтоје одговарајући пакети за излиÑтавање" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "ИзлиÑтај пакете или групе пакета" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Уклоните пакет или пакете Ñа вашег ÑиÑтема" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐ°" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° групе" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ðе поÑтоји група над којом Ñе може извршити команда" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "ИзлиÑтај доÑтупне групе пакета" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "ИнÑталирајте пакете у групи на вашем ÑиÑтему" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Уклоните пакете у групи Ñа вашег ÑиÑтема" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Прикажи детаље о групи пакета" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Ðаправи кеш Ñа метаподацима" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Правим кеш датотеке за Ñве датотеке Ñа метаподацима." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Ово може да потраје у завиÑноÑти од брзине вашег рачунара" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Ðаправљен је кеш Ñа метаподацима" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Уклони кеширане податке" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Пронађи који пакет пружа дату вредноÑÑ‚" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Проверите да ли Ñу доÑтупна ажурирања пакета" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Претражите детаље о пакету за задату ниÑку" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Претражујем пакете: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Ðжурирајте пакете узимајући превазиђене у обзир" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð°Ð´Ð³Ñ€Ð°Ð´ÑšÐµ" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "ИнÑталирај локални RPM" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸Ñ… пакета" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Одреди који пакети пружају дату завиÑноÑÑ‚" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Претражујем пакете у потрази за завиÑноÑтима:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Извршавај интерактивно yum командно окружење" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "ПоÑтављам yum командно окружење" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "ИзлиÑтај завиÑноÑти пакета" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Тражим завиÑноÑти: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Прикажи подешене ÑофтверÑке ризнице" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "укључена" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "иÑкључена" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "" #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "" #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "" #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Ревизија ризнице : " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "" #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "ДиÑтро ознаке ризнице: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "" #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "" #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "" #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "" #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Металинк ризнице : " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Ðжурирано : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "" #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "" #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "" #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "репо id" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "ÑтатуÑ" #: ../yumcommands.py:1062 msgid "repo name" msgstr "репо име" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Прикажи кориÑну поруку о употреби" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Ðије доÑтупна помоћ за %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "пÑеудоними: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "пÑеудоним: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ðµ инÑталације" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "поновно инÑталирам пакет" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "ПоÑтављам Ð¿Ñ€Ð¾Ñ†ÐµÑ ÑƒÐ½Ð°Ð·Ð°Ñ’Ð¸Ð²Ð°ÑšÐ°" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "уназади пакет" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr "" #: ../yumcommands.py:1265 msgid " Group :" msgstr "" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "" #: ../yumcommands.py:1312 msgid "Available:" msgstr "" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "" #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Ðеки други програм тренутно држи yum закључаним; чекам да тај програм " "изађе..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Разрешавам завиÑноÑти" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Излазим када кориÑник откаже." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "ПоÑтављам TransactionSets пре него што Ñе подигне клаÑа подешавања" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Погрешан tsflag у датотеци подешавања: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Претражујем pkgSack за завиÑноÑÑ‚: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Члан: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s пребачен за инÑталацију" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Додајем пакет %s у начину рада %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Уклањам пакет %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s захтева: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Потребан захтев је већ потражен, обмањујем" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Потребан захтев није име пакета. Тражим: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Могући Ñнабдевач: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Режим је %s за Ñнабдевача %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Режим за пакет који Ñнабдева %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s пакет захтева да %s буде означен за бриÑање" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: мењам %s Ñа %s ради разрешавања завиÑноÑти." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: ажурирам %s ради разрешавања завиÑноÑти." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Ðе могу да пронађем путању ажурирања за завиÑноÑÑ‚ за: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Брзо повезивање пакета %s као захтева за %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s је у пруженим пакетима али је већ инÑталиран, уклањам га." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Потенцијално разрешавање пакета %s има новији примерак у ts-у." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Потенцијално разрешавање пакета %s има инÑталиран новији примерак." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s је већ у ts-у, преÑкачем га" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: означавам %s као ажурирање за %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: означавам %s као инÑталацију за %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "УÑпех - празна транÑакција" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Поново покрећем петљу" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Завршетак процеÑа завиÑноÑти" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "УÑпех - завиÑноÑти Ñу разрешене" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Проверавам завиÑноÑти за %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "тражим %s као захтев за %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Покрећем compare_providers() за %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "боља архитектура у пакету %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s превазилази %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist упоредио %s Ñа %s на %s\n" " Победник: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "заједнички изворни rpm %s и %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "заједнички Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ %s између %s и %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr "" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr "" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Ðајбољи редоÑлед: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Ризници %r недоÑтаје име у подешавањима, кориÑтим id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "већ иницијализовани додаци" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Читам локални RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "ПоÑтављам групе пакета" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "репо објекту за репо %s недоÑтаје a _resetSack метода\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "због тога Ñе овај репо не може вратити на почетну поÑтавку.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Изграђујем објекат ажурирања" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() неће бити приÑутна у будућим верзијама Yum-а.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Добављам метаподатке групе" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Додајем датотеку групе из ризнице: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Ðије уÑпело додавање датотеке групе за ризницу: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Ðе поÑтоји група која је доÑтупна у било којој ризници" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Увозим додатне информације о ÑпиÑковима датотека" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "ОÑтале Ñу недовршене транÑакције. Можда би прво требало да извршите yum-" "complete-transaction да биÑте их завршили." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Пакети Ñу преÑкочени због проблема Ñа завиÑноÑтима:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s из %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Упозорење: дошло је до грешке у Ñкриптици или неке друге некритичне грешке " "током транÑакције." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "" #: ../yum/__init__.py:1552 #, 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:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "ÐиÑам у могућноÑти да проверим да ли је PID %s активан" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, 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:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Ðе могу да извршим контролу Ñуме" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Пакет нема одговарајући контролну Ñуму" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "пакет нема одговарајућу вредноÑÑ‚ контролне Ñуме или је за %s укључено " "кеширање" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "кориÑтим локални %s умножак" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Ðедовољна количина проÑтора у директоријуму %s за преузимање\n" " * Ñлободно је %s\n" " * потребно је %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Заглавље није потпуно." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Заглавље није у локалном кешу и Ñамо начин рада Ñа кеширањем је укључен. Ðе " "могу да преузмем %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Јавни кључ за %s није инÑталиран" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Проблем Ñа отварањем пакета %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Јавни кључ за %s није поверљив" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Пакет %s није потпиÑан" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Ðе могу да уклоним %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s је уклоњен" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Ðе могу да уклоним %s датотеку %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s датотека %s је уклоњена" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s датотеке Ñу уклоњене" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "ПоÑтоји више од једног идентичног Ñлагања у групи за %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Ðишта Ñе не Ñлаже Ñа %s.%s %s:%s-%s из ажурирања" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() неће бити приÑутна у будућим Yum верзијама." " УмеÑто ње кориÑтите searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Претражујем %d пакете" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "тражим пакет %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "тражим у уноÑима датотека" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "тражим у уноÑима доÑтављача" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Ðема доÑтупних података о групама за подешене ризнице" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Ðе поÑтоји група под именом %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "пакет %s није означен у групи %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Додајем пакет %s из групе %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Ðиједан пакет под именом %s није доÑтупан за инÑталацију" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Група пакета %s није нађена у packagesack-у" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Ðема пронађених пакета за %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Објекат пакета није био примерак објекта пакета" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Ðије одређено ништа за инÑталацију" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Проверавам виртуелну доÑтаву или доÑтаву датотеке за %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Ðе поÑтоји Ñлагање за аргумент: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Пакет %s је инÑталиран и није доÑтупан" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Ðема пакета доÑтупних за инÑталацију" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Пакет: %s - већ је у Ñкупу транÑакције" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "Пакет %s је замењен пакетом %s, покушавам да намеÑто инÑталирам %s" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Већ је инÑталирана најновија верзија пакета %s" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Пакет који Ñе поклапа Ñа %s је већ инÑталиран. Проверавам за новију верзију." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Ðжурирам Ñве" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Ðе ажурирам пакете који Ñу већ превазиђени: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Пакет је већ превазиђен: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "Ðе ажурирам пакете који Ñу већ ажурирани: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Ðиједан пакет није одређен за уклањање" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "" #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "ИÑпитујем %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Ðе могу да додам пакет %s у транÑакцију. Ðрхитектура није уÑаглашена: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Пакет %s није инÑталиран, не могу да га ажурирам. Извршите yum инÑталацију " "да биÑте га инÑталирали." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Изузимам %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Означавам %s за инÑталацију" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Означавам %s као ажурирање за %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: не ажурира инÑталирани пакет." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Ðе могу да отворим датотеку: %s. ПреÑкачем је." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Проблем при поновној инÑталацији: ниједан пакет није одређен за уклањање" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Ðема пакета доÑтупних за уназађивање" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Пакету %s Ñу дозвољене многоÑтруке инÑталације, преÑкачем га" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ðема доÑтупног одговарајућег пакета: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Само је надградња доÑтупна за пакет: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Добављање GPG кључа није уÑпело: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Рашчлањивање GPG кључа није уÑпело: кључ нема вредноÑÑ‚ %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG кључ на %s (0x%s) је већ инÑталиран" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Ðије уÑпео увоз кључа (код %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Кључ је уÑпешно увезен" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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" "Проверите да ли Ñу подешени одговарајући УРЛ-ови кључева за ову ризницу." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Увоз кључа(кључева) није помогао, погрешан кључ(кључеви)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG кључ на %s (0x%s) је већ увезен" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Ðије уÑпео увоз кључа" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Ðе могу да пронађем одговарајући одраз." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Појавиле Ñу Ñе грешке за време преузимања пакета." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Пријавите ову грешку код %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Грешке при провери транÑакције: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Учитани додаци: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Ðе поÑтоји Ñлагање за додатак: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Ðе учитавам додатак „%s“ пошто је иÑкључен" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Додатак „%s“ не може да буде увезен" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Додатак „%s“ не одређује верзију захтеваног API-а" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Додатак „%s“ захтева API %s. Подржани API је %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Учитавам „%s“ додатак" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "У путањи за претраживање додатака поÑтоје два или више додатака под именом " "„%s“" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Датотека подешавања %s није пронађена" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Ðе могу да пронађем датотеку подешавања за додатак %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "региÑтрација команди није подржана" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "" #: ../yum/rpmtrans.py:80 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 "Ðије уÑпела md5 провера за %s RPM" #: ../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" yum-3.4.3/po/es.po0000664000076400007640000024274611602434452012732 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # beckerde , 2011 # Claudio Rodrigo Pereyra Diaz , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Actualizando" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Eliminando" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Instalando" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Obsoleto" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Actualizado" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Eliminado" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Instalado" #: ../callback.py:130 msgid "No header - huh?" msgstr "Sin encabezado - ¿ah?" #: ../callback.py:168 msgid "Repackage" msgstr "Reempaquetar" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Error: estado de salida no válido: %s de %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Eliminado: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Eliminando" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Limpieza" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "El comando \"%s\" ya ha sido definido" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Configurando los repositorios" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Leyendo en archivos locales los metadatos de los repositorios" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Error de configuración: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Error de opciones: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Instalado: %s-%s en %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Construido: %s en %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Enviado: %s en %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Necesita ingresar algún comando" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "No existe el comando: %s. Por favor, utilice %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Requerimientos de disco:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Como mínimo se necesitan %dMB más en el sistema de archivos %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Resumen de errores\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "Se intentó ejecutar la transacción pero no hay nada para hacer. Saliendo." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Saliendo de acuerdo al comando del usuario" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Descargando paquetes:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Error al descargar los paquetes:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Ejecutando verificación de transacción" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "ERROR Necesita actualizar el rpm para manipular:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "ERROR en el chequeo de la transacción vs resolución de dependencias:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "El RPM necesita ser actualizado" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Por favor, reporte este error en %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Ejecutando prueba de transacción" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Error en la verificación de la transacción:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "La prueba de transacción ha sido exitosa" #: ../cli.py:600 msgid "Running Transaction" msgstr "Ejecutando transacción" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Se rechaza la importación automática de claves cuando se ejecuta desatendida.\n" "Utilice \"-y\" para forzar." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Tal vez quería decir: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "" "El (los) paquete(s) %s%s%s se encuentra(n) disponible(s), pero no se ha(n) " "instalado." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "No existe disponible ningún paquete %s%s%s." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Paquete(s) a instalarse" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nada para hacer" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d paquetes han sido seleccionados para ser actualizados" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "No se han seleccionando paquetes para ser actualizados" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "" "%d paquetes han sido seleccionados para Sincronización de distribución" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "No se han seleccionado paquetes para Sincronización de distribución" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d paquetes han sido seleccionados para ser eliminados" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "No se han seleccionado paquetes para ser eliminados" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Paquete(s) a desactualizar" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (desde %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "El paquete instalado %s%s%s%s no se encuentra disponible." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Paquete(s) a reinstalar" #: ../cli.py:960 msgid "No Packages Provided" msgstr "No se ha ofrecido ningún paquete" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "Nombre/Resumen que coinciden con: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Nombre y resumen que coinciden con %s y sólo %s, use \"buscar todo\" para " "todo." #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" " Nombre completo y resumen que coinciden con %s y sólo %s, use \"buscar " "todo\" para todo." #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Concordante: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" " Nombre y resumen que coinciden con %s y en general con %s, use \"buscar " "todo\" para todo." #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Aviso: No se ha encontrado ningún resultado para: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "No se ha encontrado ningún resultado" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "No se ha encontrado ningún paquete para %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Limpiando repositorios:" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Limpiando todo" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Limpiando encabezados" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Limpiando paquetes" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Limpiando metadatos xml" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Limpiando el caché de la base de datos" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Limpiando metadatos expirados del caché" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Limpiando datos de rpmdb en el caché" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Limpiando complementos" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Advertencia: No hay grupos coincidentes con: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Grupos instalados:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Grupos de idioma instalados:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Grupos disponibles:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "Grupos de idioma disponibles:" #: ../cli.py:1285 msgid "Done" msgstr "Listo" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Aviso: el grupo %s no existe." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "En los grupos solicitados no existe disponible ningún paquete para ser " "instalado o actualizado" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d paquete(s) a instalar" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "No existe ningún grupo denominado %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "No existen paquetes a eliminarse de los grupos" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d paquete(s) a eliminar" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Ya se encuentra instalado el paquete %s, ignorando" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Descartando paquete no comparable %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "No existe instalado otro %s, agregando a la lista para instalación posible" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Opciones de complementos" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Error en la línea de comando: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: la opción %s necesita un argumento" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color acepta una de las siguientes opciones: auto, always, never" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "--insallroot debe ser una ruta absoluta: %s" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "muestra este mensaje de ayuda y cierra" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "sea tolerante con los errores" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "se ejecuta completamente a partir del caché, pero no lo actualiza" #: ../cli.py:1652 msgid "config file location" msgstr "configurar ubicación de archivo" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "tiempo máximo de espera del comando" #: ../cli.py:1657 msgid "debugging output level" msgstr "nivel de depuración de la salida" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "" "muestra duplicados en los repositorios, y en los comandos para " "mostrar/buscar" #: ../cli.py:1663 msgid "error output level" msgstr "nivel de error de la salida" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "nivel de depuración de salida para rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "operación discreta" #: ../cli.py:1671 msgid "verbose operation" msgstr "operación detallada" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "responde \"si\" a todas las preguntas" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "muestra la versión de Yum y finaliza" #: ../cli.py:1676 msgid "set install root" msgstr "define la raíz de instalación" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "activa uno o más repositorios (los comodines son permitidos)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "desactiva uno o más repositorios (los comodines son permitidos)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "excluya paquete(s) de acuerdo a su nombre o glob " #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "" "deshabilita la posibilidad de exclusión desde main, para un repositorio o " "para todos" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "habilita el proceso de paquetes obsoletos durante las actualizaciones" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "deshabilita los complementos de Yum" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "deshabilita la verificación de firmas GPG" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "deshabilita complementos de acuerdo a su nombre" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "habilita complementos de acuerdo a su nombre" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "ignora paquetes con problemas de resolución de dependencias" #: ../cli.py:1706 msgid "control whether color is used" msgstr "controla la utilización de colores" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "define el valor de $releasever en los aarchivos de configuración de yum y de" " los repositorios" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "define una configuración arbitraria y opciones de los repositorios" #: ../output.py:307 msgid "Jan" msgstr "Ene" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Abr" #: ../output.py:307 msgid "May" msgstr "May" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Ago" #: ../output.py:308 msgid "Sep" msgstr "Sep" #: ../output.py:308 msgid "Oct" msgstr "Oct" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Dic" #: ../output.py:318 msgid "Trying other mirror." msgstr "Intentando con otro espejo." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Nombre : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arquitectura : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Período : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Versión : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Lanzamiento : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Tamaño : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Repositorio : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Desde el repositorio : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Enviado por : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Horario del envío : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Horario de la construcción : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Horario de la instalación: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Instalado por: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Modificado por : %s " #: ../output.py:612 msgid "Summary : " msgstr "Resumen : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licencia : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Descripción :" #: ../output.py:684 msgid "y" msgstr "s" #: ../output.py:684 msgid "yes" msgstr "si" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "no" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Está de acuerdo [s/N]:" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Grupo: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Group-Id: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Descripción: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Idioma: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Paquetes obligatorios:" #: ../output.py:791 msgid " Default Packages:" msgstr " Paquetes predeterminados:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Paquetes opcionales:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Paquetes condicionales:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "paquete: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " No existen dependencias para este paquete" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " dependencia: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Dependencia no satisfecha" #: ../output.py:901 msgid "Matched from:" msgstr "Resultado obtenido desde:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licencia : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Nombre del archivo : %s" #: ../output.py:923 msgid "Other : " msgstr "Otro : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Hubo un error mientras se calculaba el tamaño total de la descarga" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Tamaño total: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Tamaño total de la descarga: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Tamaño instalado: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Hubo un error mientras se calculaba el tamaño instalado" #: ../output.py:1039 msgid "Reinstalling" msgstr "Reinstalando" #: ../output.py:1040 msgid "Downgrading" msgstr "Desactualizando" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Instalando para las dependencias" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Actualizando para las dependencias" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Eliminando para las dependencias" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Ignorando (problemas de dependencias)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "No instalado" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Paquete" #: ../output.py:1075 msgid "Arch" msgstr "Arquitectura" #: ../output.py:1076 msgid "Version" msgstr "Versión" #: ../output.py:1076 msgid "Repository" msgstr "Repositorio" #: ../output.py:1077 msgid "Size" msgstr "Tamaño" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " reemplazando %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Resumen de la transacción\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Instalar %5.5s Paquete(s)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Actualizar %5.5s Paquete(s)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Eliminar %5.5s Paquete(s)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Reinstalar %5.5s Paquete(s)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Desactualizar %5.5s Paquete(s)\n" #: ../output.py:1165 msgid "Removed" msgstr "Eliminado(s)" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Dependencia(s) eliminada(s)" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Dependencia(s) instalada(s)" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Dependencia(s) actualizada(s)" #: ../output.py:1172 msgid "Replaced" msgstr "Sustituido(s)" #: ../output.py:1173 msgid "Failed" msgstr "Falló" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "dos" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Se ha cancelado la descarga actual, %sinterrumpa con (ctrl-c) nuevamente%s dentro de %s%s%s segundos\n" "para finalizar.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "interrupción solicitada por el usuario" #: ../output.py:1300 msgid "Total" msgstr "Total" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "Sistema" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "Omitiendo transacción mezclada %d a %d, dado que se superponen" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Sin transacciones" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Se ha(n) indicado paquete(s), o IDs de transacciones erróneas" #: ../output.py:1484 msgid "Command line" msgstr "Linea de comandos" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Registro de usuario" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Día y hora" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Acción(es)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Modificado" #: ../output.py:1538 msgid "No transaction ID given" msgstr "No se ha indicado un ID de transacción" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Se ha indicado un ID de transacción no válido " #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "No se ha encontrado el ID de transacción indicado" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "¡Se ha encontrado más de un ID de transacción!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "No se ha indicado ningún paquete, o ID de transacción" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Desactualizado" #: ../output.py:1688 msgid "Older" msgstr "Antiguos" #: ../output.py:1688 msgid "Newer" msgstr "Nuevos" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "ID de transacción :" #: ../output.py:1728 msgid "Begin time :" msgstr "Hora inicial :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Rpmdb inicial :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u segundos)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u minutos)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u horas)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u dias)" #: ../output.py:1756 msgid "End time :" msgstr "Hora final : " #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Rpmdb final :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Usuario :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Codigo-obtenido :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Abortado" #: ../output.py:1773 msgid "Failures:" msgstr "Fallas:" #: ../output.py:1777 msgid "Failure:" msgstr "Falla:" #: ../output.py:1779 msgid "Success" msgstr "Exito" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Línea de comando :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Información adicional no predeterminada almacenada: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Transacción realizada con:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Paquetes modificados:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Paquetes ignorados:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problemas en la base de datos RPM: " #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Información del scriptlet:" #: ../output.py:1831 msgid "Errors:" msgstr "Errores:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Instalar" #: ../output.py:1839 msgid "Dep-Install" msgstr "Instalación de dependencias" #: ../output.py:1841 msgid "Obsoleting" msgstr "Convirtiendo en obsoleto" #: ../output.py:1842 msgid "Erase" msgstr "Eliminar" #: ../output.py:1843 msgid "Reinstall" msgstr "Reinstalar" #: ../output.py:1844 msgid "Downgrade" msgstr "Desactualizar" #: ../output.py:1846 msgid "Update" msgstr "Actualizar" #: ../output.py:1909 msgid "Time" msgstr "Hora" #: ../output.py:1935 msgid "Last day" msgstr "Ultimo día" #: ../output.py:1936 msgid "Last week" msgstr "Ultima semana" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Ultimas 2 semanas" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Ultimos 3 meses" #: ../output.py:1939 msgid "Last 6 months" msgstr "Ultimos 6 meses" #: ../output.py:1940 msgid "Last year" msgstr "Ultimo año" #: ../output.py:1941 msgid "Over a year ago" msgstr "Hace más de un año" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "No se ha encontrado una transacción %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "ID de transacción :" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Información de historial adicional disponible:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s No ha sido encontrada información adicional con este nombre" #: ../output.py:2106 msgid "installed" msgstr "instalado" #: ../output.py:2107 msgid "an update" msgstr "una actualización" #: ../output.py:2108 msgid "erased" msgstr "eliminado" #: ../output.py:2109 msgid "reinstalled" msgstr "reinstalado" #: ../output.py:2110 msgid "a downgrade" msgstr "una desactualización" #: ../output.py:2111 msgid "obsoleting" msgstr "obsoleto" #: ../output.py:2112 msgid "updated" msgstr "actualizado" #: ../output.py:2113 msgid "obsoleted" msgstr "obsoleto" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> Paquete %s.%s %s:%s-%s debe ser %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Ejecutando prueba de transacción" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "" "--> Reiniciando la resolución de las dependencias con las nuevas " "modificaciones." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Resolución de dependencias finalizada" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Procesando dependencias: %s para el paquete: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Manteniendo el paquete: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Dependencia no resuelta: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Paquete: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Necesita: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " No encontrado" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Actualizado por" #: ../output.py:2197 msgid "Downgraded By" msgstr "Desactualizado por" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Obsoleto por" #: ../output.py:2216 msgid "Available" msgstr "Disponible" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Procesando conflictos: %s choca con %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "" "--> Construyendo el conjunto de las transacciones con los paquetes " "seleccionados. Por favor aguarde." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "---> Descargando el encabezado de %s para incluirlo en el conjunto de " "transacciones." #: ../utils.py:99 msgid "Running" msgstr "Ejecutando" #: ../utils.py:100 msgid "Sleeping" msgstr "Durmiendo" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Ininterrumplible" #: ../utils.py:102 msgid "Zombie" msgstr "Zombi" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Rastreado/Detenido" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Desconocido" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " La otra aplicación es: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " La otra aplicación es: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memoria : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Iniciado: %s - %s atrás" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Estado : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Saliendo por cancelación del usuario" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Saliendo por tubería rota" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Otra aplicación tiene retenido el bloqueo de Yum; finalizando de acuerdo a " "la configuración de exit_on_lock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Error de PluginExit: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Error de yum: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Error: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" " Podría intentar utilizar el comando --skip-broken para sortear el problema" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr "Podría intentar ejecutar: rpm- Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Error(es) desconocido(s): Código de salida: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Dependencias resueltas" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "¡Listo!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Minu uso:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Necesita ser usuario root para poder ejecutar este comando." #: ../yumcommands.py:59 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" "Usted tiene habilitada la verificación de paquetes mediante llaves GPG. Eso es bueno. \n" "Sin embargo, usted no tiene ninguna llave pública GPG instalada. Necesita descargar\n" "e instalar las llaves de todos los paquetes que desee instalar.\n" "Esto puede hacerlo si ejecuta el comando:\n" " rpm --import public.gpg.key\n" "\n" "\n" "También puede indicar la url de la llave del repositorio que desee utilizar\n" "en la opción 'gpgkey' en la sección del repositorio, y yum \n" "la instalará por usted.\n" "\n" "Para obtener mayor información, póngase en contacto con su distribución o con su proveedor de paquetes.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Error: Necesita pasar una lista de paquetes a %s " #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Error: Es necesario un ítem con el cual corresponderse" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Error: Es necesario un grupo o una lista de grupos" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Error: la limpieza necesita una opción: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Error: argumento de limpieza no válido: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "No hay argumento para el shell" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Nombre de archivo pasado al shell: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "El archivo %s indicado como argumento para el shell no existe." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Error: se ha indicado más de un archivo como argumento para el shell" #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "No existen repositorios habilitados.\n" " Ejecute \"yum repolist all\" para conocer los repositorios existentes.\n" " Puede habilitarlos con yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAQUETE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Instala uno o varios paquetes en su sistema" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Configurando el proceso de instalación" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAQUETE...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Actualiza uno o varios paquetes en su sistema" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Configurando el proceso de actualización" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "" "Sincroniza los paquetes instalados a las últimas versiones disponibles" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Definiendo el proceso de Sincronización de la distribución" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Muestra detalles acerca de un paquete o de un grupo de paquetes" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Paquetes instalados" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Paquetes disponibles" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Paquetes extra" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Paquetes actualizados" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Convirtiendo paquetes en obsoletos" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Paquetes añadidos recientemente" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "No hay paquetes que se correspondan con la lista" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Muestra un paquete o grupos de paquete" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Elimina uno o varios paquetes de su sistema" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Configurando el proceso de eliminación" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Configurando el proceso de grupo" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "No existen grupos sobre los cuales ejecutar el comando" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Muestra los grupos de paquetes disponibles" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Instala los paquetes en un grupo de su sistema" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Elimina los paquetes de un grupo de su sistema" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Muestra detalles acerca de un grupo de paquetes" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Genera el caché de metadatos" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Creando los archivos de caché para todos los archivos de metadatos." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "Esto podría demorar algún tiempo, dependiendo de la velocidad de su equipo" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Se ha creado el caché de metadatos" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Elimina los datos del caché" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Localiza el paquete que ofrezca el valor indicado" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Verifica la existencia de actualizaciones de paquetes" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Busca detalles en los paquetes para la cadena indicada" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Buscando paquetes:" #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Actualiza los paquetes tomando en cuenta los obsoletos" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Configurando el proceso de actualización" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Instala un RPM local" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Configurando el proceso de instalación local de paquetes" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Determina qué paquetes ofrecen la dependencia indicada" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Buscando paquetes para la dependencia:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Ejecuta una shell de Yum interactiva " #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Configurando la shell de Yum" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Muestra las dependencias que necesita un paquete" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Buscando dependencias:" #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Muestra los repositorios de software configurados" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "habilitado" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "deshabilitado" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Repo-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Repo-name : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Repo-status : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Repo-revision: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Repo-tags : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Repo-distro-tags: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Repo-updated : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Repo-pkgs : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Repo-size : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Repo-baseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Repo-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Actualizados : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Repo-mirrors : " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Nunca (último: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Instante (último: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s segundo(s) (último: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Repo-expire : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Repo-exclude : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Repo-include : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Repositorio excluído:" #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "id del repositorio" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "estado" #: ../yumcommands.py:1062 msgid "repo name" msgstr "nombre del repositorio" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Muestra un mensaje de ayuda del uso" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "No existe asistencia disponible para %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "apodos: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "apodo: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Configurando el proceso de reinstalación" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "reinstalar un paquete" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Configurando el proceso de desactualización" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "desactualizar un paquete a una versión anterior" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Muestra una versión para la máquina y/o los repositorios disponibles." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Grupos de la versión de Yum:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Grupo :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Paquetes:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Instalado:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Grupo-Instalado:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Disponible:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Grupo-Disponible:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Mostrar, o utilizar, el historial de la transacción" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Sub-comando de historia no válido, utilice: %s" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "No posee acceso a la base de datos del historial." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Verifica si hay problemas en la base de datos (rpmdb)" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "carga una transacción guardada desde un archivo" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "No se especificó un archivo de transacción guardada." #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "cargando transacción desde %s" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "Transacción cargada desde %s con %s miembros." #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr " Yum falló verificando: %s" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Otra aplicación tiene retenido el bloqueo de Yum; esperándolo para salir... " #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "No se puede crear archivo de bloqueo, ya existe uno" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Resolviendo dependencias" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" "Su transacción fue guardada, ejecutela nuevamente con yum load-transaction " "%s" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Saliendo por cancelación del usuario." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "" "Configurando TransactionSets antes de la activación de clase de " "configuración" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "tsflag no válido en el archivo de configuración: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Buscando pkgSack para la dependencia: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Miembro: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s convertido para instalar" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Agregando paquete %s en modo %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Eliminando paquete %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s necesita: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s necesita %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "El requerimiento que se necesita ya fue buscado, haciendo trampa" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "El requerimiento necesitado no es un nombre de paquete. Buscando: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Proveedor posible: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "El modo es %s para el proveedor de %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Modo para el paquete que ofrece %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "Intentando actualizar %s para resolver dependencia" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "No se encontraron rutas de actualización para %s. ¡Fallo!" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: el paquete %s que necesita %s ha sido marcado para eliminarse" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "" "TSINFO: Transformando a %s en obsoleto utilizando %s para resolver la " "dependencia." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Actualizando %s para resolver la dependencia." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "" "No es posible encontrar un camino de actualización para la dependencia para:" " %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Rápidamente se ha localizado %s al ser requerido por %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s se encuentra entre los paquetes provistos, pero ya está instalado, " "eliminando. " #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "El paquete de solución posible %s posee una nueva instancia en ts." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "" "El paquete de solución posible %s posee una nueva instancia ya instalada." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s ya se encuentra en ts, ignorándolo" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Seleccionado %s como actualización de %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Seleccionando %s como una instalación para %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Exito - transacción vacía" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Reiniciando el bucle" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Finalizando el proceso de dependencias" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Exito - dependencias resueltas" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Verificando dependencias para %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "localizando a %s como un requerimiento de %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Ejecutando compare_providers() para %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "mejor arquitectura en po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s hace obsoleto a %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist comparó %s con %s en %s\n" " Vencedor: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "sourcerpm común %s y %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "el paquete principal %s está instalado para %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "prefijo común de %s entre %s y %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "requires el mínimo: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Ganador: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Perdedor(con %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Mejor orden: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Repositorio %r: Error analizando la configuración: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" "Al repositorio %r le falta un nombre en su configuración, utilizando el id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "los complementos ya se encuentran inicializados" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Leyendo RPDMDB local" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Configurando sacos de paquetes" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "" "el objeto del repositorio para el repositorio %s necesita de un método a " "_resetSack\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "por lo tanto, este repositorio no puede ser restaurado.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Construyendo objeto de actualizaciones" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() desaparecerá en alguna versión posterior de Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Obteniendo metadatos de grupo" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Agregando archivo de grupos desde el repositorio: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Falló al agregarse el archivo de grupos desde el repositorio: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "No hay grupos disponibles en ningún repositorio" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Obteniendo metadatos de etiquetas de paquete (pkgtags)" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Agregando etiquetas del repositorio: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Falló al agregarse etiquetas de paquetes para el repositorio: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Importando información adicional de listas de archivo" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "El programa %s%s%s se encuentra en el paquete yum-utils." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Existen transacciones restantes no finalizadas. Podría considerar primero " "ejecutar el comando yum-complete-transaction, de modo de poder finalizarlas." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "--> Buscando dependencias sobrantes innecesarias" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "Versiónes multilib protegidas: %s != %s" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Intentando eliminar \"%s\", que está protegido" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Paquetes ignorados por problemas de dependencias:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s de %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Se ha encontrado %d problema(s) pre existentes en la base de datos RPM, " "este es el resultado de 'yum check':" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "" "Advertencia: Las bases de datos (RPMDB) han sido modificadas por un elemento" " ajeno a yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "no se encuentra necesita" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "conflicto instalado" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Aviso: scriptlet o algún otro tipo de error no fatal ha ocurrido durante la " "transacción." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "La transacción no pudo iniciarse:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "No se pudo ejecutar la transacción" #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Falló al eliminar archivo de transacción %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "¡se suponía que %s estuviera instalado, pero no lo está! " #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "¡se suponía que %s estuviera eliminado, pero no lo está! " #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "No se pudo abrir el bloqueo %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "No es posible verificar si se encuentra activo el PID %s" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "" "Bloqueo existente en %s: otra copia se encuentra en ejecución como pid %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "No se ha podido crear el bloqueo en %s: %s" #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "El paquete no se corresponde con la descarga pretendida. Sugerimos ejecutar " "el siguiente comando: yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "No se pudo realizar una suma de verificación" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "El paquete no se corresponde con la suma de verificación" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "el paquete no ha superado la suma de verificación, pero el caché se " "encuentra habilitado para %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "utilizando una copia local de %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Espacio insuficiente en el directorio de descarga %s\n" " * libre %s\n" " * necesario %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "El encabezado no está completo." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "El encabezado no se encuentra en el caché local, y está habilitado el modo " "de solo cacheo. No es posible descargar %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "No se ha instalado la llave pública de %s " #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Problemas abriendo el paquete %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "La llave pública de %s no es confiable" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "El paquete %s no está firmado" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "No es posible eliminar %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s eliminado" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "No es posible eliminar %s archivo %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s archivo %s eliminado" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s archivos eliminados" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Más de una correspondencia exacta en el saco para %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Nada se corresponde con %s.%s %s:%s-%s desde la actualización" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() desaparecerá en alguna versión próxima de Yum. En su lugar " "utilice searchGenerator(). \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Buscando %d paquetes" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "buscando paquete %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "buscando en las entradas de archivo" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "buscando en las entradas \"provee\"" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "" "No existen datos de grupo disponibles en los repositorios configurados" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "No existe un grupo denominado %s" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "el paquete %s no fue marcado en el grupo %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Agregando paquete %s del grupo %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "No existe un paquete denominado %s disponible para ser instalado" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "Advertencia: Grupo %s no tiene ningun paquete." #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "El grupo %s tiene %u paquetes condicionales, que pueden instalarse." #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "La tupla %s de paquetes no pudo ser encontrada en el saco de paquetes" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "La tupla %s de paquetes no pudo ser encontrada en la base de datos" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "Bandera de versión inválida en: %s" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "No se ha encontrado ningún paquete para %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "El objeto de paquete no era una instancia de objeto de paquete" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "No se ha indicado nada para instalar" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Verificando la provision virtual o provision de archivo de %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "No hay nada concordante con el argumento: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "El paquete %s está instalado y no se encuentra disponible" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "No existe(n) paquete(s) disponible(s) para instalar" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Paquete: %s - ya se encuentra en un conjunto de transacción" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "El paquete %s se hace obsoleto con %s, que ya se encuentra instalado" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "El paquete %s se hace obsoleto con %s, pero el paquete que lo hace obsoleto " "no ofrece requerimientos" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "El paquete %s se hace obsoleto con %s, en su lugar se está intentando " "instalar %s" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "El paquete %s ya se encuentra instalado con su versión más reciente" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "El paquete concordante con %s ya se encuentra instalado. Verificando si " "puede actualizarse." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Actualizando todo" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "Dejando sin actualizar el paquete que ya es obsoleto: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "El paquete ya es obsoleto: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Dejando sin actualizar el paquete que ya es obsoleto: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" "Dejando sin actualizar el paquete que ya se encuentra actualizado: %s.%s " "%s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "No hay paquete correspondiente para ser eliminado" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Salteando el kernel en ejecución: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Eliminando %s de la transacción" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "No es posible abrir: %s. Ignorando." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Examinando %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" "No es posible realizar una instalación local de deltarpm: %s. Ignorando." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "No es posible añadir el paquete %s a la transacción. La arquitectura no es " "compatible: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "No es posible instalar el paquete %s. Se encuentra obsoleto debido al " "paquete instalado %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "El paquete %s no está instalado, no puede actualizarse. En su lugar, para " "instalarlo, ejecute el comando yum install." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" "Paquete %s. %s no instalado, no se puede actualizar. En su lugar, ejecute " "yum install para instalarlo" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Excluyendo %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Marcando %s para ser instalado" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Marcando %s como una actualización de %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: no actualiza el paquete instalado." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "No es posible abrir el archivo: %s. Ignorando." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "" "Problema al reinstalar: no existe ningún paquete concordante para eliminar" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Problema al reinstalar: no existe ningún paquete concordante con %s para " "instalar" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "No existe(n) paquete(s) disponible(s) para desactualizar" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "El paquete %s permite múltiples instalaciones, ignorando" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ninguna correspondencia disponible para el paquete: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Solo existe la posibilidad de actualizar el paquete: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Falló al desactualizar: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "Obteniendo clave desde %s" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "La obtención de la llave GPG ha fallado:" #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" "La firma de la clave GPG de %s no conincide con la clave CA del repositorio:" " %s" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "Clave GPG de firma verificada contra clave(s) CA" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Llave GPG no válida de %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "El análisis de la llave GPG ha fallado: la llave no posee valor %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" "Importando clave %s 0x%s:\n" " Id Usuario: %s\n" " Paquete: %s (%s)\n" " Desde: %s" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" "Importando clave %s 0x%s:\n" " Id Usuario: \"%s\"\n" " Desde: %s" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "La llave GPG de %s (0x%s) ya se encuentra instalada" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "La importación de la llave falló (código %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "La llave ha sido importada exitosamente" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "No instalar ninguna clave" #: ../yum/__init__.py:4680 #, 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 "" "Las llaves GPG listadas para el repositorio \"%s\" ya se encuentran instaladas, pero con este paquete no son correctas.\n" "Verifique que las URLs de la llave para este repositorio estén correctamente configuradas." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "" "La importación de la(s) llave(s) no funcionó, ¿llave(s) equivocada(s)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "La llave GPG de %s (0x%s) ya ha sido importada" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Falló la importación de la llave" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "No instalar ninguna clave para el repositorio %s" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "Las llaves GPG listadas para el repositorio \"%s\" ya se encuentran instaladas, pero no son correctas.\n" "Verifique que se encuentren correctamente configuradas las URLs de la llave para este repositorio." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "No es posible encontrar un espejo que funcione." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Fueron encontrados errores mientras los paquetes eran descargados." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Por favor, informe este error en %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Errores de la prueba de transacción:" #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "No se ha podido definir un directorio de chaché: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" "Dependencias no resueltas. No se guardarán las transacciónes no resuletas." #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "No se puedo guardar el archivo de transacciones %s: %s" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "No se puede acceder/leer el archivo guardado de transacción %s: %s" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "versión de rpmdb no coincide con versión de transacción guardada, " #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr " ignorando, como fue requerido." #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr " abortando." #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "no se puede encontrar tsflags o tsflags no es un entero." #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "Encontrado txmbr en estado actual desconocido: %s" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "No se pudo encontrar txmbr: %s en estado %s" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "No se pudo encontrar txmbr: %s del origen:%s" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" "Están faltando los miembros de la transacción y sus relaciones, o ts fue " "modificada," #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr " ignorando, a pedido. ¡Debe resolver dependencias nuevamente!" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Complementos cargados:" #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "No hay un complemento que se corresponda con: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "" "El complemento \"%s\" no será cargado, puesto que se encuentra deshabilitado" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "El complemento \"%s\" no puede ser importado" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "El complemento \"%s\" no especifica la versión de API requerida" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "El complemento \"%s\" requiere el API %s. El API soportado es %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Cargando el complemento \"%s\"" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "Existen dos o más complementos con el nombre \"%s\", en la ruta de búsqueda " "de complementos " #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "No se encuentra el archivo de configuración %s" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "" "No es posible encontrar el archivo de configuración para el complemento %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registro de comando no soportado" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "no se encuentran necesita de" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "se ha instalado choca con" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s es uin duplicado con %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s hace obsoleto a %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s ofrece %s, pero no puede ser encontrado" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Reempaquetando" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "El encabezado no puede abrirse, o no se corresponde con %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "El RPM %s ha fallado la verificación md5" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "No es posible abrir la base de datos de RPM para su lectura. ¿Tal vez se " "encuentre en uso?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Se obtuvo un encabezado vacío, algo ha salido mal" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Encabezado %s dañado" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Error al abrir el rpm %s - error %s" yum-3.4.3/po/hu.po0000664000076400007640000023646711602434452012742 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # András Bögöly , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Hungarian (http://www.transifex.net/projects/p/yum/team/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Frissítés" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Törlés" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Telepítés" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Elévült" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Frissítve" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Törölve" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Telepítve" #: ../callback.py:130 msgid "No header - huh?" msgstr "Hiányzik a fejléc - hm?" #: ../callback.py:168 msgid "Repackage" msgstr "Újracsomagolás" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Hiba: érvénytelen kimeneti állapot: %s %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Eltávolítva: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Eltávolítás" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Tisztítás" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "A(z) \"%s\" nevű parancs már létezik" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Tárolók beállítása" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Tárolók metaadatainak beolvasása helyi fájlokból" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Beállítási hiba: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Opció hiba: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Telepítve : %s-%s at %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Létrehozva: %s at %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Hozzáadva: %s at %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Egy parancs megadása szükségeltetik" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Nincs ilyen parancs: %s. Kérjük használja a következÅ‘t: %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Szükséges hely:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr "" " Legalább %dMB-tal több helyre van szükség az alábbi fájlrendszeren: %s\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Hiba összegzés\n" "-------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "" "A tranzakciót megpróbáltuk végrehajtani, de nincs semmi tennivaló. Kilépünk." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Felhasználói parancs miatt kilépés." #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Csomagok letöltése:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Hiba ezen csomagok letöltésekor:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "Tranzakció-ellenÅ‘rzés futtatása" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "HIBA frissíteni kell az rpmet, hogy kezeljük:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "HIBA a tranzakció ellenÅ‘rzés- és függÅ‘ségfeloldásnál:" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM frissítésére van szükség" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Kérem jelentse ezt a hibát a következÅ‘ben: %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Tranzakció teszt futtatása" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Tranzakció hibaellenÅ‘rzése:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "A Tranzakció teszt sikeres" #: ../cli.py:600 msgid "Running Transaction" msgstr "Tranzakció futtatása" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Felügyelet nélküli futás közben kulcsok nem importálhatóak.\n" "Használjuk az \"-y\" kapcsolót a felülbíráláshoz." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr "* Lehet, hogy erre gondolt:" #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "A(z) %s%s%s elérhetÅ‘, de nincs telepítve." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Nincs ilyen csomag: %s%s%s." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "TelepítendÅ‘ csomagok" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Nincs tennivaló" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d csomag kijelölve frissítésre" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Nincs csomag kijelölve frissítésre" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d csomag van kijelölve Disztribúció Szinkronizáláshoz" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Nincs csomag kijelölve Disztribúció Szinkronizáláshoz" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d csomag van kijelölve eltávolításra" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Nincs csomag kijelölve eltávolításra" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Visszaállítandó csomagok" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr "(ebbÅ‘l: %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "A következÅ‘ telepített csomag nem elérhetÅ‘: %s%s%s%s" #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "ÚjratelepítendÅ‘ csomagok" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Nem találhatóak csomagok" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "N/S Megegyezett: %s" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Találat: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Figyelem: Nincs találat a következÅ‘nél: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Nincsenek találatok" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Nem találhatóak csomagok a következÅ‘re: %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Tárolók tisztítása" #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Minden tisztítása" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Fejlécek tisztítása" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Csomagok tisztítása" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "xml metaadat tisztítása" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Adatbázis-gyorsítótár tisztítása" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Elévülési gyorsítótár tisztítása" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Gyorsítótárazott rpmdb adatok tisztítása" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "BÅ‘vítmények tisztítása" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "Figyelem: Egy csoport sem azonos a következÅ‘vel: %s" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Telepített csoportok:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "Telepített nyelvi csoportok:" #: ../cli.py:1276 msgid "Available Groups:" msgstr "ElérhetÅ‘ csoportok:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "ElérhetÅ‘ nyelvi csoportok:" #: ../cli.py:1285 msgid "Done" msgstr "Kész" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Figyelem: Az alábbi csoport nem létezik: %s" #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "Nincs telepítendÅ‘ vagy frissítendÅ‘ csomag a kiválasztott csoportokból" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d TelepítendÅ‘ csomag" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Nincs ilyen csoport: %s" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Nincs szükség csomag eltávolítására csoportokból" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d Eltávolítandó csomag" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "A(z) %s nevű csomag már telepítve van, ezért továbblépünk." #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Megválunk a következÅ‘tÅ‘l: pkg %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "Nincs más %s telepítve, ezért hozzáadjuk a listához." #: ../cli.py:1443 msgid "Plugin Options" msgstr "BÅ‘vítmény beállítások" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Parancssori hiba a következÅ‘ben: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s opciónak szüksége van egy argumentumra" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--Szín egyikét veszi fel: auto, mindig, soha" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "ezen segítség mutatása" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "a hibák figyelmen kívül hagyása" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "" "futtatás a rendszer gyorsítótárából anélkül, hogy a csomagok vagy " "tárolóinformációk frissítve lennének" #: ../cli.py:1652 msgid "config file location" msgstr "konfigurációs fájl elérésí útja" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "leghosszabb várakozási idÅ‘ meghatározása" #: ../cli.py:1657 msgid "debugging output level" msgstr "a hibakeresés szintje" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "ismétlÅ‘dések mutatása a tárolókban és a keresési parancsokban" #: ../cli.py:1663 msgid "error output level" msgstr "hiba kimeneti szintje" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "rpm hibakeresÅ‘ szint" #: ../cli.py:1669 msgid "quiet operation" msgstr "csendes működés" #: ../cli.py:1671 msgid "verbose operation" msgstr "visszajelzés működés közben" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "igennel válaszol minden felmerülÅ‘ kérdésre" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "Yum verziójának mutatása és kilépés" #: ../cli.py:1676 msgid "set install root" msgstr "telepítési root beállítása" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "" "egy vagy több tároló engedélyezése (helyettesítÅ‘ karakterek megengedettek)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "egy vagy több tároló tiltása (helyettesítÅ‘ karakterek megengedettek)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "csomagok kizárása név vagy glob szerint" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "kizárás letiltása alapkomponensre, tárolókra ill. bármire" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "elavult komponensek feldolgozásának engedélyezése" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "Yum bÅ‘vítmények tiltása" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "gpg-aláírás ellenÅ‘rzés kihagyása" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "bÅ‘vítmények tiltása név szerint" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "bÅ‘vítmények engedélyezése név szerint" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "azon csomagok átugrása, melyeknek függÅ‘ségi problémáik vannak" #: ../cli.py:1706 msgid "control whether color is used" msgstr "szín használatának befolyásolása" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "az alábbi érték beállítása a yum tároló és konfigurációs fájljaiban: " "$releasever" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "tetszÅ‘leges konfiguráció- és tárolóbeállítások" #: ../output.py:307 msgid "Jan" msgstr "jan." #: ../output.py:307 msgid "Feb" msgstr "feb." #: ../output.py:307 msgid "Mar" msgstr "márc." #: ../output.py:307 msgid "Apr" msgstr "ápr." #: ../output.py:307 msgid "May" msgstr "máj." #: ../output.py:307 msgid "Jun" msgstr "jún." #: ../output.py:308 msgid "Jul" msgstr "júl." #: ../output.py:308 msgid "Aug" msgstr "aug." #: ../output.py:308 msgid "Sep" msgstr "szept." #: ../output.py:308 msgid "Oct" msgstr "okt." #: ../output.py:308 msgid "Nov" msgstr "nov." #: ../output.py:308 msgid "Dec" msgstr "dec." #: ../output.py:318 msgid "Trying other mirror." msgstr "Próbálkozás másik tükörszerverrÅ‘l." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Név : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arch : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoch : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Verzió : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Kiadás : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Méret : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Tároló : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Tárolóból : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "BeküldÅ‘ : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Beküldési idÅ‘: %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Kiállítási idÅ‘ : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Telepítési idÅ‘: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Telepítette: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Módosította : %s" #: ../output.py:612 msgid "Summary : " msgstr "Összegzés : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licenc : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Leírás : " #: ../output.py:684 msgid "y" msgstr "y" #: ../output.py:684 msgid "yes" msgstr "igen" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "nem" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Ez így jó? [y/N]" #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Csoport: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Csoport azonosító: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Leírás: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr " Nyelv: %s" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Szükséges csomagok:" #: ../output.py:791 msgid " Default Packages:" msgstr " Alapértelmezett csomagok:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Opcionális csomagok:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Feltételes csomagok:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "csomag: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Ezen csomaghoz nincs függÅ‘ség" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " függÅ‘ség: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Teljesítetlen függÅ‘ség" #: ../output.py:901 msgid "Matched from:" msgstr "Találat a következÅ‘tÅ‘l:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licenc : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Fájlnév : %s" #: ../output.py:923 msgid "Other : " msgstr "Egyéb : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Hiba történt a teljes letöltési méret számítása során" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Teljes méret: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Teljes letöltési méret: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Telepített méret: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Hiba történt a telepített méret számítása során" #: ../output.py:1039 msgid "Reinstalling" msgstr "Újratelepítés" #: ../output.py:1040 msgid "Downgrading" msgstr "Visszaállítás" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Telepítés a függÅ‘ségeknek" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Frissítés a függÅ‘ségeknek" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Eltávolítás a függÅ‘ségeknek" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Kihagyva (függÅ‘ségi problémák)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Nem telepítve" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Csomag" #: ../output.py:1075 msgid "Arch" msgstr "Arch" #: ../output.py:1076 msgid "Version" msgstr "Verzió" #: ../output.py:1076 msgid "Repository" msgstr "Tároló" #: ../output.py:1077 msgid "Size" msgstr "Méret" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " lecserélés %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Tranzakció Összegzés\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "%5.5s csomag telepítése\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "%5.5s csomag frissítése\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "%5.5s csomag eltávolítása\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "%5.5s csomag újratelepítése\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "%5.5s csomag visszaállítva\n" #: ../output.py:1165 msgid "Removed" msgstr "Eltávolítva" #: ../output.py:1166 msgid "Dependency Removed" msgstr "FüggÅ‘ség Eltávolítva" #: ../output.py:1168 msgid "Dependency Installed" msgstr "FüggÅ‘ség Telepítve" #: ../output.py:1170 msgid "Dependency Updated" msgstr "FüggÅ‘ség Frissítve" #: ../output.py:1172 msgid "Replaced" msgstr "Lecserélve" #: ../output.py:1173 msgid "Failed" msgstr "Sikertelen" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "kettÅ‘" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" "A jelenlegi letöltés megszakítva, %s megszakítás (ctrl-c) mégegyszer %s, %s%s%s másodperc alatt\n" "a kilépéshez.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "Felhasználó által megszakítva" #: ../output.py:1300 msgid "Total" msgstr "Összesen" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "<üres>" #: ../output.py:1342 msgid "System" msgstr "Rendszer" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "Nincsenek tranzakciók" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "Rossz tranzakció azonosító vagy csomagnév lett megadva" #: ../output.py:1484 msgid "Command line" msgstr "Parancssor" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Felhasználó" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "azonosító" #: ../output.py:1489 msgid "Date and time" msgstr "Dátum és idÅ‘" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Művelet(ek)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Változtatta" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Nem lett megadva tranzakció azonosító" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "Rossz tranzakció azonosító lett megadva" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Nem található a megadott tranzakció azonosítója" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Több, mint egy tranzakció azonosító található!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Nem lett megadva tranzakció azonosító vagy csomag" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Visszaállítva" #: ../output.py:1688 msgid "Older" msgstr "Régebbi" #: ../output.py:1688 msgid "Newer" msgstr "Újabb" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Tranzakció azonosító:" #: ../output.py:1728 msgid "Begin time :" msgstr "Kezdés ideje :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "rpmdb kezdete:" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "(%u másodperc)" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "(%u perc)" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "(%u óra)" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "(%u nap)" #: ../output.py:1756 msgid "End time :" msgstr "Befejezés ideje:" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "rpmdb befejezése:" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Felhasználó :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Visszatérési érték:" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Megszakítva" #: ../output.py:1773 msgid "Failures:" msgstr "Hibák:" #: ../output.py:1777 msgid "Failure:" msgstr "Hiba:" #: ../output.py:1779 msgid "Success" msgstr "Siker" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Parancssor :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "További nem alapértelmezett információ lett eltárolva: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "A tranzakció lezajlott a következÅ‘vel:" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Módosított csomagok:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Kihagyott csomagok:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Rpmdb hibák:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scriptlet kimenet:" #: ../output.py:1831 msgid "Errors:" msgstr "Hibák:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Telepítés" #: ../output.py:1839 msgid "Dep-Install" msgstr "FüggÅ‘ség-Telepítés" #: ../output.py:1841 msgid "Obsoleting" msgstr "Elavulttá tevés" #: ../output.py:1842 msgid "Erase" msgstr "Törlés" #: ../output.py:1843 msgid "Reinstall" msgstr "Újratelepítés" #: ../output.py:1844 msgid "Downgrade" msgstr "Visszaállítás" #: ../output.py:1846 msgid "Update" msgstr "Frissítés" #: ../output.py:1909 msgid "Time" msgstr "IdÅ‘pont" #: ../output.py:1935 msgid "Last day" msgstr "1 napja" #: ../output.py:1936 msgid "Last week" msgstr "1 hete" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "2 hete" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "3 hónapja" #: ../output.py:1939 msgid "Last 6 months" msgstr "6 hónapja" #: ../output.py:1940 msgid "Last year" msgstr "1 éve" #: ../output.py:1941 msgid "Over a year ago" msgstr "Több, mint egy éve" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Nem található a következÅ‘ tranzakció: %s" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Tranzakció azonosító:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Rendelkezésre álló további információ az elÅ‘zményekrÅ‘l:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Nem található további adat erre a névre" #: ../output.py:2106 msgid "installed" msgstr "telepítve" #: ../output.py:2107 msgid "an update" msgstr "egy frissítés" #: ../output.py:2108 msgid "erased" msgstr "törölve" #: ../output.py:2109 msgid "reinstalled" msgstr "újratelepítve" #: ../output.py:2110 msgid "a downgrade" msgstr "egy visszaállítás" #: ../output.py:2111 msgid "obsoleting" msgstr "visszaállítás" #: ../output.py:2112 msgid "updated" msgstr "frissítve" #: ../output.py:2113 msgid "obsoleted" msgstr "elavult" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "---> A(z) %s.%s %s:%s-%s csomaggal a következÅ‘ történik: %s" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Tranzakció ellenÅ‘rzés futtatása" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> FüggÅ‘ségvizsgálat újraindítása az új változásokkal." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> A függÅ‘ségvizsgálat véget ért" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> A(z) %s függÅ‘ség feldolgozása a következÅ‘ csomaghoz: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Csomag megtartása: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Nem talált függÅ‘ség: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Csomag: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Megkövetel: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Nem található" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Frissítette" #: ../output.py:2197 msgid "Downgraded By" msgstr "Visszaállította" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Elavulttá tette" #: ../output.py:2216 msgid "Available" msgstr "ElérhetÅ‘" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Konfliktus feldolgozása: %s ellentétben áll: %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> A tranzakció feltöltése csomagokkal. Kis türelmet." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "" "---> A(z) %s fejlécének betöltése, hogy a tranzakcióhoz hozzáadhassuk." #: ../utils.py:99 msgid "Running" msgstr "Fut" #: ../utils.py:100 msgid "Sleeping" msgstr "Alszik" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Nem megszakítható" #: ../utils.py:102 msgid "Zombie" msgstr "Zombi" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Nyomozott/Megállított" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Ismeretlen" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " A másik alkalmazás: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " A másik alkalmazás: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Memória : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Elindítva: %s - %s" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Ãllapot : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Felhasználó által megszakítva" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Kilépés megtört csÅ‘ miatt (broken pipe)" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Egy másik alkalmazás használja a yum zárat, ezért kilépünk, ahogy be van " "állítva az exit_on_lock szerint" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "BÅ‘vítmény-Összeomlási Hiba: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum Hiba: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Hiba: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr " Próbálja meg használni --skip kapcsolót a probléma elkerüléséhez" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Próbálja meg futtatni: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Ismeretlen Hiba: Kilépési Kód: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "FüggÅ‘ségek Megtalálva" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Kész!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr " Használat:\n" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Csak a root felhasználó futtathatja ezt a parancsot." #: ../yumcommands.py:59 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" "Ön engedélyezte a csomagok GPG kulcs alapú ellenÅ‘rzését. Ez egy jó dolog.\n" "Viszont nem található egy GPG kulcs sem, ezért le kéne tölteni\n" "a csomagokhoz tartozó kulcsokat, és telepíteni Å‘ket.\n" "A következÅ‘ parancs segítségével végezheti ezt el:\n" " rpm --import public.gpg.key\n" "\n" "\n" "Akár megadhatja a használni kívánt url címét a kulcsnak a tárolóknál\n" "a 'gpgkey' opció alatt, így a yum telepíteni fogja majd önnek.\n" "\n" "További információért lépjen kapcsolatba a disztribúciójával ill. a csomagszolgáltatójával.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Hiba: Meg kell adni a csomagok listáját a következÅ‘höz: %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Hiba: egy elemnek legalább egyeznie kell" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Hiba: Szükség van legalább egy csoportra" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Hiba: a clean parancsnak szüksége van egy opcióra: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Hiba: helytelen clean argumentum: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Nincs argumentum a héj felé" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Fájlnév átadva a héjnak: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "A(z) %s nevű fájl nem létezÅ‘ argumentumot adott át a héjnak." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Hiba: több, mint egy fájl lett átadva argumentumként a héjnak." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Nincsenek engedélyezett tárolók.\n" "Futtassa a \"yum repolist all\" parancsot a tárolók listázásához.\n" "A következÅ‘ paranccsal engedélyezhet tárolót:\n" " yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "CSOMAG..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Csomag(ok) telepítése a rendszerre" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Telepítési folyamat megkezdése" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[CSOMAG...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Csomag(ok) frissítése a rendszeren" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Frissítési folyamat megkezdése" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Telepített csomagok szinkronizálása a legfrissebb verzióhoz" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Disztribúció szinkronizálási folyamat megkezdése" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Részletek megjelenítése egy csomagról vagy egy csomagcsoportról" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Telepített csomagok" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "ElérhetÅ‘ csomagok" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Extra csomagok" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Frissített csomagok" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Elavult csomagok" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Nemrégiben hozzáadott csomagok" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Nem található csomag" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Csomag vagy csomagcsoport listázása" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Csomag(ok) eltávolítása a rendszerbÅ‘l" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Eltávolítási folyamat megkezdése" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Csoport folyamat megkezdése" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Nem található csoport, amin futtatható a parancs" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "ElérhetÅ‘ Csomagcsoportok listázása" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Csoportban lévÅ‘ csomagok telepítése" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Csoportban lévÅ‘ csomagok eltávolítása" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Részletek megjelenítése egy csoportról" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Metaadat-gyorsítótár generálása" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Gyorsítótár készítése az összes metaadat fájlhoz." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "Ez eltarthat egy darabig a számítógép sebességétÅ‘l függÅ‘en" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Metaadat gyorsítótár létrehozva" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Gyorsítótárazott adat eltávolítása" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Megtalálja, mely csomag tartalmazza a megadott értéket" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Csomagfrissítések ellenÅ‘rzése" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Csomagrészletek keresése egy megadott szöveg alapján" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Csomagok keresése: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Csomagok frissítése az elavultakat is számításba véve" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Frissítési folyamat megkezdése" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Helyi RPM telepítése" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Helyi csomagolási folyamat megkezdése" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Megállapítja, melyik csomag tartalmazza a megadott függÅ‘séget" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "CsomagfüggÅ‘ségek keresése:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Interaktív yum shell futtatása" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Yum Shell indítása" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Egy csomag függÅ‘ségeinek listázása" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "FüggÅ‘ségek keresése: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Beállított szoftverforrások megjelenítése" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "engedélyezett" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "tiltott" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Tároló-azonosító: " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Tároló-név : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Tároló-állapot: " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Tároló-vizsgálat:" #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Tároló-címkék : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Tároló-diszt.-címkék: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Tároló-frissítve: " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Tároló-csomagok: " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Tároló-méret : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Tároló-baseurl: " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Tároló-metalink: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Frissítve : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Tároló-tükrök: " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Soha (utoljára: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Most (utoljára: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s másodperc (utoljára: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Tároló-lejárat: " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Tároló-kizárás:" #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Tároló-tartalmaz: " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Tároló-kizárt: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "tároló azon" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "állapot" #: ../yumcommands.py:1062 msgid "repo name" msgstr "tároló név" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Egy használati tipp mutatása" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Nincs súgó az alábbi témakörben: %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "alias-ok: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "ÚjratelepítÅ‘ folyamat indítása" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "egy csomag újratelepítése" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Visszaállítási folyamat indítása" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "egy csomag visszaállítása" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Verzió és/vagy elérhetÅ‘ tárolók megjelenítése" #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum verzió csoportok:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Csoport :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr "Csomagok:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Telepített:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Telepített csoport:" #: ../yumcommands.py:1312 msgid "Available:" msgstr "ElérhetÅ‘:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "ElérhetÅ‘ csoport:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Korábbi tranzakciók használata vagy megjelenítése" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Helytelen alparancs az elÅ‘zményekhez, használja a következÅ‘t: %s" #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Ön nem tudja elérni az elÅ‘zmények adatbázisát." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Hibák keresése az rpmdb-ben" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "egy elmentett tranzakció betöltése fájlnév alapján" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "" "Egy másik alkalmazás jelenleg használja a yum zárolást; várakozás annak " "kilépésére..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "FüggÅ‘ségek megállapítása" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Kilépés felhasználói megszakítás miatt." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "A doTsSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Tranzakciók indítása a konfigurációs osztályok felállása elÅ‘tt" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Hibás tsflag a következÅ‘ konfigurációs fájlban: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Keresés a pkgSack-ben függÅ‘ség után: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Tag: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "A(z) %s át lett konvertálva telepítéshez" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "A(z) %s nevű csomag hozzáadása %s módban" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "A következÅ‘ csomag eltávolítása: %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "A(z) %s megköveteli a következÅ‘ket: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "A(z) %s megköveteli a következÅ‘t: %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "A szükséges dolognak már utánanéztek, lecsaljuk" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "A megkövetelt dolog nem csomag, ezért utánanézünk: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Lehetséges Szolgáltató: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "A mód %s a(z) %s kiszolgáló felé: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "A(z) %s nevű csomag szolgáltatásának módja: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: A(z) %s nevű csomaghoz szükséges a(z) %s törlése" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: %s lecserélése függÅ‘ség miatt a következÅ‘re: %s." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: %s frissítése függÅ‘ség miatt." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Nem található frissítési útvonal a következÅ‘höz: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "A(z) %s követelménye %s (gyors találattal)" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "" "%s az ellátandó csomagoknál található, bár telepítve van, ezért " "eltávolítjuk." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "" "A lehetséges %s nevű csomag már újabb verzióval szerepel a tranzakcióban." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "A lehetséges %s nevű csomagból már újabb verzió van telepítve." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "A(z) %s már szerepel a tranzakcióban, kihagyás" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: %s bejelölése a(z) %s frissítéseként" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: A(z) %s telepítésre való bejelölése a következÅ‘höz: %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Siker - üres tranzakció" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Folyamat újraindítása" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "FüggÅ‘ségkezelÅ‘ folyamat végetért" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Siker - függÅ‘ségek megoldva" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "FüggÅ‘ségek keresése a következÅ‘re: %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "A(z) %s keresése, mint a(z) %s szükséglete." #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "A compare_providers() parancs futtatása a következÅ‘höz: %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "Jobb architektúra a következÅ‘ben: %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "A(z) %s már újabb, mint a(z) %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "archdist osszehasonlítva %s a következÅ‘höz: %s a következÅ‘n: %s\n" " Nyertes: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "gyakori forrásrpm %s és %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "legjobb %s nevű csomag telepítve van a következÅ‘höz: %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "gyakori elÅ‘tag a következÅ‘re: %s, %s és %s között" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "minimum szükséges: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Nyertes: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Vesztes(ezzel: %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Legjobb sorrend: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "A doConfigSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "%r tároló: Hiba a konfigurációs fájl elemzése során: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "" "A %r tárolónak hiányzik a neve a konfigurációban, ezért azonosítót " "használunk." #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "a bÅ‘vítmények már betöltÅ‘dtek" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "A doRpmDBSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Helyi RPMDB beolvasása" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "A doRepoSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "A doSackSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Tárolók csomagjainak elÅ‘készítése" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "A következÅ‘ tárolóobjektumból hiányzik a _resetSack metódus: %s\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "ezért ezt a tárolót nem lehet visszaállítani.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "A doUpdateSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Frissítési objektum létrehozása" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "A doGroupSetup() már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Csoport metaadatok beszerzése" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Csoportfájl hozzáadása a következÅ‘ tárolóból: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Sikertelen a csoportfájl hozzáadása a következÅ‘ tárolónál: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Nincsenek elérhetÅ‘ csoportok egy tárolóban sem" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "pkgtags metaadatok beszerzése" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Címkék hozzáadása a következÅ‘ tárolóból: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Sikertelen a címkék hozzáadása a következÅ‘ tárolóból:%s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "További fájllista információk importálása" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "A következÅ‘ program megtalálható a yum-utils csomagban: %s%s%s" #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Félbehagyott tranzakciók találhatóak. Ha be kívánja azokat fejezni, " "használja a yum-complete-transaction parancsot." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Próbálkozás a(z) \"%s\" eltávolításával, ami védett" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Az alábbi csomagok ki lettek hagyva függÅ‘ségi problémák miatt:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s a következÅ‘bÅ‘l: %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** %d már meglévÅ‘ rpmdb probléma található, 'yum check' kimenet pedig a " "következÅ‘:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Figyelem: RPMDB a yumon kívülrÅ‘l lett megváltoztatva." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "követelmények hiányoznak" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "konfliktusokat teremtett" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Figyelem: scriptlet vagy egyéb nem végzetes hiba adódott a tranzakció során." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "A tranzakció nem indítható:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Tranzakció futtatása meghiúsult." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "A következÅ‘ tranzakció-fájl eltávolítása meghiúsult: %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "" "A(z) %s nevű csomagnak már telepítve kellett volna lennie, habár nincs." #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "" "A(z) %s nevű csomagok már el kellett volna távolítani, habár ez még nem " "történt meg." #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "A zárolás feloldása nem lehetséges: %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Nem lehetséges az ellenÅ‘rzés, ha a %s PID aktív" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "Már le van zárva %s: egy másik példány fut a következÅ‘ pid-vel: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Nem zárható le a következÅ‘: %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "A csomag nem egyezik a várt letöltéssel. Ajánlott futtatni az alábbi parancsot:\n" "yum --enablerepo=%s clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "EllenÅ‘rzőösszeg végrehajtása nem lehetséges" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "A csomag nem egyezik az ellenÅ‘rzőösszeggel" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "" "A csomag nem egyezik az ellenÅ‘rzőösszeggel, de a gyorsítótárazás " "engedélyezett a következÅ‘höz: %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "helyi másolat használata a következÅ‘höz: %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Nincs elég hely a letöltési könyvtárban: %s\n" " * szabad %s\n" " * szükséges %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "A fejléc nem teljes." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "A fejléc nem található meg a helyi gyorsítótárban és a \"csak " "gyorsítótárazás\" mód be van kapcsolva. Nem tölthetÅ‘ le a következÅ‘: %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "A publikus kulcs nincs telepítve a következÅ‘höz: %s" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Hiba a következÅ‘ csomag megnyitásánál: %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "A publikus kulcs nem megbízható a következÅ‘höz: %s" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "A következÅ‘ csomag nincs aláírva: %s" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Nem távolítható el: %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s eltávolítva" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Nem távolítható el a %s nevű fájl: %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s fájl %s eltávolította" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s fájl eltávolítva" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Több, mint egy azonos találat a tömbben a következÅ‘re: %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Semmi sem egyezik a következÅ‘vel: %s.%s %s:%s-%s a frissítésbÅ‘l" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "A searchPackages() parancs már nem lesz elérhetÅ‘ a késÅ‘bbi Yum verziókban.\n" "Kérjük, inkább használja a searchGenerator() parancsot helyette.\n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "%d csomag keresése" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "A következÅ‘ csomag keresése: %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "Keresés fájlbejegyzésekben" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "Keresés ellátási bejegyzésekben" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Nincsenek elérhetÅ‘ csoportadatok a beállított tárolókban" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Nincs %s nevű csoport" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "A(z) %s nevű csomag nem lett bejelölve a következÅ‘ csoportban: %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "A(z) %s nevű csomag hozzáadás a következÅ‘ csoportból: %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Nincs telepíthetÅ‘ csomag %s néven." #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "A csomagtömbben nem található leíró a következÅ‘re: %s" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Az rpmdb nem tartalmaz csomagleírót a következÅ‘re: %s" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Nem található csomag a következÅ‘re: %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "A Csomag Objektum nem egy csomag-objektum példány" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Semmi sem lett megadva telepítésnek" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "" "Virtuális szolgáltatása vagy fájlszolgáltatás ellenÅ‘rzése a következÅ‘re: %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Nincs találat a következÅ‘ argumentumra: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "A(z) %s nevű csomag telepítve, bár nem érhetÅ‘ el" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Nincsenek elérhetÅ‘ csomagok telepítésre" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Csomag: %s - már szerepel a tranzakcióban" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "A csomag %s cserélve lett a következÅ‘re: %s, ami már telepítve van" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "A(z) %s nevű csomag már elavult a következÅ‘ miatt: %s, bár ez nem teljesíti " "a követelményeket" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "" "A(z) %s nevű csomag már elavult a következÅ‘ miatt: %s, próbálkozás inkább " "a(z) %s telepítésével" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "A(z) %s nevű csomag már a legfrissebb verzióval rendelkezik" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "A csomag, mely megegyezik a következÅ‘vel: %s, már telepítve van. Frissítések" " keresése." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Minden frissítése" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" "Azon csomagok nem lesznek frissítve, melyek már elavultak: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "A következÅ‘ csomag már elavult: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "A következÅ‘ elavult csomag nem lesz frissítve: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" "Azon csomagok nem lesznek frissítve, melyek már frissítve vannak: %s.%s " "%s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Nem található csomag eltávolításra" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "A futó kernel kihagyása: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "%s eltávolítása a tranzakcióból" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Nem nyitható meg a következÅ‘: %s. Kihagyás." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "%s felülvizsgálata: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "" "Nem lehet helyileg telepíteni a következÅ‘ deltarpm fájlt: %s. Kihagyás." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Nem lehet a(z) %s csomagot hozzáadni a tranzakcióhoz. Nincs kompatibilis " "architektúra: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "" "Nem lehet telepíteni a következÅ‘ csomagot: %s. Ez már elavultnak számít a " "ezen telepített csomag miatt: %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "A(z) %s nevű csomag már telepítve van, frissítése nem lehetséges. Kérjük, " "használja ehelyett a yum install parancsot a telepítéséhez." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "%s kizárása" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "%s megjelölése telepítésre" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "%s megjelölése, mint %s frissítése" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s: nem frissíti a telepített csomagot." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Nem nyitható meg a következÅ‘ fájl: %s. Kihagyás." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Probléma az újratelepítésnél: egy csomag sem eltávolítandó" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "" "Probléma az újratelepítésnél: nem található %s nevű csomag telepítéshez" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Nincsenek elérhetÅ‘ csomagok visszaállításhoz" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "A(z) %s csomag többször is telepíthetÅ‘, kihagyás" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Nem található csomag a következÅ‘re: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Csak frissítés érhetÅ‘ el a következÅ‘ csomagnál: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Visszaállítás meghiúsult: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "GPG kulcs beszerzés meghiúsult: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Hibás GPG kulcs a következÅ‘bÅ‘l: %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "GPG kulcs elemzés meghiúsult: a kulcs nem tartalmaz értéket: %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "A következÅ‘ GPG kulcs már telepítve van: %s (0x%s)" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "A kulcs importálása meghiúsult (hibakód %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "A kulcs importálása sikeres" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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 "" "A GPG kulcsok a(z) \"%s\" nevű tárolóhoz már telepítve vannak, de nem jók ehhez a csomaghoz.\n" "Kérjük, ellenÅ‘rizze, hogy az URL címek helyesen vannak-e megadva ezen tárolóhoz." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "A kulcsok importálása nem segített, rossz kulcsok?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "A következÅ‘ GPG kulcs már telepítve van: %s (0x%s)" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "A kulcs importálása meghiúsult" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "A GPG kulcsok a(z) \"%s\" nevű tárolóhoz már telepítve vannak, de nem jók.\n" "Kérjük, ellenÅ‘rizze, hogy az URL címek helyesen vannak-e megadva ezen tárolóhoz." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Nem található megfelelÅ‘ tükörszerver." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Hiba történt a csomagok letöltése közben." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Kérjük, jelentse ezt a hibát a következÅ‘ címen: %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Tranzakció teszt hibák: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Gyorsítótár-mappa beállítása meghiúsult: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Betöltött bÅ‘vítmények: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Nem találhatóak bÅ‘vítmények a következÅ‘re: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "A(z) \"%s\" nevű bÅ‘vítmény betöltésének kihagyása, mert le van tiltva" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "A(z) \"%s\" nevű bÅ‘vítmény nem importálható" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "A(z) \"%s\" nevű bÅ‘vítmény nem felel meg a megkövetelt API verziónak" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "A(z) \"%s\" nevű bÅ‘vítmény megköveteli a %s APIt. Támogatott API: %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "A következÅ‘ bÅ‘vítmény betöltése: %s" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "KettÅ‘ vagy több plugin már léteik a keresési útvonalon a következÅ‘ néven: %s" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "A következÅ‘ konfigurációs fájl nem található: %s" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Nem található konfigurációs fájl a következÅ‘ bÅ‘vítményhez: %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "parancsok regisztrációja nem támogatott" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "hiányoznak követelmények" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "konfliktusokat teremtett" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s egy másolat a következÅ‘höz: %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s már elavult a következÅ‘ miatt: %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s ellátja a következÅ‘t: %s, de nem található" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Újracsomagolás" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "A fejléc nem nyitható meg, vagy nem található a következÅ‘: %s, %s" #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM %s md5 ellenÅ‘rzése hibát mutat" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Nem nyitható meg olvasásra az RPM adatbázis. ElképzelhetÅ‘, hogy már " "használatban van." #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Egy üres fejléc található, valami rossz történhett" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Sérült Fejléc %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Hiba a következÅ‘ rpm megnyitásánál: %s - hiba: %s" yum-3.4.3/po/POTFILES.in0000664000076400007640000000122711602434452013523 0ustar jamesjames[encoding: UTF-8] callback.py cli.py output.py shell.py utils.py yumcommands.py yummain.py yum-updatesd.py yum/callbacks.py yum/comps.py yum/config.py yum/constants.py yum/depsolve.py yum/Errors.py yum/failover.py yum/i18n.py yum/__init__.py yum/logginglevels.py yum/mdparser.py yum/metalink.py yum/misc.py yum/packageSack.py yum/packages.py yum/parser.py yum/pgpmsg.py yum/plugins.py yum/repoMDObject.py yum/repos.py yum/rpmsack.py yum/rpmtrans.py yum/sqlitesack.py yum/sqlutils.py yum/transactioninfo.py yum/update_md.py yum/yumRepo.py rpmUtils/arch.py rpmUtils/__init__.py rpmUtils/miscutils.py rpmUtils/oldUtils.py rpmUtils/transaction.py rpmUtils/updates.py yum-3.4.3/po/da.po0000664000076400007640000022704711602434452012704 0ustar jamesjames# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Kris Thomsen , 2011 msgid "" msgstr "" "Project-Id-Version: Yum\n" "Report-Msgid-Bugs-To: http://yum.baseurl.org/\n" "POT-Creation-Date: 2011-06-06 10:21-0400\n" "PO-Revision-Date: 2011-06-06 14:21+0000\n" "Last-Translator: skvidal \n" "Language-Team: Danish (http://www.transifex.net/projects/p/yum/team/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../callback.py:48 ../output.py:1037 ../yum/rpmtrans.py:73 msgid "Updating" msgstr "Opdaterer" #: ../callback.py:49 ../yum/rpmtrans.py:74 msgid "Erasing" msgstr "Sletter" #: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1036 #: ../output.py:2218 ../yum/rpmtrans.py:75 ../yum/rpmtrans.py:76 #: ../yum/rpmtrans.py:78 msgid "Installing" msgstr "Installerer" #: ../callback.py:52 ../callback.py:58 ../output.py:1840 ../yum/rpmtrans.py:77 msgid "Obsoleted" msgstr "Overflødiggjort" #: ../callback.py:54 ../output.py:1169 ../output.py:1686 ../output.py:1847 msgid "Updated" msgstr "Opdateret" #: ../callback.py:55 ../output.py:1685 msgid "Erased" msgstr "Slettet" #: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1167 #: ../output.py:1685 ../output.py:1687 ../output.py:2190 msgid "Installed" msgstr "Installeret" #: ../callback.py:130 msgid "No header - huh?" msgstr "Ingen header - meget mystisk" #: ../callback.py:168 msgid "Repackage" msgstr "Genpakning" #: ../callback.py:189 #, python-format msgid "Error: invalid output state: %s for %s" msgstr "Error: ugyldig uddatastatus: %s for %s" #: ../callback.py:212 #, python-format msgid "Erased: %s" msgstr "Slettet: %s" #: ../callback.py:217 ../output.py:1038 ../output.py:2193 msgid "Removing" msgstr "Fjerner" #: ../callback.py:219 ../yum/rpmtrans.py:79 msgid "Cleanup" msgstr "Oprydning af" #: ../cli.py:115 #, python-format msgid "Command \"%s\" already defined" msgstr "Kommandoen \"%s\" er allerede defineret" #: ../cli.py:127 msgid "Setting up repositories" msgstr "Indstiller pakkearkiver" #: ../cli.py:138 msgid "Reading repository metadata in from local files" msgstr "Læser pakkearkiv for metadata fra lokale filer" #: ../cli.py:245 ../utils.py:281 #, python-format msgid "Config Error: %s" msgstr "Konfigurationsfejl: %s" #: ../cli.py:248 ../cli.py:1584 ../utils.py:284 #, python-format msgid "Options Error: %s" msgstr "Fejl i indstilling: %s" #: ../cli.py:293 #, python-format msgid " Installed: %s-%s at %s" msgstr " Installeret: %s-%s pÃ¥ %s" #: ../cli.py:295 #, python-format msgid " Built : %s at %s" msgstr " Bygget : %s pÃ¥ %s" #: ../cli.py:297 #, python-format msgid " Committed: %s at %s" msgstr " Indsendt: %s pÃ¥ %s" #: ../cli.py:336 msgid "You need to give some command" msgstr "Du skal angive en kommando" #: ../cli.py:350 #, python-format msgid "No such command: %s. Please use %s --help" msgstr "Ingen sÃ¥dan kommando: %s. Brug %s --help" #: ../cli.py:400 msgid "Disk Requirements:\n" msgstr "Behov for diskplads:\n" #: ../cli.py:402 #, python-format msgid " At least %dMB more space needed on the %s filesystem.\n" msgstr " Mindst %dMB mere plads er krævet pÃ¥ filsystemet %s.\n" #. TODO: simplify the dependency errors? #. Fixup the summary #: ../cli.py:407 msgid "" "Error Summary\n" "-------------\n" msgstr "" "Fejlopsummering\n" "---------------\n" #: ../cli.py:450 msgid "Trying to run the transaction but nothing to do. Exiting." msgstr "Forsøger at udføre overførslen, men der intet at udføre. Afslutter." #: ../cli.py:497 msgid "Exiting on user Command" msgstr "Afslutter efter brugerens ønske" #: ../cli.py:501 msgid "Downloading Packages:" msgstr "Henter pakker:" #: ../cli.py:506 msgid "Error Downloading Packages:\n" msgstr "Fejl ved hentning af pakker:\n" #: ../cli.py:525 ../yum/__init__.py:4967 msgid "Running Transaction Check" msgstr "" #: ../cli.py:534 ../yum/__init__.py:4976 msgid "ERROR You need to update rpm to handle:" msgstr "FEJL Du skal opdatere RPM for at hÃ¥ndtere:" #: ../cli.py:536 ../yum/__init__.py:4979 msgid "ERROR with transaction check vs depsolve:" msgstr "" #: ../cli.py:542 msgid "RPM needs to be updated" msgstr "RPM skal opdateres" #: ../cli.py:543 #, python-format msgid "Please report this error in %s" msgstr "Rapportér venligst denne fejl i %s" #: ../cli.py:549 msgid "Running Transaction Test" msgstr "Kører overførselstest" #: ../cli.py:561 msgid "Transaction Check Error:\n" msgstr "Fejl i overførselskontrol:\n" #: ../cli.py:568 msgid "Transaction Test Succeeded" msgstr "Overførselstest afsluttet uden fejl" #: ../cli.py:600 msgid "Running Transaction" msgstr "Kører overførsel" #: ../cli.py:630 msgid "" "Refusing to automatically import keys when running unattended.\n" "Use \"-y\" to override." msgstr "" "Afviser automatisk importering af nøgler ved baggrundskørsel.\n" "Brug \"-y\" til at overskrive." #: ../cli.py:649 ../cli.py:692 msgid " * Maybe you meant: " msgstr " * Du mente mÃ¥ske: " #: ../cli.py:675 ../cli.py:683 #, python-format msgid "Package(s) %s%s%s available, but not installed." msgstr "Pakke(r) %s%s%s tilgængelig(e), men ikke installeret." #: ../cli.py:689 ../cli.py:722 ../cli.py:908 #, python-format msgid "No package %s%s%s available." msgstr "Pakken %s%s%s er ikke tilgængelig." #: ../cli.py:729 ../cli.py:973 msgid "Package(s) to install" msgstr "Pakke(r) til installation" #: ../cli.py:732 ../cli.py:733 ../cli.py:914 ../cli.py:948 ../cli.py:974 #: ../yumcommands.py:190 msgid "Nothing to do" msgstr "Intet at udføre" #: ../cli.py:767 #, python-format msgid "%d packages marked for Update" msgstr "%d pakker markeret til opdatering" #: ../cli.py:770 msgid "No Packages marked for Update" msgstr "Ingen pakker markeret til opdatering" #: ../cli.py:866 #, python-format msgid "%d packages marked for Distribution Synchronization" msgstr "%d pakker er markeret til distributionssynkronisering" #: ../cli.py:869 msgid "No Packages marked for Distribution Synchronization" msgstr "Ingen pakker er markeret til distributionssynkronisering" #: ../cli.py:885 #, python-format msgid "%d packages marked for removal" msgstr "%d pakker markeret til fjernelse" #: ../cli.py:888 msgid "No Packages marked for removal" msgstr "Ingen pakker markeret til fjernelse" #: ../cli.py:913 msgid "Package(s) to downgrade" msgstr "Pakke(r) til nedgradering" #: ../cli.py:938 #, python-format msgid " (from %s)" msgstr " (fra %s)" #: ../cli.py:939 #, python-format msgid "Installed package %s%s%s%s not available." msgstr "Installeret pakke %s%s%s%s er ikke tilgængelig." #: ../cli.py:947 msgid "Package(s) to reinstall" msgstr "Pakke(r) til geninstallation" #: ../cli.py:960 msgid "No Packages Provided" msgstr "Ingen pakker angivet" #: ../cli.py:1058 #, python-format msgid "N/S Matched: %s" msgstr "" #: ../cli.py:1075 #, python-format msgid " Name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1077 #, python-format msgid "" " Full name and summary matches %sonly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1095 #, python-format msgid "Matched: %s" msgstr "Matchede: %s" #: ../cli.py:1102 #, python-format msgid " Name and summary matches %smostly%s, use \"search all\" for everything." msgstr "" #: ../cli.py:1106 #, python-format msgid "Warning: No matches found for: %s" msgstr "Advarsel: Ingen match blev fundet for: %s" #: ../cli.py:1109 msgid "No Matches found" msgstr "Ingen match fundet" #: ../cli.py:1174 #, python-format msgid "No Package Found for %s" msgstr "Ingen pakke fundet for %s" #: ../cli.py:1184 msgid "Cleaning repos: " msgstr "Oprydder pakkearkiver: " #: ../cli.py:1189 msgid "Cleaning up Everything" msgstr "Oprydning af alt" #: ../cli.py:1205 msgid "Cleaning up Headers" msgstr "Oprydning af headerfiler" #: ../cli.py:1208 msgid "Cleaning up Packages" msgstr "Oprydning af pakker" #: ../cli.py:1211 msgid "Cleaning up xml metadata" msgstr "Oprydning af xml-metadata" #: ../cli.py:1214 msgid "Cleaning up database cache" msgstr "Oprydning af mellemlager til database" #: ../cli.py:1217 msgid "Cleaning up expire-cache metadata" msgstr "Oprydning af udløbet mellemlager til metadata" #: ../cli.py:1220 msgid "Cleaning up cached rpmdb data" msgstr "Rydder mellemlagret rpmdb-data op" #: ../cli.py:1223 msgid "Cleaning up plugins" msgstr "Oprydning af udvidelsesmoduler" #: ../cli.py:1247 #, python-format msgid "Warning: No groups match: %s" msgstr "" #: ../cli.py:1264 msgid "Installed Groups:" msgstr "Installerede grupper:" #: ../cli.py:1270 msgid "Installed Language Groups:" msgstr "" #: ../cli.py:1276 msgid "Available Groups:" msgstr "Tilgængelige grupper:" #: ../cli.py:1282 msgid "Available Language Groups:" msgstr "" #: ../cli.py:1285 msgid "Done" msgstr "Afsluttet" #: ../cli.py:1296 ../cli.py:1314 ../cli.py:1320 ../yum/__init__.py:3313 #, python-format msgid "Warning: Group %s does not exist." msgstr "Advarsel: Gruppen %s findes ikke." #: ../cli.py:1324 msgid "No packages in any requested group available to install or update" msgstr "" "Ingen pakke i nogen de efterspurgte grupper, er tilgængelige til " "installation eller opdatering" #: ../cli.py:1326 #, python-format msgid "%d Package(s) to Install" msgstr "%d pakke(r) til installation" #: ../cli.py:1336 ../yum/__init__.py:3325 #, python-format msgid "No group named %s exists" msgstr "Gruppen %s findes ikke" #: ../cli.py:1342 msgid "No packages to remove from groups" msgstr "Ingen pakker at fjerne fra grupper" #: ../cli.py:1344 #, python-format msgid "%d Package(s) to remove" msgstr "%d pakke(r) til fjernelse" #: ../cli.py:1386 #, python-format msgid "Package %s is already installed, skipping" msgstr "Pakken %s er allerede installeret, springer over" #: ../cli.py:1397 #, python-format msgid "Discarding non-comparable pkg %s.%s" msgstr "Ser bort fra ikke-kompatibel pakke %s.%s" #. we've not got any installed that match n or n+a #: ../cli.py:1423 #, python-format msgid "No other %s installed, adding to list for potential install" msgstr "" "Ingen andre %s er installeret, tilføjer til liste til mulig installation" #: ../cli.py:1443 msgid "Plugin Options" msgstr "Indstillinger til udvidelsesmodul" #: ../cli.py:1451 #, python-format msgid "Command line error: %s" msgstr "Kommandoliniefejl: %s" #: ../cli.py:1467 #, python-format msgid "" "\n" "\n" "%s: %s option requires an argument" msgstr "" "\n" "\n" "%s: %s indstilling kræver et argument" #: ../cli.py:1521 msgid "--color takes one of: auto, always, never" msgstr "--color tager en af: auto, altid, aldrig" #. We have a relative installroot ... haha #: ../cli.py:1596 #, python-format msgid "--installroot must be an absolute path: %s" msgstr "" #: ../cli.py:1642 msgid "show this help message and exit" msgstr "vis denne hjælpemeddelse og afslut" #: ../cli.py:1646 msgid "be tolerant of errors" msgstr "vær fejltolerant" #: ../cli.py:1649 msgid "run entirely from system cache, don't update cache" msgstr "kør udelukkende fra systemmellemlager, opdatér ikke mellemlager" #: ../cli.py:1652 msgid "config file location" msgstr "placering af konfigurationsfil" #: ../cli.py:1655 msgid "maximum command wait time" msgstr "maksimal ventetid pÃ¥ kommando" #: ../cli.py:1657 msgid "debugging output level" msgstr "debug-visningsniveau" #: ../cli.py:1661 msgid "show duplicates, in repos, in list/search commands" msgstr "vis gengangere, i pakkearkiver, i list/search-kommandoer" #: ../cli.py:1663 msgid "error output level" msgstr "fejlvisningsniveau" #: ../cli.py:1666 msgid "debugging output level for rpm" msgstr "outputniveau for fejlsøgning af rpm" #: ../cli.py:1669 msgid "quiet operation" msgstr "stille operation" #: ../cli.py:1671 msgid "verbose operation" msgstr "uddybende operation" #: ../cli.py:1673 msgid "answer yes for all questions" msgstr "svar ja til alle spørgsmÃ¥l" #: ../cli.py:1675 msgid "show Yum version and exit" msgstr "vis Yum-version og afslut" #: ../cli.py:1676 msgid "set install root" msgstr "sæt installationsroden" #: ../cli.py:1680 msgid "enable one or more repositories (wildcards allowed)" msgstr "aktivér en eller flere pakkearkiver (wildcards er tilladt)" #: ../cli.py:1684 msgid "disable one or more repositories (wildcards allowed)" msgstr "deaktivér en eller flere pakkearkiver (wildcards er tilladt)" #: ../cli.py:1687 msgid "exclude package(s) by name or glob" msgstr "ekskludér pakke(r) med navn eller klump" #: ../cli.py:1689 msgid "disable exclude from main, for a repo or for everything" msgstr "deaktivér ekskludering fra main, for et pakkearkiv eller for alt" #: ../cli.py:1692 msgid "enable obsoletes processing during updates" msgstr "aktivér overflødiggørelse under behandling af opdateringer" #: ../cli.py:1694 msgid "disable Yum plugins" msgstr "deaktivér Yum-udvidelsesmoduler" #: ../cli.py:1696 msgid "disable gpg signature checking" msgstr "deaktivér kontrol af gpg-signaturer" #: ../cli.py:1698 msgid "disable plugins by name" msgstr "deaktivér udvidelsesmoduler ved navn" #: ../cli.py:1701 msgid "enable plugins by name" msgstr "aktivér udvidelsesmoduler ved navn" #: ../cli.py:1704 msgid "skip packages with depsolving problems" msgstr "spring pakker med afhængighedsproblemer over" #: ../cli.py:1706 msgid "control whether color is used" msgstr "kontrollér om farve er brugt" #: ../cli.py:1708 msgid "set value of $releasever in yum config and repo files" msgstr "" "indstil værdi for $releaseever i yum-konfiguration og pakkearkivsfiler" #: ../cli.py:1710 msgid "set arbitrary config and repo options" msgstr "indstil arbitrærkonfiguration og indstillinger for pakkearkiv" #: ../output.py:307 msgid "Jan" msgstr "Jan" #: ../output.py:307 msgid "Feb" msgstr "Feb" #: ../output.py:307 msgid "Mar" msgstr "Mar" #: ../output.py:307 msgid "Apr" msgstr "Apr" #: ../output.py:307 msgid "May" msgstr "Maj" #: ../output.py:307 msgid "Jun" msgstr "Jun" #: ../output.py:308 msgid "Jul" msgstr "Jul" #: ../output.py:308 msgid "Aug" msgstr "Aug" #: ../output.py:308 msgid "Sep" msgstr "Sep" #: ../output.py:308 msgid "Oct" msgstr "Okt" #: ../output.py:308 msgid "Nov" msgstr "Nov" #: ../output.py:308 msgid "Dec" msgstr "Dec" #: ../output.py:318 msgid "Trying other mirror." msgstr "Prøver et andet filspejl." #: ../output.py:581 #, python-format msgid "Name : %s%s%s" msgstr "Navn : %s%s%s" #: ../output.py:582 #, python-format msgid "Arch : %s" msgstr "Arkitektur : %s" #: ../output.py:584 #, python-format msgid "Epoch : %s" msgstr "Epoch : %s" #: ../output.py:585 #, python-format msgid "Version : %s" msgstr "Version : %s" #: ../output.py:586 #, python-format msgid "Release : %s" msgstr "Udgivelse : %s" #: ../output.py:587 #, python-format msgid "Size : %s" msgstr "Størrelse : %s" #: ../output.py:588 ../output.py:900 #, python-format msgid "Repo : %s" msgstr "Kilde : %s" #: ../output.py:590 #, python-format msgid "From repo : %s" msgstr "Fra pakkearkiv : %s" #: ../output.py:592 #, python-format msgid "Committer : %s" msgstr "Tilføjer : %s" #: ../output.py:593 #, python-format msgid "Committime : %s" msgstr "Tilføjelsestidspunkt : %s" #: ../output.py:594 #, python-format msgid "Buildtime : %s" msgstr "Bygningstidspunkt : %s" #: ../output.py:596 #, python-format msgid "Install time: %s" msgstr "Installationstid: %s" #: ../output.py:604 #, python-format msgid "Installed by: %s" msgstr "Installeret af: %s" #: ../output.py:611 #, python-format msgid "Changed by : %s" msgstr "Ændret af : %s" #: ../output.py:612 msgid "Summary : " msgstr "Beskrivelse : " #: ../output.py:614 ../output.py:913 #, python-format msgid "URL : %s" msgstr "URL : %s" #: ../output.py:615 msgid "License : " msgstr "Licens : " #: ../output.py:616 ../output.py:910 msgid "Description : " msgstr "Beskrivelse : " #: ../output.py:684 msgid "y" msgstr "j" #: ../output.py:684 msgid "yes" msgstr "ja" #: ../output.py:685 msgid "n" msgstr "n" #: ../output.py:685 msgid "no" msgstr "nej" #: ../output.py:689 msgid "Is this ok [y/N]: " msgstr "Er dette o.k? [j/N]: " #: ../output.py:777 #, python-format msgid "" "\n" "Group: %s" msgstr "" "\n" "Gruppe: %s" #: ../output.py:781 #, python-format msgid " Group-Id: %s" msgstr " Gruppeid: %s" #: ../output.py:786 #, python-format msgid " Description: %s" msgstr " Beskrivelse: %s" #: ../output.py:788 #, python-format msgid " Language: %s" msgstr "" #: ../output.py:790 msgid " Mandatory Packages:" msgstr " Tvungne pakker:" #: ../output.py:791 msgid " Default Packages:" msgstr " Standardpakker:" #: ../output.py:792 msgid " Optional Packages:" msgstr " Valgfrie pakker:" #: ../output.py:793 msgid " Conditional Packages:" msgstr " Afhængige pakker:" #: ../output.py:814 #, python-format msgid "package: %s" msgstr "pakke: %s" #: ../output.py:816 msgid " No dependencies for this package" msgstr " Ingen afhængigheder for denne pakke" #: ../output.py:821 #, python-format msgid " dependency: %s" msgstr " afhængighed: %s" #: ../output.py:823 msgid " Unsatisfied dependency" msgstr " Ufuldendt afhængighed" #: ../output.py:901 msgid "Matched from:" msgstr "Matchet af:" #: ../output.py:916 #, python-format msgid "License : %s" msgstr "Licens : %s" #: ../output.py:919 #, python-format msgid "Filename : %s" msgstr "Filnavn : %s" #: ../output.py:923 msgid "Other : " msgstr "Andre : " #: ../output.py:966 msgid "There was an error calculating total download size" msgstr "Der opstod en fejl i beregning af den totale nedhentningsstørrelse" #: ../output.py:971 #, python-format msgid "Total size: %s" msgstr "Total størrelse: %s" #: ../output.py:974 #, python-format msgid "Total download size: %s" msgstr "Total nedhentningsstørrelse: %s" #: ../output.py:978 ../output.py:998 #, python-format msgid "Installed size: %s" msgstr "Installationsstørrelse: %s" #: ../output.py:994 msgid "There was an error calculating installed size" msgstr "Der opstod en fejl ved udregning af installeret størrelse" #: ../output.py:1039 msgid "Reinstalling" msgstr "Geninstallerer" #: ../output.py:1040 msgid "Downgrading" msgstr "Nedgraderer" #: ../output.py:1041 msgid "Installing for dependencies" msgstr "Installerer til afhængigheder" #: ../output.py:1042 msgid "Updating for dependencies" msgstr "Opdaterer til afhængigheder" #: ../output.py:1043 msgid "Removing for dependencies" msgstr "Fjerner for afhængigheder" #: ../output.py:1050 ../output.py:1171 msgid "Skipped (dependency problems)" msgstr "Sprunget over (afhængighedsproblemer)" #: ../output.py:1052 ../output.py:1687 msgid "Not installed" msgstr "Ikke installeret" #: ../output.py:1053 msgid "Not available" msgstr "" #: ../output.py:1075 ../output.py:2024 msgid "Package" msgstr "Pakke" #: ../output.py:1075 msgid "Arch" msgstr "Arkitektur" #: ../output.py:1076 msgid "Version" msgstr "Version" #: ../output.py:1076 msgid "Repository" msgstr "Pakkearkiv" #: ../output.py:1077 msgid "Size" msgstr "Størrelse" #: ../output.py:1089 #, python-format msgid " replacing %s%s%s.%s %s\n" msgstr " erstatter %s%s%s.%s %s\n" #: ../output.py:1098 #, python-format msgid "" "\n" "Transaction Summary\n" "%s\n" msgstr "" "\n" "Overførselsopsummering\n" "%s\n" #: ../output.py:1109 #, python-format msgid "Install %5.5s Package(s)\n" msgstr "Installér %5.5s pakke(r)\n" #: ../output.py:1113 #, python-format msgid "Upgrade %5.5s Package(s)\n" msgstr "Opgradér %5.5s pakke(r)\n" #: ../output.py:1117 #, python-format msgid "Remove %5.5s Package(s)\n" msgstr "Fjern %5.5s pakke(r)\n" #: ../output.py:1121 #, python-format msgid "Reinstall %5.5s Package(s)\n" msgstr "Geninstallér %5.5s pakke(r)\n" #: ../output.py:1125 #, python-format msgid "Downgrade %5.5s Package(s)\n" msgstr "Nedgradér %5.5s pakke(r)\n" #: ../output.py:1165 msgid "Removed" msgstr "Fjernet" #: ../output.py:1166 msgid "Dependency Removed" msgstr "Afhængighed fjernet" #: ../output.py:1168 msgid "Dependency Installed" msgstr "Afhængighed installeret" #: ../output.py:1170 msgid "Dependency Updated" msgstr "Afhængighed opdateret" #: ../output.py:1172 msgid "Replaced" msgstr "Erstattet" #: ../output.py:1173 msgid "Failed" msgstr "Fejlede" #. Delta between C-c's so we treat as exit #: ../output.py:1260 msgid "two" msgstr "to" #. 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:1271 #, python-format msgid "" "\n" " Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds\n" "to exit.\n" msgstr "" "\n" " Nuværende hentning afbrudt, %safbryd (ctrl-c) igen%s indenfor %s%s%s sekunder\n" "for at afslutte.\n" #: ../output.py:1282 msgid "user interrupt" msgstr "afsluttet af bruger" #: ../output.py:1300 msgid "Total" msgstr "Ialt" #: ../output.py:1322 msgid "I" msgstr "I" #: ../output.py:1323 msgid "O" msgstr "O" #: ../output.py:1324 msgid "E" msgstr "E" #: ../output.py:1325 msgid "R" msgstr "R" #: ../output.py:1326 msgid "D" msgstr "D" #: ../output.py:1327 msgid "U" msgstr "U" #: ../output.py:1341 msgid "" msgstr "" #: ../output.py:1342 msgid "System" msgstr "System" #: ../output.py:1411 #, python-format msgid "Skipping merged transaction %d to %d, as it overlaps" msgstr "" #: ../output.py:1421 ../output.py:1592 msgid "No transactions" msgstr "" #: ../output.py:1446 ../output.py:2013 msgid "Bad transaction IDs, or package(s), given" msgstr "DÃ¥rlige overførsels-id'er eller pakker givet" #: ../output.py:1484 msgid "Command line" msgstr "" #: ../output.py:1486 ../output.py:1908 msgid "Login user" msgstr "Log bruger ind" #. REALLY Needs to use columns! #: ../output.py:1487 ../output.py:2022 msgid "ID" msgstr "ID" #: ../output.py:1489 msgid "Date and time" msgstr "Dato og tid" #: ../output.py:1490 ../output.py:1910 ../output.py:2023 msgid "Action(s)" msgstr "Handling(er)" #: ../output.py:1491 ../output.py:1911 msgid "Altered" msgstr "Ændret" #: ../output.py:1538 msgid "No transaction ID given" msgstr "Intet overførsels-id givet" #: ../output.py:1564 ../output.py:1972 msgid "Bad transaction ID given" msgstr "DÃ¥rlig overførsels-id givet" #: ../output.py:1569 msgid "Not found given transaction ID" msgstr "Det angivne overførsels-id ikke fundet" #: ../output.py:1577 msgid "Found more than one transaction ID!" msgstr "Fandt mere end ét overførsels-id!" #: ../output.py:1618 ../output.py:1980 msgid "No transaction ID, or package, given" msgstr "Intet overførsels-id eller pakke givet" #: ../output.py:1686 ../output.py:1845 msgid "Downgraded" msgstr "Nedgraderet" #: ../output.py:1688 msgid "Older" msgstr "Ældre" #: ../output.py:1688 msgid "Newer" msgstr "Nyere" #: ../output.py:1724 ../output.py:1726 msgid "Transaction ID :" msgstr "Overførsels-id:" #: ../output.py:1728 msgid "Begin time :" msgstr "Starttidspunkt :" #: ../output.py:1731 ../output.py:1733 msgid "Begin rpmdb :" msgstr "Start rpmdb :" #: ../output.py:1749 #, python-format msgid "(%u seconds)" msgstr "" #: ../output.py:1751 #, python-format msgid "(%u minutes)" msgstr "" #: ../output.py:1753 #, python-format msgid "(%u hours)" msgstr "" #: ../output.py:1755 #, python-format msgid "(%u days)" msgstr "" #: ../output.py:1756 msgid "End time :" msgstr "Sluttidspunkt :" #: ../output.py:1759 ../output.py:1761 msgid "End rpmdb :" msgstr "Slut rpmdb :" #: ../output.py:1764 ../output.py:1766 msgid "User :" msgstr "Bruger :" #: ../output.py:1770 ../output.py:1773 ../output.py:1775 ../output.py:1777 #: ../output.py:1779 msgid "Return-Code :" msgstr "Returkode :" #: ../output.py:1770 ../output.py:1775 msgid "Aborted" msgstr "Afbrudt" #: ../output.py:1773 msgid "Failures:" msgstr "" #: ../output.py:1777 msgid "Failure:" msgstr "Fejl:" #: ../output.py:1779 msgid "Success" msgstr "Succes" #: ../output.py:1784 ../output.py:1786 msgid "Command Line :" msgstr "Kommandolinje :" #: ../output.py:1795 #, python-format msgid "Additional non-default information stored: %d" msgstr "Yderligere ikke-standard information gemt: %d" #. This is _possible_, but not common #: ../output.py:1800 msgid "Transaction performed with:" msgstr "Overførsel udført med" #: ../output.py:1804 msgid "Packages Altered:" msgstr "Pakker ændret:" #: ../output.py:1808 msgid "Packages Skipped:" msgstr "Pakker sprunget over:" #: ../output.py:1814 msgid "Rpmdb Problems:" msgstr "Problemer med rpmdb:" #: ../output.py:1825 msgid "Scriptlet output:" msgstr "Scriptletoutput:" #: ../output.py:1831 msgid "Errors:" msgstr "Fejl:" #: ../output.py:1837 ../output.py:1838 msgid "Install" msgstr "Installér" #: ../output.py:1839 msgid "Dep-Install" msgstr "Installér afhængigheder" #: ../output.py:1841 msgid "Obsoleting" msgstr "Forælder" #: ../output.py:1842 msgid "Erase" msgstr "Slet" #: ../output.py:1843 msgid "Reinstall" msgstr "Geninstallér" #: ../output.py:1844 msgid "Downgrade" msgstr "Nedgradér" #: ../output.py:1846 msgid "Update" msgstr "Opdatér" #: ../output.py:1909 msgid "Time" msgstr "Tid" #: ../output.py:1935 msgid "Last day" msgstr "Sidste dag" #: ../output.py:1936 msgid "Last week" msgstr "Sidste uge" #: ../output.py:1937 msgid "Last 2 weeks" msgstr "Seneste to uger" #. US default :p #: ../output.py:1938 msgid "Last 3 months" msgstr "Seneste tre mÃ¥neder" #: ../output.py:1939 msgid "Last 6 months" msgstr "Seneste seks mÃ¥neder" #: ../output.py:1940 msgid "Last year" msgstr "Sidste Ã¥r" #: ../output.py:1941 msgid "Over a year ago" msgstr "Over et Ã¥r siden" #: ../output.py:1984 #, python-format msgid "No Transaction %s found" msgstr "Ingen overførsel %s fundet" #: ../output.py:1990 msgid "Transaction ID:" msgstr "Overførsels-id:" #: ../output.py:1991 msgid "Available additional history information:" msgstr "Yderligere historikinformation tilgængelig:" #: ../output.py:2003 #, python-format msgid "%s: No additional data found by this name" msgstr "%s: Intet yderligere data fundet med dette navn" #: ../output.py:2106 msgid "installed" msgstr "installeret" #: ../output.py:2107 msgid "an update" msgstr "" #: ../output.py:2108 msgid "erased" msgstr "slettet" #: ../output.py:2109 msgid "reinstalled" msgstr "geninstalleret" #: ../output.py:2110 msgid "a downgrade" msgstr "" #: ../output.py:2111 msgid "obsoleting" msgstr "" #: ../output.py:2112 msgid "updated" msgstr "opdateret" #: ../output.py:2113 msgid "obsoleted" msgstr "overflødiggjort" #: ../output.py:2117 #, python-format msgid "---> Package %s.%s %s:%s-%s will be %s" msgstr "" #: ../output.py:2124 msgid "--> Running transaction check" msgstr "--> Kører overførselskontrol" #: ../output.py:2129 msgid "--> Restarting Dependency Resolution with new changes." msgstr "--> Genstarter afhængighedssøgning med nye ændringer." #: ../output.py:2134 msgid "--> Finished Dependency Resolution" msgstr "--> Afsluttede afhængighedssøgningen" #: ../output.py:2139 ../output.py:2144 #, python-format msgid "--> Processing Dependency: %s for package: %s" msgstr "--> Behandler afhængighed: %s for pakken: %s" #: ../output.py:2149 #, python-format msgid "---> Keeping package: %s" msgstr "---> Beholder pakke: %s" #: ../output.py:2152 #, python-format msgid "--> Unresolved Dependency: %s" msgstr "--> Ikke fundet afhængighed: %s" #: ../output.py:2163 #, python-format msgid "Package: %s" msgstr "Pakke: %s" #: ../output.py:2165 #, python-format msgid "" "\n" " Requires: %s" msgstr "" "\n" " Kræver: %s" #: ../output.py:2174 #, python-format msgid "" "\n" " %s: %s (%s)" msgstr "" "\n" " %s: %s (%s)" #: ../output.py:2179 #, python-format msgid "" "\n" " %s" msgstr "" "\n" " %s" #: ../output.py:2181 msgid "" "\n" " Not found" msgstr "" "\n" " Ikke fundet" #. These should be the only three things we care about: #: ../output.py:2196 msgid "Updated By" msgstr "Opdateret af" #: ../output.py:2197 msgid "Downgraded By" msgstr "Nedgraderet af" #: ../output.py:2198 msgid "Obsoleted By" msgstr "Forældet af" #: ../output.py:2216 msgid "Available" msgstr "Tilgængelig" #: ../output.py:2243 ../output.py:2248 #, python-format msgid "--> Processing Conflict: %s conflicts %s" msgstr "--> Behandler konflikt: %s konflikter med %s" #: ../output.py:2252 msgid "--> Populating transaction set with selected packages. Please wait." msgstr "--> Udfylder overførselssættet med valgte pakker. Vent venligst." #: ../output.py:2256 #, python-format msgid "---> Downloading header for %s to pack into transaction set." msgstr "---> Henter headerfil for %s til at indsætte i overførselssættet." #: ../utils.py:99 msgid "Running" msgstr "Kører" #: ../utils.py:100 msgid "Sleeping" msgstr "Sover" #: ../utils.py:101 msgid "Uninterruptible" msgstr "Ikke forstyrbar" #: ../utils.py:102 msgid "Zombie" msgstr "Zombie" #: ../utils.py:103 msgid "Traced/Stopped" msgstr "Fundet/stoppet" #: ../utils.py:104 ../yumcommands.py:994 msgid "Unknown" msgstr "Ukendt" #: ../utils.py:115 msgid " The other application is: PackageKit" msgstr " Det andet program er: PackageKit" #: ../utils.py:117 #, python-format msgid " The other application is: %s" msgstr " Det andet program er: %s" #: ../utils.py:120 #, python-format msgid " Memory : %5s RSS (%5sB VSZ)" msgstr " Hukommelse : %5s RSS (%5sB VSZ)" #: ../utils.py:125 #, python-format msgid " Started: %s - %s ago" msgstr " Startede: %s - %s siden" #: ../utils.py:127 #, python-format msgid " State : %s, pid: %d" msgstr " Status : %s, pid: %d" #: ../utils.py:170 ../yummain.py:43 msgid "" "\n" "\n" "Exiting on user cancel" msgstr "" "\n" "\n" "Afslutter efter brugerens ønske" #: ../utils.py:176 ../yummain.py:49 msgid "" "\n" "\n" "Exiting on Broken Pipe" msgstr "" "\n" "\n" "Afslutter pÃ¥ ødelagt tunnel" #: ../utils.py:178 ../yummain.py:51 #, python-format msgid "" "\n" "\n" "%s" msgstr "" "\n" "\n" "%s" #: ../utils.py:228 ../yummain.py:123 msgid "" "Another app is currently holding the yum lock; exiting as configured by " "exit_on_lock" msgstr "" "Et andet program holder i øjeblikket yum-lÃ¥sen; afslutter som konfigureret " "af exit_on_llock" #: ../utils.py:287 #, python-format msgid "PluginExit Error: %s" msgstr "Fejl med PluginExit: %s" #: ../utils.py:290 #, python-format msgid "Yum Error: %s" msgstr "Yum-fejl: %s" #: ../utils.py:342 ../yummain.py:150 ../yummain.py:189 #, python-format msgid "Error: %s" msgstr "Fejl: %s" #: ../utils.py:346 ../yummain.py:194 msgid " You could try using --skip-broken to work around the problem" msgstr "" " Du kunne prøve at bruge --skip-broken til at arbejde udenom problemet" #: ../utils.py:348 ../yummain.py:87 msgid " You could try running: rpm -Va --nofiles --nodigest" msgstr " Du kan prøve at køre: rpm -Va --nofiles --nodigest" #: ../utils.py:355 ../yummain.py:160 ../yummain.py:202 #, python-format msgid "Unknown Error(s): Exit Code: %d:" msgstr "Ukendt(e) fejl: Returkode: %d:" #: ../utils.py:361 ../yummain.py:208 msgid "" "\n" "Dependencies Resolved" msgstr "" "\n" "Afhængigheder løst" #: ../utils.py:376 ../yummain.py:234 msgid "Complete!" msgstr "Afsluttet!" #: ../yumcommands.py:42 msgid " Mini usage:\n" msgstr "" #: ../yumcommands.py:52 msgid "You need to be root to perform this command." msgstr "Du skal være root for at udføre denne kommando." #: ../yumcommands.py:59 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" "Du har aktiveret kontrol af pakker via GPG-nøgler. Dette er en god ting. \n" "Selvom du ikke har nogen GPG-nøgler installeret. Du bliver nødt til at hente\n" "nøglerne til pakkerne, som du vil installere og installere dem.\n" "Du kan gøre det ved at køre kommandoen:\n" " rpm --import public.gpg.key\n" "\n" "\n" "Alternativt kan du angive URL'en til nøglen, som du vil bruge til et\n" "pakkearkiv i \"gpgkey\"-indstillingen i en pakkearkivssektion og Yum \n" "vil installere den for dig.\n" "\n" "For mere information, kan du kontakte din distribution eller pakkeudbyder.\n" #: ../yumcommands.py:74 #, python-format msgid "Problem repository: %s" msgstr "" #: ../yumcommands.py:80 #, python-format msgid "Error: Need to pass a list of pkgs to %s" msgstr "Fejl: En liste med pakker behøves af %s" #: ../yumcommands.py:86 msgid "Error: Need an item to match" msgstr "Fejl: Behøver noget at matche med" #: ../yumcommands.py:92 msgid "Error: Need a group or list of groups" msgstr "Fejl: Behøver en gruppe eller liste af grupper" #: ../yumcommands.py:101 #, python-format msgid "Error: clean requires an option: %s" msgstr "Fejl: clean behøver en indstilling: %s" #: ../yumcommands.py:106 #, python-format msgid "Error: invalid clean argument: %r" msgstr "Fejl: ugyldigt clean-argument: %r" #: ../yumcommands.py:119 msgid "No argument to shell" msgstr "Ingen argumenter til skal" #: ../yumcommands.py:121 #, python-format msgid "Filename passed to shell: %s" msgstr "Filnavn tilpasset skal: %s" #: ../yumcommands.py:125 #, python-format msgid "File %s given as argument to shell does not exist." msgstr "Filen %s givet som argument til skal findes ikke." #: ../yumcommands.py:131 msgid "Error: more than one file given as argument to shell." msgstr "Fejl: mere end en fil angivet som argument til skal." #: ../yumcommands.py:148 msgid "" "There are no enabled repos.\n" " Run \"yum repolist all\" to see the repos you have.\n" " You can enable repos with yum-config-manager --enable " msgstr "" "Der er ingen aktiverede pakkearkiver.\n" " Kør \"yum repolist all\" for at se de pakkearkiver du har.\n" " Du kan aktivere pakkearkiver med yum-config-manager --enable " #: ../yumcommands.py:200 msgid "PACKAGE..." msgstr "PAKKE..." #: ../yumcommands.py:203 msgid "Install a package or packages on your system" msgstr "Installerer en eller flere pakker pÃ¥ systemet" #: ../yumcommands.py:212 msgid "Setting up Install Process" msgstr "Opsætning af installationsprocessen" #: ../yumcommands.py:223 ../yumcommands.py:245 msgid "[PACKAGE...]" msgstr "[PAKKE...]" #: ../yumcommands.py:226 msgid "Update a package or packages on your system" msgstr "Opdaterer en eller flere pakker pÃ¥ systemet" #: ../yumcommands.py:234 msgid "Setting up Update Process" msgstr "Opsætning af opdateringsprocessen" #: ../yumcommands.py:248 msgid "Synchronize installed packages to the latest available versions" msgstr "Synkronisér installerede pakker til de senest tilgængelige versioner" #: ../yumcommands.py:256 msgid "Setting up Distribution Synchronization Process" msgstr "Indstiller distributionssynkroniseringsproces" #: ../yumcommands.py:299 msgid "Display details about a package or group of packages" msgstr "Vis detaljer om en pakke eller en gruppe af pakker" #: ../yumcommands.py:348 msgid "Installed Packages" msgstr "Installerede pakker" #: ../yumcommands.py:356 msgid "Available Packages" msgstr "Tilgængelige pakker" #: ../yumcommands.py:360 msgid "Extra Packages" msgstr "Ekstra pakker" #: ../yumcommands.py:364 msgid "Updated Packages" msgstr "Opdaterede pakker" #. This only happens in verbose mode #: ../yumcommands.py:372 ../yumcommands.py:379 ../yumcommands.py:667 msgid "Obsoleting Packages" msgstr "Overflødiggør pakker" #: ../yumcommands.py:381 msgid "Recently Added Packages" msgstr "Pakker som er tilføjet for nyligt" #: ../yumcommands.py:388 msgid "No matching Packages to list" msgstr "Ingen matchende pakker til liste" #: ../yumcommands.py:402 msgid "List a package or groups of packages" msgstr "Viser en pakke eller en gruppe af pakker" #: ../yumcommands.py:414 msgid "Remove a package or packages from your system" msgstr "Fjern en eller flere pakker fra dit system" #: ../yumcommands.py:421 msgid "Setting up Remove Process" msgstr "Opsætning af fjerningsprocessen" #: ../yumcommands.py:435 msgid "Setting up Group Process" msgstr "Opsætning af gruppeprocessen" #: ../yumcommands.py:441 msgid "No Groups on which to run command" msgstr "Ingen grupper, pÃ¥ hvilke der køres en kommando" #: ../yumcommands.py:454 msgid "List available package groups" msgstr "Vis tilgængelige pakkegrupper" #: ../yumcommands.py:474 msgid "Install the packages in a group on your system" msgstr "Installér alle pakkerne i en gruppe pÃ¥ dit system" #: ../yumcommands.py:497 msgid "Remove the packages in a group from your system" msgstr "Fjerner alle pakkerne i en gruppe fra dit system" #: ../yumcommands.py:525 msgid "Display details about a package group" msgstr "Vis informationer om en pakkegruppe" #: ../yumcommands.py:550 msgid "Generate the metadata cache" msgstr "Opretter mellemlager for metadata" #: ../yumcommands.py:556 msgid "Making cache files for all metadata files." msgstr "Opretter mellemlagerfiler til alle metadatafiler." #: ../yumcommands.py:557 msgid "This may take a while depending on the speed of this computer" msgstr "" "Dette kan tage et stykke tid, afhængigt af hastigheden op denne computer" #: ../yumcommands.py:578 msgid "Metadata Cache Created" msgstr "Mellemlager for metadata oprettet" #: ../yumcommands.py:592 msgid "Remove cached data" msgstr "Sletter data fra cachen" #: ../yumcommands.py:613 msgid "Find what package provides the given value" msgstr "Finder pakker som leverer en given værdi" #: ../yumcommands.py:633 msgid "Check for available package updates" msgstr "Kontrol af tilgængelige pakkeopdateringer" #: ../yumcommands.py:687 msgid "Search package details for the given string" msgstr "Søger efter en given streng i pakkeinformationerne" #: ../yumcommands.py:693 msgid "Searching Packages: " msgstr "Søger i pakkerne: " #: ../yumcommands.py:710 msgid "Update packages taking obsoletes into account" msgstr "Opdaterer pakker, tager hensyn til overflødiggjorte pakker" #: ../yumcommands.py:719 msgid "Setting up Upgrade Process" msgstr "Opsætning af opgraderingsprocessen" #: ../yumcommands.py:737 msgid "Install a local RPM" msgstr "Installer en lokal RPM-fil" #: ../yumcommands.py:745 msgid "Setting up Local Package Process" msgstr "Opsætning af lokalpakkeprocessen" #: ../yumcommands.py:764 msgid "Determine which package provides the given dependency" msgstr "Bestem hvilken pakke som leverer en bestemt afhængighed" #: ../yumcommands.py:767 msgid "Searching Packages for Dependency:" msgstr "Søger efter afhængighed i pakkerne:" #: ../yumcommands.py:781 msgid "Run an interactive yum shell" msgstr "Kør en interaktiv Yum-skal" #: ../yumcommands.py:787 msgid "Setting up Yum Shell" msgstr "Opsætning af Yum-skal" #: ../yumcommands.py:805 msgid "List a package's dependencies" msgstr "Viser en pakkes afhængigheder" #: ../yumcommands.py:811 msgid "Finding dependencies: " msgstr "Finder afhængigheder: " #: ../yumcommands.py:827 msgid "Display the configured software repositories" msgstr "Viser de konfigurerede pakkearkiver" #: ../yumcommands.py:893 ../yumcommands.py:894 msgid "enabled" msgstr "aktiveret" #: ../yumcommands.py:920 ../yumcommands.py:921 msgid "disabled" msgstr "deaktiveret" #: ../yumcommands.py:937 msgid "Repo-id : " msgstr "Pakkearkivs-id : " #: ../yumcommands.py:938 msgid "Repo-name : " msgstr "Pakkearkivnavn : " #: ../yumcommands.py:941 msgid "Repo-status : " msgstr "Pakkearkivstatus : " #: ../yumcommands.py:944 msgid "Repo-revision: " msgstr "Pakkearkivsversion: " #: ../yumcommands.py:948 msgid "Repo-tags : " msgstr "Pakkearkivflag : " #: ../yumcommands.py:954 msgid "Repo-distro-tags: " msgstr "Kildedistroflag: " #: ../yumcommands.py:959 msgid "Repo-updated : " msgstr "Pakkearkiv opdateret : " #: ../yumcommands.py:961 msgid "Repo-pkgs : " msgstr "Pakkearkivpakker : " #: ../yumcommands.py:962 msgid "Repo-size : " msgstr "Pakkearkivstørrelse : " #: ../yumcommands.py:969 ../yumcommands.py:990 msgid "Repo-baseurl : " msgstr "Pakkearkivbaseurl : " #: ../yumcommands.py:977 msgid "Repo-metalink: " msgstr "Pakkearkivsmetahenvisning: " #: ../yumcommands.py:981 msgid " Updated : " msgstr " Opdateret : " #: ../yumcommands.py:984 msgid "Repo-mirrors : " msgstr "Pakkearkivspejle: " #: ../yumcommands.py:1000 #, python-format msgid "Never (last: %s)" msgstr "Aldrig (senest: %s)" #: ../yumcommands.py:1002 #, python-format msgid "Instant (last: %s)" msgstr "Med det samme (senest: %s)" #: ../yumcommands.py:1005 #, python-format msgid "%s second(s) (last: %s)" msgstr "%s sekund(er) (senest: %s)" #: ../yumcommands.py:1007 msgid "Repo-expire : " msgstr "Pakkearkiv udløber : " #: ../yumcommands.py:1010 msgid "Repo-exclude : " msgstr "Pakkearkiv ekskluderer : " #: ../yumcommands.py:1014 msgid "Repo-include : " msgstr "Pakkearkiv inkluderer : " #: ../yumcommands.py:1018 msgid "Repo-excluded: " msgstr "Pakkearkiv ekskluderet: " #: ../yumcommands.py:1022 msgid "Repo-filename: " msgstr "" #. Work out the first (id) and last (enabled/disalbed/count), #. then chop the middle (name)... #: ../yumcommands.py:1032 ../yumcommands.py:1061 msgid "repo id" msgstr "kildeid" #: ../yumcommands.py:1049 ../yumcommands.py:1050 ../yumcommands.py:1068 msgid "status" msgstr "status" #: ../yumcommands.py:1062 msgid "repo name" msgstr "kildenavn" #: ../yumcommands.py:1099 msgid "Display a helpful usage message" msgstr "Viser hjælp om brugen af en kommando" #: ../yumcommands.py:1133 #, python-format msgid "No help available for %s" msgstr "Ingen tilgængelig hjælp til %s" #: ../yumcommands.py:1138 msgid "" "\n" "\n" "aliases: " msgstr "" "\n" "\n" "aliaser: " #: ../yumcommands.py:1140 msgid "" "\n" "\n" "alias: " msgstr "" "\n" "\n" "alias: " #: ../yumcommands.py:1168 msgid "Setting up Reinstall Process" msgstr "Opsætning af geninstallationsprocessen" #: ../yumcommands.py:1176 msgid "reinstall a package" msgstr "geninstallér en pakke" #: ../yumcommands.py:1195 msgid "Setting up Downgrade Process" msgstr "Opsætning af nedgraderingsprocessen" #: ../yumcommands.py:1202 msgid "downgrade a package" msgstr "nedgradér en pakke" #: ../yumcommands.py:1216 msgid "Display a version for the machine and/or available repos." msgstr "Vis en version for maskinen og/eller tilgængelige pakkearkiver." #: ../yumcommands.py:1255 msgid " Yum version groups:" msgstr " Yum versiongrupper:" #: ../yumcommands.py:1265 msgid " Group :" msgstr " Gruppe :" #: ../yumcommands.py:1266 msgid " Packages:" msgstr " Pakker:" #: ../yumcommands.py:1295 msgid "Installed:" msgstr "Installeret:" #: ../yumcommands.py:1303 msgid "Group-Installed:" msgstr "Gruppe-Installeret" #: ../yumcommands.py:1312 msgid "Available:" msgstr "Tilgængelige:" #: ../yumcommands.py:1321 msgid "Group-Available:" msgstr "Gruppe-Tilgængelig:" #: ../yumcommands.py:1360 msgid "Display, or use, the transaction history" msgstr "Vis eller brug overførselshistorik" #: ../yumcommands.py:1432 #, python-format msgid "Invalid history sub-command, use: %s." msgstr "Ugyldig underkommando for historik, brug: %s." #: ../yumcommands.py:1439 msgid "You don't have access to the history DB." msgstr "Du har ikke adgang til historikdatabasen." #: ../yumcommands.py:1487 msgid "Check for problems in the rpmdb" msgstr "Kontrollér for problemer i rpmdb'en" #: ../yumcommands.py:1514 msgid "load a saved transaction from filename" msgstr "" #: ../yumcommands.py:1518 msgid "No saved transaction file specified." msgstr "" #: ../yumcommands.py:1522 #, python-format msgid "loading transaction from %s" msgstr "" #: ../yumcommands.py:1528 #, python-format msgid "Transaction loaded from %s with %s members" msgstr "" #. This is mainly for PackageSackError from rpmdb. #: ../yummain.py:84 #, python-format msgid " Yum checks failed: %s" msgstr "" #: ../yummain.py:114 msgid "" "Another app is currently holding the yum lock; waiting for it to exit..." msgstr "Yum er lÃ¥st af et andet program, venter pÃ¥ at den afslutter..." #: ../yummain.py:120 msgid "Can't create lock file; exiting" msgstr "" #. Depsolve stage #: ../yummain.py:167 msgid "Resolving Dependencies" msgstr "Løser afhængigheder" #: ../yummain.py:230 #, python-format msgid "Your transaction was saved, rerun it with: yum load-transaction %s" msgstr "" #: ../yummain.py:288 msgid "" "\n" "\n" "Exiting on user cancel." msgstr "" "\n" "\n" "Afslutter efter brugerens ønske." #: ../yum/depsolve.py:84 msgid "doTsSetup() will go away in a future version of Yum.\n" msgstr "doTsSetup() vil blive fjernet i en fremtidig version af Yum.\n" #: ../yum/depsolve.py:99 msgid "Setting up TransactionSets before config class is up" msgstr "Opsætning af TransactionSets før config-klassen er sat op" #: ../yum/depsolve.py:153 #, python-format msgid "Invalid tsflag in config file: %s" msgstr "Invalid tsflag i konfigurationsfilen: %s" #: ../yum/depsolve.py:164 #, python-format msgid "Searching pkgSack for dep: %s" msgstr "Søger i pkgSack for afhængigheden: %s" #: ../yum/depsolve.py:207 #, python-format msgid "Member: %s" msgstr "Medlem: %s" #: ../yum/depsolve.py:221 ../yum/depsolve.py:793 #, python-format msgid "%s converted to install" msgstr "%s konverteret til installation" #: ../yum/depsolve.py:233 #, python-format msgid "Adding Package %s in mode %s" msgstr "Tilføjer pakke %s i mode %s" #: ../yum/depsolve.py:249 #, python-format msgid "Removing Package %s" msgstr "Fjerner pakke %s" #: ../yum/depsolve.py:271 #, python-format msgid "%s requires: %s" msgstr "%s behøver: %s" #: ../yum/depsolve.py:312 #, python-format msgid "%s requires %s" msgstr "%s kræver %s" #: ../yum/depsolve.py:339 msgid "Needed Require has already been looked up, cheating" msgstr "Afhængighed fundet tidligere, snyder" #: ../yum/depsolve.py:349 #, python-format msgid "Needed Require is not a package name. Looking up: %s" msgstr "Afhængighed er ikke et pakkenavn. Søger efter: %s" #: ../yum/depsolve.py:357 #, python-format msgid "Potential Provider: %s" msgstr "Mulig udbyder: %s" #: ../yum/depsolve.py:380 #, python-format msgid "Mode is %s for provider of %s: %s" msgstr "Tilstand er %s for udbyder af %s: %s" #: ../yum/depsolve.py:384 #, python-format msgid "Mode for pkg providing %s: %s" msgstr "Tilstand for pakke som leverer %s: %s" #. the thing it needs is being updated or obsoleted away #. try to update the requiring package in hopes that all this problem goes #. away :( #: ../yum/depsolve.py:389 ../yum/depsolve.py:406 #, python-format msgid "Trying to update %s to resolve dep" msgstr "" #: ../yum/depsolve.py:400 ../yum/depsolve.py:410 #, python-format msgid "No update paths found for %s. Failure!" msgstr "" #: ../yum/depsolve.py:416 #, python-format msgid "TSINFO: %s package requiring %s marked as erase" msgstr "TSINFO: %s pakker som behøver %s markeret til sletning" #: ../yum/depsolve.py:429 #, python-format msgid "TSINFO: Obsoleting %s with %s to resolve dep." msgstr "TSINFO: Overflødiggør %s med %s for at finde afhængighed." #: ../yum/depsolve.py:432 #, python-format msgid "TSINFO: Updating %s to resolve dep." msgstr "TSINFO: Opdaterer %s for at opfylde afhængighed." #: ../yum/depsolve.py:440 #, python-format msgid "Cannot find an update path for dep for: %s" msgstr "Kan ikke finde en opdateringsvej for afhængigheden for: %s" #: ../yum/depsolve.py:471 #, python-format msgid "Quick matched %s to require for %s" msgstr "Hurtigmatchede %s som afhængighed for %s" #. is it already installed? #: ../yum/depsolve.py:513 #, python-format msgid "%s is in providing packages but it is already installed, removing." msgstr "%s er i udbudte pakker, men er allerede installeret, fjerner." #: ../yum/depsolve.py:529 #, python-format msgid "Potential resolving package %s has newer instance in ts." msgstr "Mulig løsningspakke %s har en nyere udgave i ts." #: ../yum/depsolve.py:540 #, python-format msgid "Potential resolving package %s has newer instance installed." msgstr "Mulig løsningspakke %s har en nyere udgave installeret." #: ../yum/depsolve.py:558 #, python-format msgid "%s already in ts, skipping this one" msgstr "%s er allerede i ts, springer den over" #: ../yum/depsolve.py:607 #, python-format msgid "TSINFO: Marking %s as update for %s" msgstr "TSINFO: Markerer %s som en opdatering for %s" #: ../yum/depsolve.py:616 #, python-format msgid "TSINFO: Marking %s as install for %s" msgstr "TSINFO: Markerer %s til installerer for %s" #: ../yum/depsolve.py:727 ../yum/depsolve.py:819 msgid "Success - empty transaction" msgstr "Succes -- tom overførsel" #: ../yum/depsolve.py:767 ../yum/depsolve.py:783 msgid "Restarting Loop" msgstr "Genstarter løkke" #: ../yum/depsolve.py:799 msgid "Dependency Process ending" msgstr "Afhængighedsproces afslutter" #: ../yum/depsolve.py:821 msgid "Success - deps resolved" msgstr "Succes - afhængigheder løst" #: ../yum/depsolve.py:845 #, python-format msgid "Checking deps for %s" msgstr "Kontrollerer afhængigheder for %s" #: ../yum/depsolve.py:931 #, python-format msgid "looking for %s as a requirement of %s" msgstr "søger efter %s som afhængighed for %s" #: ../yum/depsolve.py:1169 #, python-format msgid "Running compare_providers() for %s" msgstr "Kører compare_providers() for %s" #: ../yum/depsolve.py:1196 ../yum/depsolve.py:1202 #, python-format msgid "better arch in po %s" msgstr "bedre arkitektur i po %s" #: ../yum/depsolve.py:1298 #, python-format msgid "%s obsoletes %s" msgstr "%s overflødigør %s" #: ../yum/depsolve.py:1310 #, python-format msgid "" "archdist compared %s to %s on %s\n" " Winner: %s" msgstr "" "arkitekturdistribution sammenligner %s med %s pÃ¥ %s\n" " Vinder: %s" #: ../yum/depsolve.py:1318 #, python-format msgid "common sourcerpm %s and %s" msgstr "normal kilde-RPM %s og %s" #: ../yum/depsolve.py:1322 #, python-format msgid "base package %s is installed for %s" msgstr "basepakke %s er installeret for %s" #: ../yum/depsolve.py:1328 #, python-format msgid "common prefix of %s between %s and %s" msgstr "normal præfiks af %s mellem %s og %s" #: ../yum/depsolve.py:1359 #, python-format msgid "requires minimal: %d" msgstr "kræver minimalt: %d" #: ../yum/depsolve.py:1363 #, python-format msgid " Winner: %s" msgstr " Vinder: %s" #: ../yum/depsolve.py:1368 #, python-format msgid " Loser(with %d): %s" msgstr " Taber(med %d): %s" #: ../yum/depsolve.py:1384 #, python-format msgid "Best Order: %s" msgstr "Bedste orden: %s" #: ../yum/__init__.py:234 msgid "doConfigSetup() will go away in a future version of Yum.\n" msgstr "doConfigSetup() vil forsvinde i en fremtidig version af Yum.\n" #: ../yum/__init__.py:482 #, python-format msgid "Repository %r: Error parsing config: %s" msgstr "Pakkearkiv %r: Fejl under læsning af konfiguration: %s" #: ../yum/__init__.py:488 #, python-format msgid "Repository %r is missing name in configuration, using id" msgstr "Pakkearkiv %r mangler navn i konfigurationen, bruger id" #: ../yum/__init__.py:526 msgid "plugins already initialised" msgstr "udvidelsesmoduler er allerede initieret" #: ../yum/__init__.py:533 msgid "doRpmDBSetup() will go away in a future version of Yum.\n" msgstr "doRpmDBSetup() vil forsvinde i en fremtidig version af Yum.\n" #: ../yum/__init__.py:544 msgid "Reading Local RPMDB" msgstr "Læser lokal RPMDB" #: ../yum/__init__.py:567 msgid "doRepoSetup() will go away in a future version of Yum.\n" msgstr "doRepoSetup() vil forsvinde i en fremtidig version af Yum.\n" #: ../yum/__init__.py:630 msgid "doSackSetup() will go away in a future version of Yum.\n" msgstr "doSackSetup() vil forsvinde i en fremtidig version af Yum.\n" #: ../yum/__init__.py:660 msgid "Setting up Package Sacks" msgstr "Opsætning af pakkelister" #: ../yum/__init__.py:705 #, python-format msgid "repo object for repo %s lacks a _resetSack method\n" msgstr "kildeobjekt for kilde %s mangler en _resetSack-metode\n" #: ../yum/__init__.py:706 msgid "therefore this repo cannot be reset.\n" msgstr "derfor kan dette pakkearkiv ikke blive nulstillet.\n" #: ../yum/__init__.py:711 msgid "doUpdateSetup() will go away in a future version of Yum.\n" msgstr "doUpdateSetup() vil forsvinde i en fremtidig version af Yum.\n" #: ../yum/__init__.py:723 msgid "Building updates object" msgstr "Bygger opdateringsobjekt" #: ../yum/__init__.py:765 msgid "doGroupSetup() will go away in a future version of Yum.\n" msgstr "doGroupSetup() vil forsvinde i en fremtidig version af Yum.\n" #: ../yum/__init__.py:790 msgid "Getting group metadata" msgstr "Henter gruppemetadata" #: ../yum/__init__.py:816 #, python-format msgid "Adding group file from repository: %s" msgstr "Tilfører gruppefil fra pakkearkiv: %s" #: ../yum/__init__.py:827 #, python-format msgid "Failed to add groups file for repository: %s - %s" msgstr "Tilføjelse af gruppefil fejlede for følgende pakkearkiv: %s - %s" #: ../yum/__init__.py:833 msgid "No Groups Available in any repository" msgstr "Ingen tilgængelige grupper i noget pakkearkiv" #: ../yum/__init__.py:845 msgid "Getting pkgtags metadata" msgstr "Henter metadata for pakkemærker" #: ../yum/__init__.py:855 #, python-format msgid "Adding tags from repository: %s" msgstr "Tilføjer mærker fra pakkearkiv: %s" #: ../yum/__init__.py:866 #, python-format msgid "Failed to add Pkg Tags for repository: %s - %s" msgstr "Kunne ikke tilføje pakkemærker for pakkearkiv: %s - %s" #: ../yum/__init__.py:944 msgid "Importing additional filelist information" msgstr "Importerer yderligere information om filliste" #: ../yum/__init__.py:958 #, python-format msgid "The program %s%s%s is found in the yum-utils package." msgstr "Programmet %s%s%s er fundet i yum-utils-pakken." #: ../yum/__init__.py:966 msgid "" "There are unfinished transactions remaining. You might consider running yum-" "complete-transaction first to finish them." msgstr "" "Der er uafsluttede overførsler tilbage. Du bør overveje at køre yum-" "complete-transaction først for at afslutte dem." #: ../yum/__init__.py:983 msgid "--> Finding unneeded leftover dependencies" msgstr "" #: ../yum/__init__.py:1041 #, python-format msgid "Protected multilib versions: %s != %s" msgstr "" #: ../yum/__init__.py:1096 #, python-format msgid "Trying to remove \"%s\", which is protected" msgstr "Prøver at fjerne \"%s\" som er beskyttet" #: ../yum/__init__.py:1217 msgid "" "\n" "Packages skipped because of dependency problems:" msgstr "" "\n" "Pakker sprunget over pÃ¥ grund af problemer med afhængigheder:" #: ../yum/__init__.py:1221 #, python-format msgid " %s from %s" msgstr " %s fra %s" #. FIXME: _N() #: ../yum/__init__.py:1391 #, python-format msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:" msgstr "" "** Fandt %d før-eksisterende rpmdb-problem(er), \"yum check\" giver " "følgende:" #: ../yum/__init__.py:1395 msgid "Warning: RPMDB altered outside of yum." msgstr "Advarsel: RPMDB er ændret udenfor yum." #: ../yum/__init__.py:1407 msgid "missing requires" msgstr "manglende afhængigheder" #: ../yum/__init__.py:1408 msgid "installed conflict" msgstr "installeret konflikt" #: ../yum/__init__.py:1525 msgid "" "Warning: scriptlet or other non-fatal errors occurred during transaction." msgstr "" "Advarsel: skriptlet eller andre ikke-fatale fejl opstod under overførslen." #: ../yum/__init__.py:1535 msgid "Transaction couldn't start:" msgstr "Overførsel kunne ikke starte:" #. should this be 'to_unicoded'? #: ../yum/__init__.py:1538 msgid "Could not run transaction." msgstr "Kunne ikke køre overførsel." #: ../yum/__init__.py:1552 #, python-format msgid "Failed to remove transaction file %s" msgstr "Kunne ikke slette transaktionsfilen %s" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1590 #, python-format msgid "%s was supposed to be installed but is not!" msgstr "%s skulle være blevet installeret, men det blev den ikke!" #. maybe a file log here, too #. but raising an exception is not going to do any good #: ../yum/__init__.py:1651 #, python-format msgid "%s was supposed to be removed but is not!" msgstr "%s skulle være blevet fjernet, men det blev den ikke!" #: ../yum/__init__.py:1768 #, python-format msgid "Could not open lock %s: %s" msgstr "Kunne ikke Ã¥bne lÃ¥s %s: %s" #. Whoa. What the heck happened? #: ../yum/__init__.py:1785 #, python-format msgid "Unable to check if PID %s is active" msgstr "Kunne ikke kontrollere om PID %s er aktiv" #. Another copy seems to be running. #: ../yum/__init__.py:1789 #, python-format msgid "Existing lock %s: another copy is running as pid %s." msgstr "LÃ¥s fundet %s: en anden kopi kører som PID %s." #. Whoa. What the heck happened? #: ../yum/__init__.py:1830 #, python-format msgid "Could not create lock at %s: %s " msgstr "Kunne ikke oprette lÃ¥s pÃ¥ %s: %s " #: ../yum/__init__.py:1875 #, python-format msgid "" "Package does not match intended download. Suggestion: run yum " "--enablerepo=%s clean metadata" msgstr "" "Pakke matcher ikke den tænkte nedhentning. Forslag: kør yum --enablerepo=%s " "clean metadata" #: ../yum/__init__.py:1891 msgid "Could not perform checksum" msgstr "Kunne ikke udføre checksum" #: ../yum/__init__.py:1894 msgid "Package does not match checksum" msgstr "Pakken matcher ikke checksum" #: ../yum/__init__.py:1946 #, python-format msgid "package fails checksum but caching is enabled for %s" msgstr "pakken fejlede checksum, men mellemlagring er aktiveret for %s" #: ../yum/__init__.py:1949 ../yum/__init__.py:1979 #, python-format msgid "using local copy of %s" msgstr "bruger lokal kopi af %s" #: ../yum/__init__.py:1991 #, python-format msgid "" "Insufficient space in download directory %s\n" " * free %s\n" " * needed %s" msgstr "" "Ikke plads nok i nedhentningskataloget %s\n" " * fri %s\n" " * behøvet %s" #: ../yum/__init__.py:2052 msgid "Header is not complete." msgstr "Headerfil er ikke komplet." #: ../yum/__init__.py:2089 #, python-format msgid "" "Header not in local cache and caching-only mode enabled. Cannot download %s" msgstr "" "Headerfil er ikke i lokal cache og kun-caching-tilstand er aktiveret. Kan " "ikke hente %s" #: ../yum/__init__.py:2147 #, python-format msgid "Public key for %s is not installed" msgstr "Offentlig nøgle for %s er ikke installeret" #: ../yum/__init__.py:2151 #, python-format msgid "Problem opening package %s" msgstr "Kunne ikke Ã¥bne pakke %s" #: ../yum/__init__.py:2159 #, python-format msgid "Public key for %s is not trusted" msgstr "Offentlig nøgle for %s er ikke sikker" #: ../yum/__init__.py:2163 #, python-format msgid "Package %s is not signed" msgstr "Pakken %s er ikke signeret" #: ../yum/__init__.py:2202 #, python-format msgid "Cannot remove %s" msgstr "Kan ikke fjerne %s" #: ../yum/__init__.py:2206 #, python-format msgid "%s removed" msgstr "%s fjernet" #: ../yum/__init__.py:2252 #, python-format msgid "Cannot remove %s file %s" msgstr "Kan ikke slette %s filen %s" #: ../yum/__init__.py:2256 #, python-format msgid "%s file %s removed" msgstr "%s filen %s er slettet" #: ../yum/__init__.py:2258 #, python-format msgid "%d %s files removed" msgstr "%d %s filer slettet" #: ../yum/__init__.py:2327 #, python-format msgid "More than one identical match in sack for %s" msgstr "Mere end et identisk match i liste for %s" #: ../yum/__init__.py:2333 #, python-format msgid "Nothing matches %s.%s %s:%s-%s from update" msgstr "Ingen opdateringer matcher %s.%s %s:%s-%s" #: ../yum/__init__.py:2632 msgid "" "searchPackages() will go away in a future version of Yum." " Use searchGenerator() instead. \n" msgstr "" "searchPackages() vil forsvinde i en fremtidig version af Yum." " Brug searchGenerator() istedet. \n" #: ../yum/__init__.py:2675 #, python-format msgid "Searching %d packages" msgstr "Genemsøger %d pakker" #: ../yum/__init__.py:2679 #, python-format msgid "searching package %s" msgstr "gennemsøger pakke %s" #: ../yum/__init__.py:2691 msgid "searching in file entries" msgstr "gennemsøger filopslag" #: ../yum/__init__.py:2698 msgid "searching in provides entries" msgstr "søger efter afhængigheder" #: ../yum/__init__.py:2777 msgid "No group data available for configured repositories" msgstr "Ingen tilgængelige gruppedata i konfigurerede pakkearkiver" #: ../yum/__init__.py:2808 ../yum/__init__.py:2827 ../yum/__init__.py:2858 #: ../yum/__init__.py:2864 ../yum/__init__.py:2953 ../yum/__init__.py:2957 #: ../yum/__init__.py:3339 #, python-format msgid "No Group named %s exists" msgstr "Gruppen %s findes ikke" #: ../yum/__init__.py:2839 ../yum/__init__.py:2973 #, python-format msgid "package %s was not marked in group %s" msgstr "pakken %s var ikke markeret i gruppen %s" #: ../yum/__init__.py:2887 #, python-format msgid "Adding package %s from group %s" msgstr "Tilføjer pakken %s fra gruppen %s" #: ../yum/__init__.py:2891 #, python-format msgid "No package named %s available to be installed" msgstr "Pakken %s er ikke tilgængelig til installation" #: ../yum/__init__.py:2941 #, python-format msgid "Warning: Group %s does not have any packages." msgstr "" #: ../yum/__init__.py:2943 #, python-format msgid "Group %s does have %u conditional packages, which may get installed." msgstr "" #. This can happen due to excludes after .up has #. happened. #: ../yum/__init__.py:3002 #, python-format msgid "Package tuple %s could not be found in packagesack" msgstr "Pakken %s kunne ikke findes i pakkeliste" #: ../yum/__init__.py:3022 #, python-format msgid "Package tuple %s could not be found in rpmdb" msgstr "Pakkepar %s kunne ikke findes i rpmdb" #: ../yum/__init__.py:3079 ../yum/__init__.py:3129 #, python-format msgid "Invalid version flag from: %s" msgstr "" #: ../yum/__init__.py:3096 ../yum/__init__.py:3101 #, python-format msgid "No Package found for %s" msgstr "Ingen pakke fundet for %s" #: ../yum/__init__.py:3401 msgid "Package Object was not a package object instance" msgstr "Pakkeobjektet er ikke en pakkeobjektinstans" #: ../yum/__init__.py:3405 msgid "Nothing specified to install" msgstr "Der er intet angivet til installation" #: ../yum/__init__.py:3424 ../yum/__init__.py:4283 #, python-format msgid "Checking for virtual provide or file-provide for %s" msgstr "Kontrollerer for virtueludbyder eller filudbyder for %s" #: ../yum/__init__.py:3430 ../yum/__init__.py:3775 ../yum/__init__.py:3969 #: ../yum/__init__.py:4289 #, python-format msgid "No Match for argument: %s" msgstr "Ingen match for argument: %s" #: ../yum/__init__.py:3507 #, python-format msgid "Package %s installed and not available" msgstr "Pakken %s installeret og ikke tilgængelig" #: ../yum/__init__.py:3510 msgid "No package(s) available to install" msgstr "Ingen pakke(r) er tilgængelig(e) til installation" #: ../yum/__init__.py:3522 #, python-format msgid "Package: %s - already in transaction set" msgstr "Pakken: %s - allerede i overførselssættet" #: ../yum/__init__.py:3550 #, python-format msgid "Package %s is obsoleted by %s which is already installed" msgstr "Pakke %s er overflødiggjort af %s, som allerede er installeret" #: ../yum/__init__.py:3555 #, python-format msgid "" "Package %s is obsoleted by %s, but obsoleting package does not provide for " "requirements" msgstr "" "Pakke %s er forældret af %s, men forældet pakke tilbyder ikke afhængigheder" #: ../yum/__init__.py:3558 #, python-format msgid "Package %s is obsoleted by %s, trying to install %s instead" msgstr "Pakke %s er overflødiggjort af %s, prøver at installere %s istedet" #: ../yum/__init__.py:3566 #, python-format msgid "Package %s already installed and latest version" msgstr "Pakke %s er allerede installeret i den nyeste version" #: ../yum/__init__.py:3580 #, python-format msgid "Package matching %s already installed. Checking for update." msgstr "" "Pakken som matcher %s er allerede installeret. Søger efter opdatering." #. update everything (the easy case) #: ../yum/__init__.py:3684 msgid "Updating Everything" msgstr "Opdaterer alt" #: ../yum/__init__.py:3708 ../yum/__init__.py:3849 ../yum/__init__.py:3879 #: ../yum/__init__.py:3915 #, python-format msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" msgstr "" "Ingen opdatering af pakke som allerede er overflødiggjort: %s.%s %s:%s-%s" #: ../yum/__init__.py:3753 ../yum/__init__.py:3965 #, python-format msgid "%s" msgstr "%s" #: ../yum/__init__.py:3838 #, python-format msgid "Package is already obsoleted: %s.%s %s:%s-%s" msgstr "Pakke er allerede overflødiggjort: %s.%s %s:%s-%s" #: ../yum/__init__.py:3874 #, python-format msgid "Not Updating Package that is obsoleted: %s" msgstr "Opdaterer ikke pakke som er blevet overflødiggjort: %s" #: ../yum/__init__.py:3883 ../yum/__init__.py:3919 #, python-format msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s" msgstr "" "Ingen opdatering af pakke som allerede er overflødiggjort: %s.%s %s:%s-%s" #: ../yum/__init__.py:3982 msgid "No package matched to remove" msgstr "Ingen pakker fundet til fjernelse" #: ../yum/__init__.py:3988 #, python-format msgid "Skipping the running kernel: %s" msgstr "Lader være med at køre kerne: %s" #: ../yum/__init__.py:3994 #, python-format msgid "Removing %s from the transaction" msgstr "Fjerner %s fra overførslen" #: ../yum/__init__.py:4029 #, python-format msgid "Cannot open: %s. Skipping." msgstr "Kan ikke Ã¥bne: %s. Springer over." #: ../yum/__init__.py:4032 ../yum/__init__.py:4150 ../yum/__init__.py:4226 #, python-format msgid "Examining %s: %s" msgstr "Undersøger %s: %s" #: ../yum/__init__.py:4036 #, python-format msgid "Cannot localinstall deltarpm: %s. Skipping." msgstr "Kan ikke lokalinstallere deltarpm: %s. Springer over." #: ../yum/__init__.py:4045 ../yum/__init__.py:4153 ../yum/__init__.py:4229 #, python-format msgid "" "Cannot add package %s to transaction. Not a compatible architecture: %s" msgstr "" "Kan ikke tilføje pakke %s til overførsel. Ikke en kompatibel arkitektur: %s" #: ../yum/__init__.py:4051 #, python-format msgid "Cannot install package %s. It is obsoleted by installed package %s" msgstr "Kan ikke installere pakke %s. Den er forældet af installeret pakke %s" #: ../yum/__init__.py:4059 #, python-format msgid "" "Package %s not installed, cannot update it. Run yum install to install it " "instead." msgstr "" "Pakken %s er ikke installeret, sÃ¥ den kan ikke opdateres. Kør yum install " "for at installere den istedet." #: ../yum/__init__.py:4078 ../yum/__init__.py:4085 #, python-format msgid "" "Package %s.%s not installed, cannot update it. Run yum install to install it" " instead." msgstr "" #: ../yum/__init__.py:4094 ../yum/__init__.py:4158 ../yum/__init__.py:4234 #, python-format msgid "Excluding %s" msgstr "Ekskluderer %s" #: ../yum/__init__.py:4099 #, python-format msgid "Marking %s to be installed" msgstr "Markerer %s til installation" #: ../yum/__init__.py:4105 #, python-format msgid "Marking %s as an update to %s" msgstr "Markerer %s som en opdatering til %s" #: ../yum/__init__.py:4112 #, python-format msgid "%s: does not update installed package." msgstr "%s kan ikke opdatere installeret pakke." #: ../yum/__init__.py:4147 ../yum/__init__.py:4223 #, python-format msgid "Cannot open file: %s. Skipping." msgstr "Kan ikke Ã¥bne fil: %s. Springer over." #: ../yum/__init__.py:4177 msgid "Problem in reinstall: no package matched to remove" msgstr "Problem med geninstallation, ingen pakke fundet til at blive fjernet" #: ../yum/__init__.py:4203 #, python-format msgid "Problem in reinstall: no package %s matched to install" msgstr "Problem med geninstallation: ingen pakke %s fundet til at installere" #: ../yum/__init__.py:4311 msgid "No package(s) available to downgrade" msgstr "Ingen pakke(r) er tilgængelig(e) til nedgradering" #: ../yum/__init__.py:4319 #, python-format msgid "Package %s is allowed multiple installs, skipping" msgstr "Pakke %s er tilladt at have flere installationer, springer over" #: ../yum/__init__.py:4365 #, python-format msgid "No Match for available package: %s" msgstr "Ingen match for tilgængelig pakke: %s" #: ../yum/__init__.py:4372 #, python-format msgid "Only Upgrade available on package: %s" msgstr "Opgradér kun tilgængelig pÃ¥ pakke: %s" #: ../yum/__init__.py:4442 ../yum/__init__.py:4479 #, python-format msgid "Failed to downgrade: %s" msgstr "Kunne ikke opgradere: %s" #: ../yum/__init__.py:4516 #, python-format msgid "Retrieving key from %s" msgstr "" #: ../yum/__init__.py:4534 msgid "GPG key retrieval failed: " msgstr "Hentning af GPG-nøglen mislykkedes: " #. if we decide we want to check, even though the sig failed #. here is where we would do that #: ../yum/__init__.py:4557 #, python-format msgid "GPG key signature on key %s does not match CA Key for repo: %s" msgstr "" #: ../yum/__init__.py:4559 msgid "GPG key signature verified against CA Key(s)" msgstr "" #: ../yum/__init__.py:4567 #, python-format msgid "Invalid GPG Key from %s: %s" msgstr "Ugyldig GPG-nøgle fra %s: %s" #: ../yum/__init__.py:4576 #, python-format msgid "GPG key parsing failed: key does not have value %s" msgstr "Tolkning af GPG-nøgle mislykkedes: nøgle har ikke nogen værdi %s" #: ../yum/__init__.py:4592 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid : %s\n" " Package: %s (%s)\n" " From : %s" msgstr "" #: ../yum/__init__.py:4600 #, python-format msgid "" "Importing %s key 0x%s:\n" " Userid: \"%s\"\n" " From : %s" msgstr "" #: ../yum/__init__.py:4634 #, python-format msgid "GPG key at %s (0x%s) is already installed" msgstr "GPG-nøgle pÃ¥ %s (0x%s) er allerede installeret" #: ../yum/__init__.py:4671 #, python-format msgid "Key import failed (code %d)" msgstr "Importering af nøgle mislykkedes (kode %d)" #: ../yum/__init__.py:4672 ../yum/__init__.py:4755 msgid "Key imported successfully" msgstr "Nøglen blev importet med succes" #: ../yum/__init__.py:4676 msgid "Didn't install any keys" msgstr "" #: ../yum/__init__.py:4680 #, 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-nøglen er vist for \"%s\" pakkearkivet er allerede installeret, men den er ikke korrekt for denne pakke.\n" "Kontrollér at konfigurationen af nøgle-URL'er er korrekt for denne kilde." #: ../yum/__init__.py:4689 msgid "Import of key(s) didn't help, wrong key(s)?" msgstr "Importering af nøgle(r) hjalp ikke, forkerte nøgle(r)?" #: ../yum/__init__.py:4713 #, python-format msgid "GPG key at %s (0x%s) is already imported" msgstr "GPG-nøgle pÃ¥ %s (0x%s) er allerede importeret" #: ../yum/__init__.py:4754 msgid "Key import failed" msgstr "Importering af nøgle mislykkedes" #: ../yum/__init__.py:4770 #, python-format msgid "Didn't install any keys for repo %s" msgstr "" #: ../yum/__init__.py:4774 #, python-format msgid "" "The GPG keys listed for the \"%s\" repository are already installed but they are not correct.\n" "Check that the correct key URLs are configured for this repository." msgstr "" "GPG-nøglen listet for pakkearkivet \"%s\" er allerede installeret, men de er ikke korrekte.\n" "Kontrollér at de korrekte nøgle-url'er er konfigureret for dette pakkearkiv." #: ../yum/__init__.py:4924 msgid "Unable to find a suitable mirror." msgstr "Kunne ikke finde et passende filspejl." #: ../yum/__init__.py:4926 msgid "Errors were encountered while downloading packages." msgstr "Fejl blev fundet under hentning af pakker." #: ../yum/__init__.py:4981 #, python-format msgid "Please report this error at %s" msgstr "Rapportér venligst denne fejl pÃ¥ %s" #: ../yum/__init__.py:4998 msgid "Test Transaction Errors: " msgstr "Fejl i testoverførslen: " #: ../yum/__init__.py:5098 #, python-format msgid "Could not set cachedir: %s" msgstr "Kunne ikke sætte mellemlagermappe: %s" #: ../yum/__init__.py:5148 ../yum/__init__.py:5150 msgid "Dependencies not solved. Will not save unresolved transaction." msgstr "" #: ../yum/__init__.py:5179 ../yum/__init__.py:5181 #, python-format msgid "Could not save transaction file %s: %s" msgstr "" #: ../yum/__init__.py:5195 #, python-format msgid "Could not access/read saved transaction %s : %s" msgstr "" #: ../yum/__init__.py:5214 msgid "rpmdb ver mismatched saved transaction version, " msgstr "" #: ../yum/__init__.py:5216 msgid " ignoring, as requested." msgstr "" #: ../yum/__init__.py:5219 ../yum/__init__.py:5354 msgid " aborting." msgstr "" #: ../yum/__init__.py:5228 msgid "cannot find tsflags or tsflags not integer." msgstr "" #: ../yum/__init__.py:5267 #, python-format msgid "Found txmbr in unknown current state: %s" msgstr "" #: ../yum/__init__.py:5271 #, python-format msgid "Could not find txmbr: %s in state %s" msgstr "" #: ../yum/__init__.py:5307 ../yum/__init__.py:5324 #, python-format msgid "Could not find txmbr: %s from origin: %s" msgstr "" #: ../yum/__init__.py:5349 msgid "Transaction members, relations are missing or ts has been modified," msgstr "" #: ../yum/__init__.py:5351 msgid " ignoring, as requested. You must redepsolve!" msgstr "" #. Mostly copied from YumOutput._outKeyValFill() #: ../yum/plugins.py:209 msgid "Loaded plugins: " msgstr "Indlæste udvidelsesmoduler: " #: ../yum/plugins.py:223 ../yum/plugins.py:229 #, python-format msgid "No plugin match for: %s" msgstr "Intet udvidelsesmodul til: %s" #: ../yum/plugins.py:259 #, python-format msgid "Not loading \"%s\" plugin, as it is disabled" msgstr "Indlæser ikke \"%s\" udvidelsesmodul, fordi det er deaktiveret" #. Give full backtrace: #: ../yum/plugins.py:271 #, python-format msgid "Plugin \"%s\" can't be imported" msgstr "Udvidelsesmodul \"%s\" kan ikke importeres" #: ../yum/plugins.py:278 #, python-format msgid "Plugin \"%s\" doesn't specify required API version" msgstr "Udvidelsesmodul \"%s\" angiver ikke hvilken API-version der er pÃ¥krævet" #: ../yum/plugins.py:283 #, python-format msgid "Plugin \"%s\" requires API %s. Supported API is %s." msgstr "Udvidelsesmodul \"%s\" krævet API %s. Understøttet API er %s." #: ../yum/plugins.py:316 #, python-format msgid "Loading \"%s\" plugin" msgstr "Indlæser \"%s\" udvidelsesmodul" #: ../yum/plugins.py:323 #, python-format msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" msgstr "" "To eller flere udvidelsesmoduler med navnet \"%s\" er fundet i søgestien for" " udvidelsesmoduler" #: ../yum/plugins.py:343 #, python-format msgid "Configuration file %s not found" msgstr "Konfigurationsfilen %s er ikke fundet" #. for #. Configuration files for the plugin not found #: ../yum/plugins.py:346 #, python-format msgid "Unable to find configuration file for plugin %s" msgstr "Kunne ikke finde konfigurationsfilen til udvidelsesmodul: %s" #: ../yum/plugins.py:508 msgid "registration of commands not supported" msgstr "registrering af komandoer er ikke understøttet" #: ../yum/rpmsack.py:148 msgid "has missing requires of" msgstr "har manglende afhængigheder af" #: ../yum/rpmsack.py:151 msgid "has installed conflicts" msgstr "har installerede konflikter" #: ../yum/rpmsack.py:160 #, python-format msgid "%s is a duplicate with %s" msgstr "%s er en dublet af %s" #: ../yum/rpmsack.py:168 #, python-format msgid "%s is obsoleted by %s" msgstr "%s er forældet af %s" #: ../yum/rpmsack.py:176 #, python-format msgid "%s provides %s but it cannot be found" msgstr "%s giver %s men kan ikke findes" #: ../yum/rpmtrans.py:80 msgid "Repackaging" msgstr "Genpakning" #: ../rpmUtils/oldUtils.py:33 #, python-format msgid "Header cannot be opened or does not match %s, %s." msgstr "Headerfil kunne ikke Ã¥bnes, eller matchede ikke %s, %s." #: ../rpmUtils/oldUtils.py:53 #, python-format msgid "RPM %s fails md5 check" msgstr "RPM %s fejlede md5-kontrol" #: ../rpmUtils/oldUtils.py:151 msgid "Could not open RPM database for reading. Perhaps it is already in use?" msgstr "" "Kunne ikke Ã¥bne RPM-database til læsning. MÃ¥ske er den allerede i brug?" #: ../rpmUtils/oldUtils.py:183 msgid "Got an empty Header, something has gone wrong" msgstr "Fandt en tom headerfil, noget er gÃ¥et galt" #: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260 #: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266 #, python-format msgid "Damaged Header %s" msgstr "Ødelagt headerfil %s" #: ../rpmUtils/oldUtils.py:281 #, python-format msgid "Error opening rpm %s - error %s" msgstr "Fejl ved Ã¥bning af RPM %s - fejl %s" yum-3.4.3/cli.py0000664000076400007640000022003611602434452012452 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University # Written by Seth Vidal """ Command line interface yum class and related. """ import os import re import sys import time import random import logging from optparse import OptionParser,OptionGroup import rpm from weakref import proxy as weakref import output import shell import yum import yum.Errors import yum.logginglevels import yum.misc import yum.plugins from rpmUtils.arch import isMultiLibArch from yum import _, P_ from yum.rpmtrans import RPMTransaction import signal import yumcommands from yum.i18n import to_unicode, to_utf8 # This is for yum-utils/yumdownloader in RHEL-5, where it isn't importing this # directly but did do "from cli import *", and we did have this in 3.2.22. I # just _love_ how python re-exports these by default. from yum.packages import parsePackages def sigquit(signum, frame): """ SIGQUIT handler for the yum cli. """ print >> sys.stderr, "Quit signal sent - exiting immediately" sys.exit(1) class CliError(yum.Errors.YumBaseError): """ Command line interface related Exception. """ def __init__(self, args=''): yum.Errors.YumBaseError.__init__(self) self.args = args class YumBaseCli(yum.YumBase, output.YumOutput): """This is the base class for yum cli. Inherits from yum.YumBase and output.YumOutput """ def __init__(self): # handle sigquit early on signal.signal(signal.SIGQUIT, sigquit) yum.YumBase.__init__(self) output.YumOutput.__init__(self) logging.basicConfig() self.logger = logging.getLogger("yum.cli") self.verbose_logger = logging.getLogger("yum.verbose.cli") self.yum_cli_commands = {} self.use_txmbr_in_callback = True self.registerCommand(yumcommands.InstallCommand()) self.registerCommand(yumcommands.UpdateCommand()) self.registerCommand(yumcommands.InfoCommand()) self.registerCommand(yumcommands.ListCommand()) self.registerCommand(yumcommands.EraseCommand()) self.registerCommand(yumcommands.GroupsCommand()) self.registerCommand(yumcommands.MakeCacheCommand()) self.registerCommand(yumcommands.CleanCommand()) self.registerCommand(yumcommands.ProvidesCommand()) self.registerCommand(yumcommands.CheckUpdateCommand()) self.registerCommand(yumcommands.SearchCommand()) self.registerCommand(yumcommands.UpgradeCommand()) self.registerCommand(yumcommands.LocalInstallCommand()) self.registerCommand(yumcommands.ResolveDepCommand()) self.registerCommand(yumcommands.ShellCommand()) self.registerCommand(yumcommands.DepListCommand()) self.registerCommand(yumcommands.RepoListCommand()) self.registerCommand(yumcommands.HelpCommand()) self.registerCommand(yumcommands.ReInstallCommand()) self.registerCommand(yumcommands.DowngradeCommand()) self.registerCommand(yumcommands.VersionCommand()) self.registerCommand(yumcommands.HistoryCommand()) self.registerCommand(yumcommands.CheckRpmdbCommand()) self.registerCommand(yumcommands.DistroSyncCommand()) self.registerCommand(yumcommands.LoadTransactionCommand()) def registerCommand(self, command): for name in command.getNames(): if name in self.yum_cli_commands: raise yum.Errors.ConfigError(_('Command "%s" already defined') % name) self.yum_cli_commands[name] = command def doRepoSetup(self, thisrepo=None, dosack=1): """grabs the repomd.xml for each enabled repository and sets up the basics of the repository""" if self._repos and thisrepo is None: return self._repos if not thisrepo: self.verbose_logger.log(yum.logginglevels.INFO_2, _('Setting up repositories')) # Call parent class to do the bulk of work # (this also ensures that reposetup plugin hook is called) if thisrepo: yum.YumBase._getRepos(self, thisrepo=thisrepo, doSetup=True) else: yum.YumBase._getRepos(self, thisrepo=thisrepo) if dosack: # so we can make the dirs and grab the repomd.xml but not import the md self.verbose_logger.log(yum.logginglevels.INFO_2, _('Reading repository metadata in from local files')) self._getSacks(thisrepo=thisrepo) return self._repos def _makeUsage(self): """ Format an attractive usage string for yum, listing subcommand names and summary usages. """ usage = 'yum [options] COMMAND\n\nList of Commands:\n\n' commands = yum.misc.unique([x for x in self.yum_cli_commands.values() if not (hasattr(x, 'hidden') and x.hidden)]) commands.sort(key=lambda x: x.getNames()[0]) for command in commands: # XXX Remove this when getSummary is common in plugins try: summary = command.getSummary() usage += "%-14s %s\n" % (command.getNames()[0], summary) except (AttributeError, NotImplementedError): 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 in base instance""" self.optparser = YumOptionParser(base=self, usage=self._makeUsage()) # Parse only command line options that affect basic yum setup opts = self.optparser.firstParse(args) # Just print out the version if that's what the user wanted if opts.version: print yum.__version__ 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) if opts.quiet: opts.debuglevel = 0 if opts.verbose: opts.debuglevel = opts.errorlevel = 6 # Read up configuration options and initialise plugins try: pc = self.preconf pc.fn = opts.conffile pc.root = root pc.init_plugins = not opts.noplugins pc.plugin_types = (yum.plugins.TYPE_CORE, yum.plugins.TYPE_INTERACTIVE) pc.optparser = self.optparser pc.debuglevel = opts.debuglevel pc.errorlevel = opts.errorlevel pc.disabled_plugins = self.optparser._splitArg(opts.disableplugins) 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: if not hasattr(self.conf, opt): msg ="Main config did not have a %s attr. before setopt" self.logger.warning(msg % opt) setattr(self.conf, opt, getattr(self.main_setopts, opt)) except yum.Errors.ConfigError, e: self.logger.critical(_('Config Error: %s'), e) sys.exit(1) except ValueError, e: self.logger.critical(_('Options Error: %s'), e) sys.exit(1) # update usage in case plugins have added commands self.optparser.set_usage(self._makeUsage()) self.plugins.run('args', args=args) # Now parse the command line for real and # apply some of the options to self.conf (opts, self.cmds) = self.optparser.setupYumConfig(args=args) if opts.version: opts.quiet = True opts.verbose = False # Check that firstParse didn't miss anything, and warn the user if it # did ... because this is really magic, and unexpected. if opts.quiet: opts.debuglevel = 0 if opts.verbose: opts.debuglevel = opts.errorlevel = 6 if opts.debuglevel != pc.debuglevel or opts.errorlevel != pc.errorlevel: self.logger.warning("Ignored option -q, -v, -d or -e (probably due to merging: -yq != -y -q)") # getRoot() changes it, but then setupYumConfig() changes it back. So # don't test for this, if we are using --installroot. if root == '/' and opts.conffile != pc.fn: self.logger.warning("Ignored option -c (probably due to merging -yc != -y -c)") if opts.version: self.conf.cache = 1 yum_progs = self.run_with_package_names done = False def sm_ui_time(x): return time.strftime("%Y-%m-%d %H:%M", time.gmtime(x)) def sm_ui_date(x): # For changelogs, there is no time return time.strftime("%Y-%m-%d", time.gmtime(x)) for pkg in sorted(self.rpmdb.returnPackages(patterns=yum_progs)): # We should only have 1 version of each... if done: print "" done = True if pkg.epoch == '0': ver = '%s-%s.%s' % (pkg.version, pkg.release, pkg.arch) else: ver = '%s:%s-%s.%s' % (pkg.epoch, pkg.version, pkg.release, pkg.arch) name = "%s%s%s" % (self.term.MODE['bold'], pkg.name, self.term.MODE['normal']) print _(" Installed: %s-%s at %s") %(name, ver, sm_ui_time(pkg.installtime)) print _(" Built : %s at %s") % (pkg.packager, sm_ui_time(pkg.buildtime)) print _(" Committed: %s at %s") % (pkg.committer, sm_ui_date(pkg.committime)) sys.exit(0) if opts.sleeptime is not None: sleeptime = random.randrange(opts.sleeptime*60) else: sleeptime = 0 # save our original args out self.args = args # save out as a nice command string self.cmdstring = 'yum ' for arg in self.args: self.cmdstring += '%s ' % arg try: self.parseCommands() # before we return check over the base command + args # make sure they match/make sense except CliError: sys.exit(1) # run the sleep - if it's unchanged then it won't matter time.sleep(sleeptime) def parseCommands(self): """reads self.cmds and parses them out to make sure that the requested base command + argument makes any sense at all""" self.verbose_logger.debug('Yum Version: %s', yum.__version__) self.verbose_logger.log(yum.logginglevels.DEBUG_4, 'COMMAND: %s', self.cmdstring) self.verbose_logger.log(yum.logginglevels.DEBUG_4, 'Installroot: %s', self.conf.installroot) if len(self.conf.commands) == 0 and len(self.cmds) < 1: self.cmds = self.conf.commands else: self.conf.commands = self.cmds if len(self.cmds) < 1: self.logger.critical(_('You need to give some command')) self.usage() raise CliError self.basecmd = self.cmds[0] # our base command self.extcmds = self.cmds[1:] # out extended arguments/commands if len(self.extcmds) > 0: self.verbose_logger.log(yum.logginglevels.DEBUG_4, 'Ext Commands:\n') for arg in self.extcmds: self.verbose_logger.log(yum.logginglevels.DEBUG_4, ' %s', arg) if self.basecmd not in self.yum_cli_commands: self.logger.critical(_('No such command: %s. Please use %s --help'), self.basecmd, sys.argv[0]) raise CliError self.yum_cli_commands[self.basecmd].doCheck(self, self.basecmd, self.extcmds) def _shell_history_write(self): if not hasattr(self, '_shell_history_cmds'): return if not self._shell_history_cmds: return data = self._shell_history_cmds # Turn: [["a", "b"], ["c", "d"]] => "a b\nc d\n" data = [" ".join(cmds) for cmds in data] data.append('') data = "\n".join(data) self.history.write_addon_data('shell-cmds', data) def doShell(self): """do a shell-like interface for yum commands""" yumshell = shell.YumShell(base=self) # We share this array... self._shell_history_cmds = yumshell._shell_history_cmds if len(self.extcmds) == 0: yumshell.cmdloop() else: yumshell.script() del self._shell_history_cmds return yumshell.result, yumshell.resultmsgs def errorSummary(self, errstring): """ parse the error string for 'interesting' errors which can be grouped, such as disk space issues """ summary = '' # do disk space report first p = re.compile('needs (\d+)MB on the (\S+) filesystem') disk = {} for m in p.finditer(errstring): 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)) if disk: summary += _('Disk Requirements:\n') for k in disk: summary += P_(' At least %dMB more space needed on the %s filesystem.\n', ' At least %dMB more space needed on the %s filesystem.\n', disk[k]) % (disk[k], k) # TODO: simplify the dependency errors? # Fixup the summary summary = _('Error Summary\n-------------\n') + summary return summary def doCommands(self): """ Calls the base command passes the extended commands/args out to be parsed (most notably package globs). Returns a numeric result code and an optional string - 0 = we're done, exit - 1 = we've errored, exit with error string - 2 = we've got work yet to do, onto the next stage """ # at this point we know the args are valid - we don't know their meaning # but we know we're not being sent garbage # setup our transaction set if the command we're using needs it # compat with odd modules not subclassing YumCommand needTs = True needTsRemove = False cmd = self.yum_cli_commands[self.basecmd] if hasattr(cmd, 'needTs'): needTs = cmd.needTs(self, self.basecmd, self.extcmds) if not needTs and hasattr(cmd, 'needTsRemove'): needTsRemove = cmd.needTsRemove(self, self.basecmd, self.extcmds) if needTs or needTsRemove: try: self._getTs(needTsRemove) except yum.Errors.YumBaseError, e: return 1, [str(e)] return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds) def doTransaction(self): """takes care of package downloading, checking, user confirmation and actually RUNNING the transaction""" # just make sure there's not, well, nothing to do if len(self.tsInfo) == 0: self.verbose_logger.info(_('Trying to run the transaction but nothing to do. Exiting.')) return -1 # NOTE: In theory we can skip this in -q -y mode, for a slight perf. # gain. But it's probably doom to have a different code path. lsts = self.listTransaction() if self.verbose_logger.isEnabledFor(yum.logginglevels.INFO_1): self.verbose_logger.log(yum.logginglevels.INFO_1, lsts) elif not self.conf.assumeyes: # If we are in quiet, and assumeyes isn't on we want to output # at least the transaction list anyway. self.logger.warn(lsts) # 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: downloadpkgs.append(po) # Close the connection to the rpmdb so that rpm doesn't hold the SIGINT # handler during the downloads. self.ts is reinitialised later in this # function anyway (initActionTs). self.ts.close() # Report the total download size to the user, so he/she can base # the answer on this info if not stuff_to_download: self.reportRemoveSize(rmpkgs) else: self.reportDownloadSize(downloadpkgs, install_only) # confirm with user if self._promptWanted(): if not self.userconfirm(): self.verbose_logger.info(_('Exiting on user Command')) return -1 self.verbose_logger.log(yum.logginglevels.INFO_2, _('Downloading Packages:')) problems = self.downloadPkgs(downloadpkgs, callback_total=self.download_callback_total_cb) if len(problems) > 0: errstring = '' errstring += _('Error Downloading Packages:\n') for key in problems: errors = yum.misc.unique(problems[key]) for error in errors: errstring += ' %s: %s\n' % (key, error) raise yum.Errors.YumBaseError, errstring # Check GPG signatures if self.gpgsigcheck(downloadpkgs) != 0: return -1 self.initActionTs() # save our dsCallback out dscb = self.dsCallback self.dsCallback = None # dumb, dumb dumb dumb! self.populateTs(keepold=0) # sigh rcd_st = time.time() self.verbose_logger.log(yum.logginglevels.INFO_2, _('Running Transaction Check')) msgs = self._run_rpm_check() if msgs: rpmlib_only = True for msg in msgs: if msg.startswith('rpmlib('): continue rpmlib_only = False if rpmlib_only: print _("ERROR You need to update rpm to handle:") else: print _('ERROR with transaction check vs depsolve:') for msg in msgs: print to_utf8(msg) if rpmlib_only: return 1, [_('RPM needs to be updated')] return 1, [_('Please report this error in %s') % self.conf.bugtracker_url] self.verbose_logger.debug('Transaction Check time: %0.3f' % (time.time() - rcd_st)) tt_st = time.time() self.verbose_logger.log(yum.logginglevels.INFO_2, _('Running Transaction Test')) if not self.conf.diskspacecheck: self.tsInfo.probFilterFlags.append(rpm.RPMPROB_FILTER_DISKSPACE) self.ts.order() # order the transaction self.ts.clean() # release memory not needed beyond this point testcb = RPMTransaction(self, test=True) tserrors = self.ts.test(testcb) del testcb if len(tserrors) > 0: errstring = _('Transaction Check Error:\n') for descr in tserrors: errstring += ' %s\n' % to_unicode(descr) raise yum.Errors.YumBaseError, errstring + '\n' + \ self.errorSummary(errstring) self.verbose_logger.log(yum.logginglevels.INFO_2, _('Transaction Test Succeeded')) self.verbose_logger.debug('Transaction Test time: %0.3f' % (time.time() - tt_st)) # unset the sigquit handler signal.signal(signal.SIGQUIT, signal.SIG_DFL) ts_st = time.time() # Reinstalls broke in: 7115478c527415cb3c8317456cdf50024de89a94 ... # I assume there's a "better" fix, but this fixes reinstalls and lets # other options continue as is (and they seem to work). have_reinstalls = False for txmbr in self.tsInfo.getMembers(): if txmbr.reinstall: have_reinstalls = True break if have_reinstalls: self.initActionTs() # make a new, blank ts to populate self.populateTs(keepold=0) # populate the ts self.ts.check() #required for ordering self.ts.order() # order self.ts.clean() # release memory not needed beyond this point # put back our depcheck callback self.dsCallback = dscb # setup our rpm ts callback cb = RPMTransaction(self, display=output.YumCliRPMCallBack(weakref(self))) if self.conf.debuglevel < 2: cb.display.output = False self.verbose_logger.log(yum.logginglevels.INFO_2, _('Running Transaction')) resultobject = self.runTransaction(cb=cb) self.verbose_logger.debug('Transaction time: %0.3f' % (time.time() - ts_st)) # close things self.verbose_logger.log(yum.logginglevels.INFO_1, self.postTransactionOutput()) # put back the sigquit handler signal.signal(signal.SIGQUIT, sigquit) return resultobject.return_code def gpgsigcheck(self, pkgs): '''Perform GPG signature verification on the given packages, installing keys if possible Returns non-zero if execution should stop (user abort). Will raise YumBaseError if there's a problem ''' for po in pkgs: result, errmsg = self.sigCheckPkg(po) if result == 0: # Verified ok, or verify not req'd continue elif result == 1: if not sys.stdin.isatty() and not self.conf.assumeyes: raise yum.Errors.YumBaseError, \ _('Refusing to automatically import keys when running ' \ 'unattended.\nUse "-y" to override.') # the callback here expects to be able to take options which # userconfirm really doesn't... so fake it self.getKeyForPackage(po, lambda x, y, z: self.userconfirm()) else: # Fatal error raise yum.Errors.YumBaseError, errmsg return 0 def _maybeYouMeant(self, arg): """ If install argument doesn't match with case, tell the user. """ matches = self.doPackageLists(patterns=[arg], ignore_case=True) matches = matches.installed + matches.available matches = set(map(lambda x: x.name, matches)) if matches: msg = self.fmtKeyValFill(_(' * Maybe you meant: '), ", ".join(matches)) self.verbose_logger.log(yum.logginglevels.INFO_2, to_unicode(msg)) def _checkMaybeYouMeant(self, arg, always_output=True, rpmdb_only=False): """ If the update/remove argument doesn't match with case, or due to not being installed, tell the user. """ # always_output is a wart due to update/remove not producing the # same output. # if it is a grouppattern then none of this is going to make any sense # skip it. if not arg or arg[0] == '@': return pkgnarrow='all' if rpmdb_only: pkgnarrow='installed' matches = self.doPackageLists(pkgnarrow=pkgnarrow, patterns=[arg], ignore_case=False) if (matches.installed or (not matches.available and self.returnInstalledPackagesByDep(arg))): return # Found a match so ignore hibeg = self.term.MODE['bold'] hiend = self.term.MODE['normal'] if matches.available: self.verbose_logger.log(yum.logginglevels.INFO_2, _('Package(s) %s%s%s available, but not installed.'), hibeg, arg, hiend) return # No package name, so do the maybeYouMeant thing here too matches = self.doPackageLists(pkgnarrow=pkgnarrow, patterns=[arg], ignore_case=True) if not matches.installed and matches.available: self.verbose_logger.log(yum.logginglevels.INFO_2, _('Package(s) %s%s%s available, but not installed.'), hibeg, arg, hiend) return matches = set(map(lambda x: x.name, matches.installed)) if always_output or matches: self.verbose_logger.log(yum.logginglevels.INFO_2, _('No package %s%s%s available.'), hibeg, arg, hiend) if matches: msg = self.fmtKeyValFill(_(' * Maybe you meant: '), ", ".join(matches)) self.verbose_logger.log(yum.logginglevels.INFO_2, msg) def installPkgs(self, userlist): """Attempts to take the user specified list of packages/wildcards and install them, or if they are installed, update them to a newer version. If a complete version number if specified, attempt to upgrade (or downgrade if they have been removed) them to the specified version""" # get the list of available packages # iterate over the user's list # add packages to Transaction holding class if they match. # if we've added any packages to the transaction then return 2 and a string # if we've hit a snag, return 1 and the failure explanation # if we've got nothing to do, return 0 and a 'nothing available to install' string 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))): self.localInstall(filelist=[arg]) continue # it was something on disk and it ended in rpm # no matter what we don't go looking at repos try: self.install(pattern=arg) except yum.Errors.InstallError: self.verbose_logger.log(yum.logginglevels.INFO_2, _('No package %s%s%s available.'), self.term.MODE['bold'], arg, self.term.MODE['normal']) self._maybeYouMeant(arg) else: done = True if len(self.tsInfo) > oldcount: change = len(self.tsInfo) - oldcount return 2, [P_('%d package to install', '%d packages to install', change) % change] if not done: return 1, [_('Nothing to do')] return 0, [_('Nothing to do')] def updatePkgs(self, userlist, quiet=0, update_to=False): """take user commands and populate transaction wrapper with packages to be updated""" # if there is no userlist, then do global update below # this is probably 90% of the calls # if there is a userlist then it's for updating pkgs, not obsoleting oldcount = len(self.tsInfo) if len(userlist) == 0: # simple case - do them all self.update() else: # go through the userlist - look for items that are local rpms. If we find them # pass them off to localInstall() and then move on localupdates = [] for item in userlist: if (item.endswith('.rpm') and (yum.misc.re_remote_url(item) or os.path.exists(item))): localupdates.append(item) if len(localupdates) > 0: self.localInstall(filelist=localupdates, updateonly=1) for item in localupdates: userlist.remove(item) for arg in userlist: if not self.update(pattern=arg, update_to=update_to): self._checkMaybeYouMeant(arg) if len(self.tsInfo) > oldcount: change = len(self.tsInfo) - oldcount return 2, [P_('%d package marked for Update', '%d packages marked for Update', change) % change] 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). """ level = 'diff' if userlist and userlist[0] in ('full', 'diff', 'different'): level = userlist[0] userlist = userlist[1:] if level == 'different': level = 'diff' 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): # Latest installed == Latest avail. if level == 'diff': continue # level == full: do reinstalls if checksum doesn't match. # do removals, if older installed versions. for napkg in self.rpmdb.searchNames([ipkgname]): if (not self.allowedMultipleInstalls(apkg) and not napkg.verEQ(ipkg)): dupdates.extend(self.remove(po=napkg)) continue nayi = napkg.yumdb_info for apkg in self.pkgSack.searchPkgTuple(napkg.pkgtup): if ('checksum_type' in nayi and 'checksum_data' in nayi and nayi.checksum_type == apkg.checksum_type and nayi.checksum_data == apkg.pkgId): found = True break if found: continue dupdates.extend(self.reinstall(pkgtup=napkg.pkgtup)) 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: return 2, [P_('%d package marked for Distribution Synchronization', '%d packages marked for Distribution Synchronization', len(dupdates)) % len(dupdates)] 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""" oldcount = len(self.tsInfo) all_rms = [] for arg in userlist: rms = self.remove(pattern=arg) if not rms: self._checkMaybeYouMeant(arg, always_output=False, rpmdb_only=True) all_rms.extend(rms) if all_rms: return 2, [P_('%d package marked for removal', '%d packages marked for removal', len(all_rms)) % len(all_rms)] else: return 0, [_('No Packages marked for removal')] def downgradePkgs(self, userlist): """Attempts to take the user specified list of packages/wildcards and downgrade them. If a complete version number if specified, attempt to downgrade them to the specified version""" oldcount = len(self.tsInfo) for arg in userlist: if (arg.endswith('.rpm') and (yum.misc.re_remote_url(arg) or os.path.exists(arg))): self.downgradeLocal(arg) continue # it was something on disk and it ended in rpm # no matter what we don't go looking at repos try: self.downgrade(pattern=arg) except yum.Errors.DowngradeError: self.verbose_logger.log(yum.logginglevels.INFO_2, _('No package %s%s%s available.'), self.term.MODE['bold'], arg, self.term.MODE['normal']) self._maybeYouMeant(arg) if len(self.tsInfo) > oldcount: change = len(self.tsInfo) - oldcount return 2, [P_('%d package to downgrade', '%d packages to downgrade', change) % change] return 0, [_('Nothing to do')] def reinstallPkgs(self, userlist): """Attempts to take the user specified list of packages/wildcards and reinstall them. """ oldcount = len(self.tsInfo) for arg in userlist: if (arg.endswith('.rpm') and (yum.misc.re_remote_url(arg) or os.path.exists(arg))): self.reinstallLocal(arg) continue # it was something on disk and it ended in rpm # no matter what we don't go looking at repos try: self.reinstall(pattern=arg) except yum.Errors.ReinstallRemoveError: self._checkMaybeYouMeant(arg, always_output=False) except yum.Errors.ReinstallInstallError, e: 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) if len(self.tsInfo) > oldcount: change = len(self.tsInfo) - oldcount return 2, [P_('%d package to reinstall', '%d packages to reinstall', change) % change] return 0, [_('Nothing to do')] def localInstall(self, filelist, updateonly=0): """handles installs/updates of rpms provided on the filesystem in a local dir (ie: not from a repo)""" # read in each package into a YumLocalPackage Object # append it to self.localPackages # check if it can be installed or updated based on nevra versus rpmdb # don't import the repos until we absolutely need them for depsolving if len(filelist) == 0: return 0, [_('No Packages Provided')] 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 if installing: return 2, [_('Package(s) to install')] return 0, [_('Nothing to do')] def returnPkgLists(self, extcmds, installed_available=False): """Returns packages lists based on arguments on the cli.returns a GenericHolder instance with the following lists defined: available = list of packageObjects installed = list of packageObjects updates = tuples of packageObjects (updating, installed) extras = list of packageObjects obsoletes = tuples of packageObjects (obsoleting, installed) recent = list of packageObjects installed_available = that the available package list is present as .hidden_available when doing any of: all/available/installed """ special = ['available', 'installed', 'all', 'extras', 'updates', 'recent', 'obsoletes'] pkgnarrow = 'all' done_hidden_available = False done_hidden_installed = False if len(extcmds) > 0: if installed_available and extcmds[0] == 'installed': done_hidden_available = True extcmds.pop(0) elif installed_available and extcmds[0] == 'available': done_hidden_installed = True extcmds.pop(0) elif extcmds[0] in special: pkgnarrow = extcmds.pop(0) ypl = self.doPackageLists(pkgnarrow=pkgnarrow, patterns=extcmds, ignore_case=True) if self.conf.showdupesfromrepos: ypl.available += ypl.reinstall_available if installed_available: ypl.hidden_available = ypl.available ypl.hidden_installed = ypl.installed if done_hidden_available: ypl.available = [] if done_hidden_installed: ypl.installed = [] return ypl def search(self, args): """cli wrapper method for module search function, searches simple text tags in a package object""" # call the yum module search function with lists of tags to search # and what to search for # display the list of matches searchlist = ['name', 'summary', 'description', 'url'] dups = self.conf.showdupesfromrepos args = map(to_unicode, args) okeys = set() akeys = set() # All keys, used to see if nothing matched mkeys = set() # "Main" set of keys for N/S search (biggest term. hit). pos = set() def _print_match_section(text): # Print them in the order they were passed used_keys = [arg for arg in args if arg in keys] print self.fmtSection(text % ", ".join(used_keys)) # First try just the name/summary fields, and if we get any hits # don't do the other stuff. Unless the user overrides via. "all". if len(args) > 1 and args[0] == 'all': args.pop(0) else: matching = self.searchGenerator(['name', 'summary'], args, showdups=dups, keys=True) for (po, keys, matched_value) in matching: if keys != okeys: if akeys: if len(mkeys) == len(args): break print "" else: mkeys = set(keys) _print_match_section(_('N/S Matched: %s')) okeys = keys pos.add(po) akeys.update(keys) self.matchcallback(po, matched_value, args) matching = self.searchGenerator(searchlist, args, showdups=dups, keys=True) okeys = set() # If we got a hit with just name/summary then we only care about hits # with _more_ search terms. Thus. if we hit all our search terms. do # nothing. if len(mkeys) == len(args): print "" if len(args) == 1: msg = _(' Name and summary matches %sonly%s, use "search all" for everything.') else: msg = _(' Full name and summary matches %sonly%s, use "search all" for everything.') print msg % (self.term.MODE['bold'], self.term.MODE['normal']) matching = [] for (po, keys, matched_value) in matching: # Don't print matches for "a", "b", "c" on N+S+D when we already # matched that on just N+S. if len(keys) <= len(mkeys): continue # Just print the highest level of full matches, when we did # minimal matches. Ie. "A", "B" match N+S, just print the # "A", "B", "C", "D" full match, and not the "B", "C", "D" matches. if mkeys and len(keys) < len(okeys): continue if keys != okeys: if akeys: print "" _print_match_section(_('Matched: %s')) okeys = keys akeys.update(keys) self.matchcallback(po, matched_value, args) if mkeys and len(mkeys) != len(args): print "" print _(' Name and summary matches %smostly%s, use "search all" for everything.') % (self.term.MODE['bold'], self.term.MODE['normal']) for arg in args: if arg not in akeys: self.logger.warning(_('Warning: No matches found for: %s'), arg) if not akeys: return 0, [_('No Matches found')] return 0, matching def deplist(self, args): """cli wrapper method for findDeps method takes a list of packages and returns a formatted deplist for that package""" pkgs = [] for arg in args: if (arg.endswith('.rpm') and (yum.misc.re_remote_url(arg) or os.path.exists(arg))): thispkg = yum.packages.YumUrlPackage(self, self.ts, arg) pkgs.append(thispkg) elif self.conf.showdupesfromrepos: pkgs.extend(self.pkgSack.returnPackages(patterns=[arg])) else: try: pkgs.extend(self.pkgSack.returnNewestByName(patterns=[arg])) except yum.Errors.PackageSackError: pass results = self.findDeps(pkgs) self.depListOutput(results) return 0, [] def provides(self, args): """use the provides methods in the rpmdb and pkgsack to produce a list of items matching the provides strings. This is a cli wrapper to the module""" old_sdup = self.conf.showdupesfromrepos # For output, as searchPackageProvides() is always in showdups mode self.conf.showdupesfromrepos = True cb = self.matchcallback_verbose matching = self.searchPackageProvides(args, callback=cb, callback_has_matchfor=True) if len(matching) == 0: # Try to be a bit clever, for commands, and python modules. # Maybe want something so we can do perl/etc. too? paths = set(sys.path + os.environ['PATH'].split(':')) nargs = [] for arg in args: if yum.misc.re_filename(arg) or yum.misc.re_glob(arg): continue for path in paths: if not path: continue nargs.append("%s/%s" % (path, arg)) matching = self.searchPackageProvides(nargs, callback=cb, callback_has_matchfor=True) self.conf.showdupesfromrepos = old_sdup if len(matching) == 0: return 0, ['No Matches found'] return 0, [] def resolveDepCli(self, args): """returns a package (one per user arg) that provide the supplied arg""" for arg in args: try: pkg = self.returnPackageByDep(arg) except yum.Errors.YumBaseError: self.logger.critical(_('No Package Found for %s'), arg) else: msg = '%s:%s-%s-%s.%s' % (pkg.epoch, pkg.name, pkg.version, pkg.release, pkg.arch) self.verbose_logger.info(msg) return 0, [] 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')) pkgcode, pkgresults = self.cleanPackages() hdrcode, hdrresults = self.cleanHeaders() xmlcode, xmlresults = self.cleanMetadata() dbcode, dbresults = self.cleanSqlite() rpmcode, rpmresults = self.cleanRpmDB() self.plugins.run('clean') code = hdrcode + pkgcode + xmlcode + dbcode + rpmcode results = (hdrresults + pkgresults + xmlresults + dbresults + rpmresults) for msg in results: self.logger.debug(msg) return code, [] if 'headers' in userlist: self.logger.debug(_('Cleaning up Headers')) hdrcode, hdrresults = self.cleanHeaders() if 'packages' in userlist: self.logger.debug(_('Cleaning up Packages')) pkgcode, pkgresults = self.cleanPackages() if 'metadata' in userlist: self.logger.debug(_('Cleaning up xml metadata')) xmlcode, xmlresults = self.cleanMetadata() if 'dbcache' in userlist or 'metadata' in userlist: self.logger.debug(_('Cleaning up database cache')) dbcode, dbresults = self.cleanSqlite() if 'expire-cache' in userlist or 'metadata' in userlist: self.logger.debug(_('Cleaning up expire-cache metadata')) expccode, expcresults = self.cleanExpireCache() if 'rpmdb' in userlist: self.logger.debug(_('Cleaning up cached rpmdb data')) expccode, expcresults = self.cleanRpmDB() if 'plugins' in userlist: self.logger.debug(_('Cleaning up plugins')) self.plugins.run('clean') code = hdrcode + pkgcode + xmlcode + dbcode + expccode results = hdrresults + pkgresults + xmlresults + dbresults + expcresults for msg in results: self.verbose_logger.log(yum.logginglevels.INFO_2, msg) return code, [] def returnGroupLists(self, userlist): uservisible=1 if len(userlist) > 0: if userlist[0] == 'hidden': uservisible=0 userlist.pop(0) if not userlist: userlist = None # Match everything... installed, available = self.doGroupLists(uservisible=uservisible, patterns=userlist) if not installed and not available: self.logger.error(_('Warning: No groups match: %s'), ", ".join(userlist)) return 0, [] def _out_grp(sect, group): if not done: self.verbose_logger.log(yum.logginglevels.INFO_2, sect) msg = ' %s' % group.ui_name if self.verbose_logger.isEnabledFor(yum.logginglevels.DEBUG_3): msg += ' (%s)' % group.groupid if group.langonly: msg += ' [%s]' % group.langonly self.verbose_logger.log(yum.logginglevels.INFO_2, '%s', msg) done = False for group in installed: if group.langonly: continue _out_grp(_('Installed Groups:'), group) done = True done = False for group in installed: if not group.langonly: continue _out_grp(_('Installed Language Groups:'), group) done = True done = False for group in available: if group.langonly: continue _out_grp(_('Available Groups:'), group) done = True done = False for group in available: if not group.langonly: continue _out_grp(_('Available Language Groups:'), group) done = True return 0, [_('Done')] def returnGroupSummary(self, userlist): uservisible=1 if len(userlist) > 0: if userlist[0] == 'hidden': uservisible=0 userlist.pop(0) if not userlist: userlist = None # Match everything... installed, available = self.doGroupLists(uservisible=uservisible, patterns=userlist) def _out_grp(sect, num): if not num: return self.verbose_logger.log(yum.logginglevels.INFO_2, '%s %u', sect,num) done = 0 for group in installed: if group.langonly: continue done += 1 _out_grp(_('Installed Groups:'), done) done = 0 for group in installed: if not group.langonly: continue done += 1 _out_grp(_('Installed Language Groups:'), done) done = False for group in available: if group.langonly: continue done += 1 _out_grp(_('Available Groups:'), done) done = False for group in available: if not group.langonly: continue done += 1 _out_grp(_('Available Language Groups:'), done) return 0, [_('Done')] def returnGroupInfo(self, userlist): """returns complete information on a list of groups""" for strng in userlist: group_matched = False for group in self.comps.return_groups(strng): self.displayPkgsInGroups(group) group_matched = True if not group_matched: self.logger.error(_('Warning: Group %s does not exist.'), strng) return 0, [] def installGroups(self, grouplist): """for each group requested do 'selectGroup' on them.""" pkgs_used = [] for group_string in grouplist: group_matched = False for group in self.comps.return_groups(group_string): group_matched = True try: txmbrs = self.selectGroup(group.groupid) except yum.Errors.GroupsError: self.logger.critical(_('Warning: Group %s does not exist.'), group_string) continue else: pkgs_used.extend(txmbrs) if not group_matched: self.logger.error(_('Warning: Group %s does not exist.'), group_string) continue if not pkgs_used: return 0, [_('No packages in any requested group available to install or update')] else: return 2, [P_('%d package to Install', '%d packages to Install', len(pkgs_used)) % len(pkgs_used)] def removeGroups(self, grouplist): """Remove only packages of the named group(s). Do not recurse.""" pkgs_used = [] for group_string in grouplist: try: txmbrs = self.groupRemove(group_string) except yum.Errors.GroupsError: self.logger.critical(_('No group named %s exists'), group_string) continue else: pkgs_used.extend(txmbrs) if not pkgs_used: return 0, [_('No packages to remove from groups')] else: return 2, [P_('%d package to remove', '%d packages to remove', len(pkgs_used)) % len(pkgs_used)] def _promptWanted(self): # shortcut for the always-off/always-on options if self.conf.assumeyes: return False if self.conf.alwaysprompt: return True # prompt if: # package was added to fill a dependency # package is being removed # package wasn't explictly given on the command line for txmbr in self.tsInfo.getMembers(): if txmbr.isDep or \ txmbr.ts_state == 'e' or \ txmbr.name not in self.extcmds: return True # otherwise, don't prompt return False def usage(self): ''' Print out command line usage ''' sys.stdout.write(self.optparser.format_help()) def shellUsage(self): ''' Print out the shell usage ''' sys.stdout.write(self.optparser.get_usage()) def _installable(self, pkg, ematch=False): """check if the package is reasonably installable, true/false""" exactarchlist = self.conf.exactarchlist # we look through each returned possibility and rule out the # ones that we obviously can't use if self.rpmdb.contains(po=pkg): self.verbose_logger.log(yum.logginglevels.DEBUG_3, _('Package %s is already installed, skipping'), pkg) return False # everything installed that matches the name installedByKey = self.rpmdb.searchNevra(name=pkg.name) comparable = [] for instpo in installedByKey: if isMultiLibArch(instpo.arch) == isMultiLibArch(pkg.arch): comparable.append(instpo) else: self.verbose_logger.log(yum.logginglevels.DEBUG_3, _('Discarding non-comparable pkg %s.%s'), instpo.name, instpo.arch) continue # go through each package if len(comparable) > 0: for instpo in comparable: if pkg.verGT(instpo): # we're newer - this is an update, pass to them if instpo.name in exactarchlist: if pkg.arch == instpo.arch: return True else: return True elif pkg.verEQ(instpo): # same, ignore return False elif pkg.verLT(instpo): # lesser, check if the pkgtup is an exactmatch # if so then add it to be installed # if it can be multiply installed # this is where we could handle setting # it to be an 'oldpackage' revert. if ematch and self.allowedMultipleInstalls(pkg): return True else: # we've not got any installed that match n or n+a self.verbose_logger.log(yum.logginglevels.DEBUG_1, _('No other %s installed, adding to list for potential install'), pkg.name) return True return False class YumOptionParser(OptionParser): '''Subclass that makes some minor tweaks to make OptionParser do things the "yum way". ''' def __init__(self,base, **kwargs): # check if this is called with a utils=True/False parameter if 'utils' in kwargs: self._utils = kwargs['utils'] del kwargs['utils'] else: self._utils = False OptionParser.__init__(self, **kwargs) self.logger = logging.getLogger("yum.cli") self.base = base self.plugin_option_group = OptionGroup(self, _("Plugin Options")) self.add_option_group(self.plugin_option_group) self._addYumBasicOptions() def error(self, msg): '''This method is overridden so that error output goes to logger. ''' self.print_usage() self.logger.critical(_("Command line error: %s"), msg) sys.exit(1) def firstParse(self,args): # Parse only command line options that affect basic yum setup try: args = _filtercmdline( ('--noplugins','--version','-q', '-v', "--quiet", "--verbose"), ('-c', '--config', '-d', '--debuglevel', '-e', '--errorlevel', '--installroot', '--disableplugin', '--enableplugin', '--releasever', '--setopt'), args) except ValueError, arg: self.base.usage() print >> sys.stderr, (_("\n\n%s: %s option requires an argument") % ('Command line error', arg)) sys.exit(1) return self.parse_args(args=args)[0] @staticmethod def _splitArg(seq): """ Split all strings in seq, at "," and whitespace. Returns a new list. """ ret = [] for arg in seq: ret.extend(arg.replace(",", " ").split()) return ret def setupYumConfig(self, args=None): # Now parse the command line for real if not args: (opts, cmds) = self.parse_args() else: (opts, cmds) = self.parse_args(args=args) # Let the plugins know what happened on the command line self.base.plugins.setCmdLine(opts, cmds) try: # config file is parsed and moving us forward # set some things in it. # Handle remaining options if opts.assumeyes: self.base.conf.assumeyes =1 # Instead of going cache-only for a non-root user, try to use a # user writable cachedir. If that fails fall back to cache-only. if opts.cacheonly: self.base.conf.cache = 1 elif not self.base.setCacheDir(): self.base.conf.cache = 1 if opts.obsoletes: self.base.conf.obsoletes = 1 if opts.installroot: self._checkAbsInstallRoot(opts) self.base.conf.installroot = opts.installroot if opts.skipbroken: self.base.conf.skip_broken = True if opts.showdupesfromrepos: self.base.conf.showdupesfromrepos = True if opts.color not in (None, 'auto', 'always', 'never', 'tty', 'if-tty', 'yes', 'no', 'on', 'off'): raise ValueError, _("--color takes one of: auto, always, never") elif opts.color is None: if self.base.conf.color != 'auto': self.base.term.reinit(color=self.base.conf.color) else: _remap = {'tty' : 'auto', 'if-tty' : 'auto', '1' : 'always', 'true' : 'always', 'yes' : 'always', 'on' : 'always', '0' : 'always', 'false' : 'always', 'no' : 'never', 'off' : 'never'} opts.color = _remap.get(opts.color, opts.color) if opts.color != 'auto': self.base.term.reinit(color=opts.color) if opts.disableexcludes: disable_excludes = self._splitArg(opts.disableexcludes) else: disable_excludes = [] self.base.conf.disable_excludes = disable_excludes for exclude in self._splitArg(opts.exclude): try: excludelist = self.base.conf.exclude excludelist.append(exclude) self.base.conf.exclude = excludelist except yum.Errors.ConfigError, e: self.logger.critical(e) self.base.usage() sys.exit(1) if opts.rpmverbosity is not None: self.base.conf.rpmverbosity = opts.rpmverbosity # setup the progress bars/callbacks self.base.setupProgressCallbacks() # setup the callbacks to import gpg pubkeys and confirm them self.base.setupKeyImportCallbacks() # Process repo enables and disables in order for opt, repoexp in opts.repos: try: if opt == '--enablerepo': self.base.repos.enableRepo(repoexp) elif opt == '--disablerepo': self.base.repos.disableRepo(repoexp) except yum.Errors.ConfigError, e: self.logger.critical(e) self.base.usage() sys.exit(1) # make sure the added repos are setup. if len(opts.repos) > 0: self.base._getRepos(doSetup=True) # Disable all gpg key checking, if requested. if opts.nogpgcheck: # Altering the normal configs. doesn't work too well, esp. with # regard to dynamically enabled repos. self.base._override_sigchecks = True for repo in self.base.repos.listEnabled(): repo._override_sigchecks = True except ValueError, e: self.logger.critical(_('Options Error: %s'), e) self.base.usage() sys.exit(1) return opts, cmds def _checkAbsInstallRoot(self, opts): if not opts.installroot: return if opts.installroot[0] == '/': return # We have a relative installroot ... haha self.logger.critical(_('--installroot must be an absolute path: %s'), opts.installroot) sys.exit(1) def getRoot(self,opts): self._checkAbsInstallRoot(opts) # If the conf file is inside the installroot - use that. # otherwise look for it in the normal root if opts.installroot: if os.access(opts.installroot+'/'+opts.conffile, os.R_OK): opts.conffile = opts.installroot+'/'+opts.conffile elif opts.conffile == '/etc/yum/yum.conf': # check if /installroot/etc/yum.conf exists. if os.access(opts.installroot+'/etc/yum.conf', os.R_OK): opts.conffile = opts.installroot+'/etc/yum.conf' root=opts.installroot else: root = '/' return root def _wrapOptParseUsage(self, opt, value, parser, *args, **kwargs): self.base.usage() self.exit() def _addYumBasicOptions(self): def repo_optcb(optobj, opt, value, parser): '''Callback for the enablerepo and disablerepo option. Combines the values given for these options while preserving order from command line. ''' dest = eval('parser.values.%s' % optobj.dest) dest.append((opt, value)) if self._utils: group = OptionGroup(self, "Yum Base Options") self.add_option_group(group) else: group = self # Note that we can't use the default action="help" because of the # fact that print_help() unconditionally does .encode() ... which is # bad on unicode input. group.conflict_handler = "resolve" group.add_option("-h", "--help", action="callback", callback=self._wrapOptParseUsage, help=_("show this help message and exit")) group.conflict_handler = "error" group.add_option("-t", "--tolerant", action="store_true", help=_("be tolerant of errors")) group.add_option("-C", "--cacheonly", dest="cacheonly", action="store_true", help=_("run entirely from system cache, don't update cache")) group.add_option("-c", "--config", dest="conffile", default='/etc/yum/yum.conf', help=_("config file location"), metavar='[config file]') group.add_option("-R", "--randomwait", dest="sleeptime", type='int', default=None, help=_("maximum command wait time"), metavar='[minutes]') group.add_option("-d", "--debuglevel", dest="debuglevel", default=None, help=_("debugging output level"), type='int', metavar='[debug level]') group.add_option("--showduplicates", dest="showdupesfromrepos", action="store_true", help=_("show duplicates, in repos, in list/search commands")) group.add_option("-e", "--errorlevel", dest="errorlevel", default=None, help=_("error output level"), type='int', metavar='[error level]') group.add_option("", "--rpmverbosity", default=None, help=_("debugging output level for rpm"), metavar='[debug level name]') group.add_option("-q", "--quiet", dest="quiet", action="store_true", help=_("quiet operation")) group.add_option("-v", "--verbose", dest="verbose", action="store_true", help=_("verbose operation")) group.add_option("-y", "--assumeyes", dest="assumeyes", action="store_true", help=_("answer yes for all questions")) group.add_option("--version", action="store_true", help=_("show Yum version and exit")) group.add_option("--installroot", help=_("set install root"), metavar='[path]') group.add_option("--enablerepo", action='callback', type='string', callback=repo_optcb, dest='repos', default=[], help=_("enable one or more repositories (wildcards allowed)"), metavar='[repo]') group.add_option("--disablerepo", action='callback', type='string', callback=repo_optcb, dest='repos', default=[], help=_("disable one or more repositories (wildcards allowed)"), metavar='[repo]') group.add_option("-x", "--exclude", default=[], action="append", help=_("exclude package(s) by name or glob"), metavar='[package]') group.add_option("", "--disableexcludes", default=[], action="append", help=_("disable exclude from main, for a repo or for everything"), metavar='[repo]') group.add_option("--obsoletes", action="store_true", help=_("enable obsoletes processing during updates")) group.add_option("--noplugins", action="store_true", help=_("disable Yum plugins")) group.add_option("--nogpgcheck", action="store_true", help=_("disable gpg signature checking")) group.add_option("", "--disableplugin", dest="disableplugins", default=[], action="append", help=_("disable plugins by name"), metavar='[plugin]') group.add_option("", "--enableplugin", dest="enableplugins", default=[], action="append", help=_("enable plugins by name"), metavar='[plugin]') group.add_option("--skip-broken", action="store_true", dest="skipbroken", help=_("skip packages with depsolving problems")) group.add_option("", "--color", dest="color", default=None, 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): '''Keep only specific options from the command line argument list This function allows us to peek at specific command line options when using the optparse module. This is useful when some options affect what other options should be available. @param novalopts: A sequence of options to keep that don't take an argument. @param valopts: A sequence of options to keep that take a single argument. @param args: The command line arguments to parse (as per sys.argv[:1] @return: A list of strings containing the filtered version of args. Will raise ValueError if there was a problem parsing the command line. ''' # ' xemacs syntax hack out = [] args = list(args) # Make a copy because this func is destructive while len(args) > 0: a = args.pop(0) if '=' in a: opt, _ = a.split('=', 1) if opt in valopts: out.append(a) elif a == '--': out.append(a) elif a in novalopts: out.append(a) elif a in valopts: if len(args) < 1: raise ValueError, a next = args.pop(0) if next[0] == '-': raise ValueError, a out.extend([a, next]) else: # Check for single letter options that take a value, where the # value is right up against the option for opt in valopts: if len(opt) == 2 and a.startswith(opt): out.append(a) return out yum-3.4.3/INSTALL0000664000076400007640000000022511602434452012356 0ustar jamesjamesFor usage information, please see the README. run make run make install, if you're a masochist. you're better off making an rpm and installing it yum-3.4.3/test/0000775000076400007640000000000011602434452012305 5ustar jamesjamesyum-3.4.3/test/depsolvetests.py0000664000076400007640000013247511602434452015577 0ustar jamesjamesimport unittest from testbase import * from rpmUtils import arch import rpmUtils.arch class DepsolveTests(DepsolveTests): def testEmpty(self): po = FakePackage('zsh', '1', '1', None, 'i386') self.tsInfo.addInstall(po) self.tsInfo.remove(po.pkgtup) self.assertEquals('empty', *self.resolveCode()) def testInstallSinglePackageNoRequires(self): po = FakePackage('zsh', '1', '1', None, 'i386') self.tsInfo.addInstall(po) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po,)) def testInstallSinglePackageRequireNotProvided(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireInstalled(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1', '1', None, 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireInstalledRequireNotProvided(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1', '2', None, 'i386') po.addRequires('zap', None, (None, None, None)) self.rpmdb.addPackage(ipo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireInstalledRequireInstall(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) po2 = FakePackage('zap', '1', '2', None, 'i386') self.tsInfo.addInstall(po2) ipo = FakePackage('zip', '1', '3', None, 'i386') po.addRequires('zap', None, (None, None, None)) self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po2, ipo)) def testInstallSinglePackageRequireVer1NotProvided(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', (None, '1.3', '2')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.0', '2', None, 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireVer1Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', (None, '1.3', '2')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '2', None, 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer2NotProvided(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', (None, '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '2', None, 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireVer2Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', (None, '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', None, 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer3NotProvided(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'GE', ('1', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '0', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireVer3Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'GE', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer4NotProvided(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'LT', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireVer4_1Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'LT', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.0', '4', '2', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer4_2Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'LT', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '3', '2', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer4_3Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'LT', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', None, 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer4_4Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'LT', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '1', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireVer4_5Installed(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'LT', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '0.3', '4', '2', 'i386') self.rpmdb.addPackage(ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireXtraBadVer(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', ('2', '1.3', '4')) po.addRequires('zap', 'EQ', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') self.rpmdb.addPackage(ipo) xpo = FakePackage('zap', '1.3', '4', '0', 'i386') self.xsack.addPackage(xpo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireXtra(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', ('2', '1.3', '4')) po.addRequires('zap', 'EQ', ('4', '2.6', '8')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') self.rpmdb.addPackage(ipo) xpo = FakePackage('zap', '2.6', '8', '4', 'i386') self.xsack.addPackage(xpo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo, xpo)) def testInstallSinglePackageRequireInstalledRequireXtra(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', ('2', '1.3', '4')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') ipo.addRequires('zap', 'EQ', ('4', '2.6', '8')) self.rpmdb.addPackage(ipo) xpo = FakePackage('zap', '2.6', '8', '4', 'i386') self.xsack.addPackage(xpo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireUpgradeRequireXtraErr(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', ('4', '2.6', '8')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') ipo.addRequires('zap', 'EQ', ('2', '1.3', '3')) self.rpmdb.addPackage(ipo) xpo = FakePackage('zip', '2.6', '8', '4', 'i386') xpo.addRequires('zap', 'EQ', ('2', '1.3', '4')) self.xsack.addPackage(xpo) xpo = FakePackage('zap', '1.3', '4', '2', 'i386') xpo.addRequires('zsh', 'EQ', ('2', '4', '8')) self.xsack.addPackage(xpo) self.assertEquals('err', *self.resolveCode()) def testInstallSinglePackageRequireUpgradeRequireXtraOk(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', ('4', '2.6', '8')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '4', '2', 'i386') ipo.addRequires('zap', 'EQ', ('2', '1.3', '3')) self.rpmdb.addPackage(ipo) xpo = FakePackage('zip', '2.6', '8', '4', 'i386') xpo.addRequires('zap', 'EQ', ('2', '1.3', '4')) self.xsack.addPackage(xpo) xpo2 = FakePackage('zap', '1.3', '4', '2', 'i386') self.xsack.addPackage(xpo2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo, xpo2)) def testInstallSinglePackageRequireMultiXtra(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', ('4', '2.6', '8')) self.tsInfo.addInstall(po) xpo = FakePackage('zip', '2.6', '8', '4', 'i386') xpo.addRequires('zap', 'EQ', ('2', '1.3', '4')) self.xsack.addPackage(xpo) xpo2 = FakePackage('zap', '1.3', '4', '2', 'i386') self.xsack.addPackage(xpo2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo, xpo2)) def testInstallSinglePackageRequireInstalledMultiLib(self): po = FakePackage('zsh', '1', '1', None, 'x86_64') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1', '3', None, 'i386') self.rpmdb.addPackage(ipo) xpo = FakePackage('zip', '1', '3', None, 'x86_64') self.xsack.addPackage(xpo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, ipo)) def testInstallSinglePackageRequireXtra1MultiLib(self): po = FakePackage('zsh', '1', '1', None, 'x86_64') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) xpo = FakePackage('zip', '1', '3', None, 'i386') self.xsack.addPackage(xpo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo)) def testInstallSinglePackageRequireXtra2_64MultiLib(self): po = FakePackage('zsh', '1', '1', None, 'x86_64') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) xpo = FakePackage('zip', '1', '3', None, 'i386') self.xsack.addPackage(xpo) xpo64 = FakePackage('zip', '1', '3', None, 'x86_64') self.xsack.addPackage(xpo64) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo64)) def testInstallSinglePackageRequireXtra2_32MultiLib(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addInstall(po) xpo = FakePackage('zip', '1', '3', None, 'i386') self.xsack.addPackage(xpo) xpo64 = FakePackage('zip', '1', '3', None, 'x86_64') self.xsack.addPackage(xpo64) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo64)) def testUpdateSinglePackage(self): ipo = FakePackage('zsh', '1', '1', None, 'i386') self.rpmdb.addPackage(ipo) po = FakePackage('zsh', '1', '3', None, 'i386') self.tsInfo.addUpdate(po, oldpo=ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po,)) def testUpdateForDependency(self): po = FakePackage('zsh', '1', '1', '0', 'i386') po.addRequires('zip', 'EQ', ('0', '2', '1')) self.tsInfo.addInstall(po) installedpo = FakePackage('zip', '1', '1', '0', 'i386') self.rpmdb.addPackage(installedpo) updatepo = FakePackage('zip', '2', '1', '0', 'i386') self.xsack.addPackage(updatepo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, updatepo)) def testUpdateSplitPackage(self): po = FakePackage('zsh', '1', '1', '0', 'i386') po.addRequires('libzip', 'EQ', ('0', '2', '1')) self.tsInfo.addInstall(po) installedpo = FakePackage('zip', '1', '1', '0', 'i386') installedpo.addProvides('libzip', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(installedpo) updatepo = FakePackage('zip', '2', '1', '0', 'i386') updatepo.addRequires('zip-libs', 'EQ', ('0', '2', '1')) self.xsack.addPackage(updatepo) updatepo2 = FakePackage('zip-libs', '2', '1', '0', 'i386') updatepo2.addProvides('libzip', 'EQ', ('0', '2', '1')) self.xsack.addPackage(updatepo2) self.assertEquals('ok', *self.resolveCode()) #self.assertResult((po, updatepo, updatepo2)) # XXX obsolete needed? self.assertResult((po, installedpo, updatepo2)) def testUpdateSinglePackageNewRequires(self): ipo = FakePackage('zsh', '1', '1', None, 'i386') self.rpmdb.addPackage(ipo) po = FakePackage('zsh', '1', '3', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addUpdate(po, oldpo=ipo) xpo = FakePackage('zip', '1', '3', None, 'x86_64') self.xsack.addPackage(xpo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo)) def testUpdateSinglePackageOldRequires(self): ipo = FakePackage('zsh', '1', '1', None, 'i386') ipo.addRequires('zip', None, (None, None, None)) self.rpmdb.addPackage(ipo) xpo = FakePackage('zip', '1', '3', None, 'x86_64') self.rpmdb.addPackage(xpo) po = FakePackage('zsh', '1', '3', None, 'i386') po.addRequires('zip', None, (None, None, None)) self.tsInfo.addUpdate(po, oldpo=ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo)) def testUpdateSinglePackageOldRequiresGone(self): ipo = FakePackage('zsh', '1', '1', None, 'i386') ipo.addRequires('zip', None, (None, None, None)) self.rpmdb.addPackage(ipo) xpo = FakePackage('zip', '1', '3', None, 'x86_64') self.rpmdb.addPackage(xpo) po = FakePackage('zsh', '1', '3', None, 'i386') self.tsInfo.addUpdate(po, oldpo=ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo)) def testUpdateSinglePackageObsoletesOldRequirement(self): ipo = FakePackage('zsh', '1', '1', None, 'i386') ipo.addRequires('zip', None, (None, None, None)) self.rpmdb.addPackage(ipo) opo = FakePackage('zip', '1', '1', None, 'i386') self.rpmdb.addPackage(opo) po = FakePackage('zsh', '1', '3', None, 'i386') ipo.addObsoletes('zip', None, (None, None, None)) self.tsInfo.addUpdate(po, oldpo=ipo) self.tsInfo.addObsoleting(po, opo) self.tsInfo.addObsoleted(opo, po) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po,)) def testUpdateForConflict(self): po = FakePackage('zsh', '1', '1', '0', 'i386') po.addConflicts('zip', 'LE', ('0', '1', '1')) self.tsInfo.addInstall(po) installedpo = FakePackage('zip', '1', '1', '0', 'i386') self.rpmdb.addPackage(installedpo) updatepo = FakePackage('zip', '2', '1', '0', 'i386') self.xsack.addPackage(updatepo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, updatepo)) def testUpdateForConflict2(self): po = FakePackage('zsh', '1', '1', '0', 'i386') self.tsInfo.addInstall(po) installedpo = FakePackage('zip', '1', '1', '0', 'i386') installedpo.addConflicts('zsh', 'LE', ('0', '1', '1')) self.rpmdb.addPackage(installedpo) updatepo = FakePackage('zip', '2', '1', '0', 'i386') self.xsack.addPackage(updatepo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, updatepo)) def testUpdateForConflictProvide(self): po = FakePackage('zsh', '1', '1', '0', 'i386') po.addConflicts('zippy', 'LE', ('0', '1', '1')) self.tsInfo.addInstall(po) installedpo = FakePackage('zip', '1', '1', '0', 'i386') installedpo.addProvides('zippy', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(installedpo) updatepo = FakePackage('zip', '2', '1', '0', 'i386') self.xsack.addPackage(updatepo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, updatepo)) def testUpdateForConflictProvide2(self): po = FakePackage('zsh', '1', '1', '0', 'i386') po.addProvides('zippy', 'EQ', ('0', '2', '1')) self.tsInfo.addInstall(po) installedpo = FakePackage('zip', '1', '1', '0', 'i386') installedpo.addConflicts('zippy', 'GT', ('0', '1', '1')) installedpo.addConflicts('zippy', 'LT', ('0', '1', '1')) self.rpmdb.addPackage(installedpo) updatepo = FakePackage('zip', '2', '1', '0', 'i386') updatepo.addConflicts('zippy', 'GT', ('0', '2', '1')) updatepo.addConflicts('zippy', 'LT', ('0', '2', '1')) self.xsack.addPackage(updatepo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, updatepo)) def testEraseSinglePackage(self): po = FakePackage('zsh', '1', '1', '0', 'i386') self.rpmdb.addPackage(po) self.tsInfo.addErase(po) self.assertEquals('ok', *self.resolveCode()) self.assertResult(()) def testEraseSinglePackageRequiredByOneInstalled(self): po = FakePackage('zippy', '1', '1', '0', 'i386') po.addRequires('zsh', None, (None, None, None)) self.rpmdb.addPackage(po) po = FakePackage('zsh', '1', '1', '0', 'i386') self.rpmdb.addPackage(po) self.tsInfo.addErase(po) self.assertEquals('ok', *self.resolveCode()) self.assertResult(()) def _setup_FakeMultilibReqs(self): po = FakePackage('abcd', '1', '0', '0', 'x86_64') po.addRequires('libxyz-1.so.0(64bit)', None, (None, None, None)) po.addRequires('libxyz-1.so.0', None, (None, None, None)) po.addRequires('libxyz-1.so.0(XYZ_1.1)(64bit)', None, (None,None,None)) po.addRequires('libxyz-1.so.0(XYZ_1.2)(64bit)', None, (None,None,None)) self.tsInfo.addInstall(po) xpo1 = FakePackage('libxyz', '1', '1', '0', 'x86_64') xpo1.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None)) xpo1.addProvides('libxyz-1.so.0(XYZ_1.1)(64bit)', None,(None,None,None)) self.xsack.addPackage(xpo1) ipo1 = FakePackage('libxyz', '1', '1', '0', 'i386') ipo1.addProvides('libxyz-1.so.0', None,(None,None,None)) ipo1.addProvides('libxyz-1.so.0(XYZ_1.1)', None,(None,None,None)) self.xsack.addPackage(ipo1) xpo2 = FakePackage('libxyz', '1', '2', '0', 'x86_64') xpo2.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None)) xpo2.addProvides('libxyz-1.so.0(XYZ_1.1)(64bit)', None,(None,None,None)) xpo2.addProvides('libxyz-1.so.0(XYZ_1.2)(64bit)', None,(None,None,None)) self.xsack.addPackage(xpo2) ipo2 = FakePackage('libxyz', '1', '2', '0', 'i386') ipo2.addProvides('libxyz-1.so.0', None,(None,None,None)) ipo2.addProvides('libxyz-1.so.0(XYZ_1.1)', None,(None,None,None)) ipo2.addProvides('libxyz-1.so.0(XYZ_1.2)', None,(None,None,None)) self.xsack.addPackage(ipo2) return (po, xpo1, xpo2, ipo1, ipo2) def testFakeMultilibReqsInstall(self): (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs() self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo2, ipo2)) def testFakeMultilibReqsUpdate1a(self): (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs() self.rpmdb.addPackage(xpo1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo2, ipo2)) def testFakeMultilibReqsUpdate1b(self): (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs() self.rpmdb.addPackage(xpo1) # This doesn't suffer from the testFakeMultilibReqsUpdate1a() # problem because we have 2 32bit deps. ... and so the second one # wins. po.addRequires('libxyz-1.so.0(XYZ_1.1)', None, (None, None, None)) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo2, ipo2)) def testFakeMultilibReqsUpdate2(self): (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs() self.rpmdb.addPackage(ipo1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo2, ipo2)) def testFakeMultilibReqsUpdate3(self): (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs() self.rpmdb.addPackage(xpo1) self.rpmdb.addPackage(ipo1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, xpo2, ipo2)) def _setup_CompareProviders(self, name="libbar", arch="x86_64"): po = FakePackage('abcd', arch=arch) po.addRequires('libxyz-1.so.0(64bit)', None, (None, None, None)) self.tsInfo.addInstall(po) po1 = FakePackage('libfoo', arch=arch) po1.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None)) self.xsack.addPackage(po1) po2 = FakePackage(name, arch=arch) po2.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None)) self.xsack.addPackage(po2) return (po, po1, po2) def testCompareProvidersSameLen1_64(self): (po, po1, po2) = self._setup_CompareProviders() self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po1)) def testCompareProvidersSameLen1_noarch(self): (po, po1, po2) = self._setup_CompareProviders(arch='noarch') self.assertEquals('ok', *self.resolveCode()) self.assertResult((po,), (po1,po2)) def testCompareProvidersSameLen2_64(self): # Make sure they are still ok, the other way around po = FakePackage('abcd', arch='x86_64') po.addRequires('libxyz-1.so.0(64bit)', None, (None, None, None)) self.tsInfo.addInstall(po) po2 = FakePackage('libbar', arch='x86_64') po2.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None)) self.xsack.addPackage(po2) po1 = FakePackage('libfoo', arch='x86_64') po1.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None)) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po1)) def testCompareProvidersSameLen2_noarch(self): # Make sure they are still ok, the other way around po = FakePackage('abcd', arch='noarch') po.addRequires('libxyz-1.so.0', None, (None, None, None)) self.tsInfo.addInstall(po) po2 = FakePackage('libbar', arch='noarch') po2.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po2) po1 = FakePackage('libfoo', arch='noarch') po1.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po,), (po1,po2)) def testCompareProvidersSameLen2_noarch_to_64_1(self): # Make sure they are still ok, the other way around po = FakePackage('abcd', arch='noarch') po.addRequires('libxyz-1.so.0', None, (None, None, None)) self.tsInfo.addInstall(po) po2 = FakePackage('libbar', arch='i386') po2.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po2) po1 = FakePackage('libfoo', arch='x86_64') po1.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po1)) def testCompareProvidersSameLen2_noarch_to_64_2(self): # Make sure they are still ok, the other way around po = FakePackage('abcd', arch='noarch') po.addRequires('libxyz-1.so.0', None, (None, None, None)) self.tsInfo.addInstall(po) po2 = FakePackage('libbar', arch='x86_64') po2.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po2) po1 = FakePackage('libfoo', arch='i386') po1.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po2)) def testCompareProvidersDiffLen_64(self): (po, po1, po2) = self._setup_CompareProviders(name='libbarf') self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po1)) def testCompareProvidersDiffLen_noarch(self): (po, po1, po2) = self._setup_CompareProviders(name='libbarf', arch='noarch') self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po1)) def testCompareProvidersSrcRpm_64(self): (po, po1, po2) = self._setup_CompareProviders(name='libbarf') po.sourcerpm = "abcd.src.rpm" po2.sourcerpm = "abcd.src.rpm" self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po2)) def testCompareProvidersSrcRpm_noarch(self): (po, po1, po2) = self._setup_CompareProviders(name='libbarf', arch='noarch') po.sourcerpm = "abcd.src.rpm" po2.sourcerpm = "abcd.src.rpm" self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po2)) def testCompareProvidersPrefix_64(self): (po, po1, po2) = self._setup_CompareProviders(name='abcd-libbarf') self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po2)) def testCompareProvidersPrefix_noarch(self): (po, po1, po2) = self._setup_CompareProviders(name='abcd-libbarf', arch='noarch') self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po2)) def testCompareProvidersArchVSLen(self): po = FakePackage('abcd', arch='i386') po.addRequires('foo', None, (None, None, None)) self.tsInfo.addInstall(po) po1 = FakePackage('foo-bigger', arch='i686') po1.addProvides('foo', None,(None,None,None)) po2 = FakePackage('foo-big', arch='i586') po2.addProvides('foo', None,(None,None,None)) po3 = FakePackage('foo-xen', arch='i586') po3.addProvides('foo', None,(None,None,None)) self.xsack.addPackage(po1) self.xsack.addPackage(po2) self.xsack.addPackage(po3) self.assertEquals('ok', *self.resolveCode()) self.assertResult((po, po1)) def testSelfObsInstall(self): xpo = FakePackage('abcd', version='2', arch='noarch') xpo.addObsoletes('abcd-Foo', None, (None, None, None)) xpo.addProvides('abcd-Foo', None, (None, None, None)) self.tsInfo.addInstall(xpo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo,)) def testSelfObsUpgrade(self): ipo = FakePackage('abcd', arch='noarch') ipo.addObsoletes('abcd-Foo', None, (None, None, None)) ipo.addProvides('abcd-Foo', None, (None, None, None)) self.rpmdb.addPackage(ipo) xpo = FakePackage('abcd', version='2', arch='noarch') xpo.addObsoletes('abcd-Foo', None, (None, None, None)) xpo.addProvides('abcd-Foo', None, (None, None, None)) self.tsInfo.addUpdate(xpo, oldpo=ipo) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo,)) def testMultiPkgVersions1(self): ipo1 = FakePackage('abcd', arch='noarch') ipo1.addRequires('Foo', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(ipo1) ipo2 = FakePackage('Foo', arch='noarch') self.rpmdb.addPackage(ipo2) xpo = FakePackage('abcd', version='2', arch='noarch') xpo.addRequires('Foo', 'GE', ('0', '2', '1')) self.tsInfo.addUpdate(xpo, oldpo=ipo1) po1 = FakePackage('Foo', arch='noarch') self.xsack.addPackage(po1) po2 = FakePackage('Foo', version='2', arch='noarch') self.xsack.addPackage(po2) po3 = FakePackage('Foo', version='3', arch='noarch') self.xsack.addPackage(po3) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po3)) def testMultiPkgVersions2(self): ipo1 = FakePackage('abcd', arch='i586') ipo1.addRequires('Foo', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(ipo1) ipo2 = FakePackage('Foo', arch='i586') self.rpmdb.addPackage(ipo2) xpo = FakePackage('abcd', version='2', arch='i586') xpo.addRequires('Foo', 'GE', ('0', '2', '1')) self.tsInfo.addUpdate(xpo, oldpo=ipo1) po1 = FakePackage('Foo', arch='i586') self.xsack.addPackage(po1) po2 = FakePackage('Foo', version='2', arch='i586') self.xsack.addPackage(po2) po3 = FakePackage('Foo', version='2', arch='i586') self.xsack.addPackage(po3) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po3)) def testMultiPkgVersions3(self): ipo1 = FakePackage('abcd', arch='i586') ipo1.addRequires('Foo', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(ipo1) ipo2 = FakePackage('Foo', arch='i586') self.rpmdb.addPackage(ipo2) xpo = FakePackage('abcd', version='2', arch='i586') xpo.addRequires('Foo', 'GE', ('0', '2', '1')) self.tsInfo.addUpdate(xpo, oldpo=ipo1) po1 = FakePackage('Foo', arch='i586') self.xsack.addPackage(po1) po2 = FakePackage('Foo', version='2', arch='i686') self.xsack.addPackage(po2) po3 = FakePackage('Foo', version='2', arch='i586') self.xsack.addPackage(po3) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po2)) def testMultiPkgVersions4(self): ipo1 = FakePackage('abcd', arch='i386') ipo1.addRequires('Foo', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(ipo1) ipo2 = FakePackage('Foo', arch='i386') self.rpmdb.addPackage(ipo2) xpo = FakePackage('abcd', version='2', arch='i386') xpo.addRequires('Foo', 'GE', ('0', '2', '1')) self.tsInfo.addUpdate(xpo, oldpo=ipo1) po1 = FakePackage('Foo', arch='i386') self.xsack.addPackage(po1) po2 = FakePackage('Foo', version='2', arch='i686') self.xsack.addPackage(po2) po3 = FakePackage('Foo', version='2', arch='i386') self.xsack.addPackage(po3) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po2)) def testMultiPkgVersions5(self): ipo1 = FakePackage('abcd', arch='i386') ipo1.addRequires('Foo', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(ipo1) ipo2 = FakePackage('Foo', arch='i386') self.rpmdb.addPackage(ipo2) xpo = FakePackage('abcd', version='2', arch='i386') xpo.addRequires('Foo', 'GE', ('0', '2', '1')) self.tsInfo.addUpdate(xpo, oldpo=ipo1) po1 = FakePackage('Foo', arch='i386') self.xsack.addPackage(po1) po2 = FakePackage('Foo', version='2', arch='i686') po3 = FakePackage('Foo', version='2', arch='i386') self.xsack.addPackage(po3) self.xsack.addPackage(po2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po2)) # Test from "Real Life" because we just can't think like they do def testRL_unison1(self): xpo = FakePackage('abcd', version='2', arch='i386') xpo.addRequires('unison', None, (None, None, None)) self.tsInfo.addInstall(xpo) po1 = FakePackage('unison213', version='2.13.16', release='9') po1.addProvides('unison', 'EQ', ('0', '2.13.16', '9')) po1.addObsoletes('unison', 'LT', ('0', '2.27.57', '3')) self.xsack.addPackage(po1) po2 = FakePackage('unison227', version='2.27.57', release='7') po2.addProvides('unison', 'EQ', ('0', '2.27.57', '7')) po2.addObsoletes('unison', 'LT', ('0', '2.27.57', '3')) self.xsack.addPackage(po2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po2)) def testRL_unison2(self): xpo = FakePackage('abcd', version='2', arch='i386') xpo.addRequires('unison', None, (None, None, None)) self.tsInfo.addInstall(xpo) po1 = FakePackage('unison213', version='2.13.16', release='9') po1.addProvides('unison', 'EQ', ('0', '2.13.16', '9')) po1.addObsoletes('unison', 'LT', ('0', '2.27.57', '3')) po2 = FakePackage('unison227', version='2.27.57', release='7') po2.addProvides('unison', 'EQ', ('0', '2.27.57', '7')) po2.addObsoletes('unison', 'LT', ('0', '2.27.57', '3')) self.xsack.addPackage(po2) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((xpo, po2)) def test_min_inst_and_dep(self): ipo1 = FakePackage('bar', version='2') self.tsInfo.addInstall(ipo1) ipo2 = FakePackage('foo') ipo2.addRequires('bar', 'GE', (None, '3', '0')) self.tsInfo.addInstall(ipo2) po1 = FakePackage('foo') self.xsack.addPackage(po1) po2 = FakePackage('bar', version='2') self.xsack.addPackage(po2) po3 = FakePackage('bar', version='3') self.xsack.addPackage(po3) po4 = FakePackage('bar', version='4') self.xsack.addPackage(po4) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo2, po4)) def test_min_up_and_dep1(self): rpo1 = FakePackage('bar', version='1') self.rpmdb.addPackage(rpo1) ipo1 = FakePackage('bar', version='2') self.tsInfo.addUpdate(ipo1, oldpo=rpo1) ipo2 = FakePackage('foo') ipo2.addRequires('bar', 'GE', (None, '3', '0')) self.tsInfo.addInstall(ipo2) po1 = FakePackage('foo') self.xsack.addPackage(po1) po2 = FakePackage('bar', version='2') self.xsack.addPackage(po2) po3 = FakePackage('bar', version='3') self.xsack.addPackage(po3) po4 = FakePackage('bar', version='4') self.xsack.addPackage(po4) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo2, po4)) def test_min_up_and_dep2(self): rpo1 = FakePackage('bar', version='1') self.rpmdb.addPackage(rpo1) ipo1 = FakePackage('bar', version='2') ipo2 = FakePackage('foo') ipo2.addRequires('bar', 'GE', (None, '3', '0')) self.tsInfo.addInstall(ipo2) self.tsInfo.addUpdate(ipo1, oldpo=rpo1) po1 = FakePackage('foo') po2 = FakePackage('bar', version='2') po3 = FakePackage('bar', version='3') po4 = FakePackage('bar', version='4') self.xsack.addPackage(po4) self.xsack.addPackage(po3) self.xsack.addPackage(po2) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo2, po4)) def test_min_up_and_dep3(self): rpo1 = FakePackage('bar', version='1') self.rpmdb.addPackage(rpo1) rpo2 = FakePackage('bar-blah', version='1') rpo2.addRequires('bar', 'EQ', ('0', '1', '1')) self.rpmdb.addPackage(rpo2) ipo1 = FakePackage('bar', version='2') self.tsInfo.addUpdate(ipo1, oldpo=rpo1) ipo2 = FakePackage('bar-blah', version='2') ipo2.addRequires('bar', 'EQ', ('0', '2', '1')) self.tsInfo.addUpdate(ipo2, oldpo=rpo2) ipo3 = FakePackage('foo') ipo3.addRequires('bar', 'GE', (None, '3', '0')) self.tsInfo.addInstall(ipo3) po1 = FakePackage('foo') po1.addRequires('bar', 'GE', (None, '3', '0')) self.xsack.addPackage(po1) po2 = FakePackage('bar', version='2') self.xsack.addPackage(po2) po3 = FakePackage('bar', version='3') self.xsack.addPackage(po3) po4 = FakePackage('bar', version='4') self.xsack.addPackage(po4) po5 = FakePackage('bar-blah', version='2') po5.addRequires('bar', 'EQ', ('0', '2', '1')) self.xsack.addPackage(po5) po6 = FakePackage('bar-blah', version='3') po6.addRequires('bar', 'EQ', ('0', '3', '1')) self.xsack.addPackage(po6) po7 = FakePackage('bar-blah', version='4') po7.addRequires('bar', 'EQ', ('0', '4', '1')) self.xsack.addPackage(po7) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo3, po4, po7)) def test_multi_inst_dep1(self): ipo1 = FakePackage('foo') ipo1.addRequires('bar-prov1', None, (None, None, None)) ipo1.addRequires('bar-prov2', 'EQ', ('0', '1', '0')) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') po1.addProvides('bar-prov1', None, (None, None, None)) po1.addProvides('bar-prov2', 'EQ', ('0', '1', '0')) self.xsack.addPackage(po1) po2 = FakePackage('bar', version='2') po2.addProvides('bar-prov1', None, (None, None, None)) po2.addProvides('bar-prov2', 'EQ', ('0', '2', '0')) self.xsack.addPackage(po2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, po1)) def test_multi_inst_dep2(self): ipo1 = FakePackage('foo') ipo1.addRequires('bar-prov1', None, (None, None, None)) ipo1.addRequires('bar-prov2', 'EQ', ('0', '1', '0')) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') po1.addProvides('bar-prov1', None, (None, None, None)) po1.addProvides('bar-prov2', 'EQ', ('0', '1', '0')) po2 = FakePackage('bar', version='2') po2.addProvides('bar-prov1', None, (None, None, None)) po2.addProvides('bar-prov2', 'EQ', ('0', '2', '0')) self.xsack.addPackage(po2) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, po1)) def test_multi_inst_dep3(self): ipo1 = FakePackage('foo') ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None)) ipo1.addRequires('bar-prov2', None, (None, None, None)) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') po1.addProvides('libbar-prov1.so.0()', None, (None, None, None)) po1.addProvides('bar-prov2', None, (None, None, None)) self.xsack.addPackage(po1) po2 = FakePackage('bar', version='2') po2.addProvides('libbar-prov1.so.0()', None, (None, None, None)) self.xsack.addPackage(po2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, po1)) def test_multi_inst_dep4(self): ipo1 = FakePackage('foo') ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None)) ipo1.addRequires('bar-prov2', None, (None, None, None)) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') po1.addProvides('libbar-prov1.so.0()', None, (None, None, None)) po1.addProvides('bar-prov2', None, (None, None, None)) self.xsack.addPackage(po1) po2 = FakePackage('baz') po2.addProvides('libbar-prov1.so.0()', None, (None, None, None)) self.xsack.addPackage(po2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, po1)) def test_multi_inst_dep5(self): ipo1 = FakePackage('foo') ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None)) ipo1.addRequires('bar-prov2', None, (None, None, None)) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') po1.addProvides('libbar-prov1.so.0()', None, (None, None, None)) po1.addProvides('bar-prov2', None, (None, None, None)) po2 = FakePackage('baz') po2.addProvides('libbar-prov1.so.0()', None, (None, None, None)) self.xsack.addPackage(po2) self.xsack.addPackage(po1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, po1)) def test_inst_require_conflict1(self): ipo1 = FakePackage('foo') ipo1.addRequires('bar', None, (None, None, None)) ipo1.addConflicts('bar', None, (None, None, None)) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') self.xsack.addPackage(po1) self.assertEquals('err', *self.resolveCode()) def test_inst_require_conflict_me1(self): ipo1 = FakePackage('foo') ipo1.addRequires('bar', None, (None, None, None)) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') po1.addConflicts('foo', None, (None, None, None)) self.xsack.addPackage(po1) self.assertEquals('err', *self.resolveCode()) def test_inst_require_obsoletes1(self): ipo1 = FakePackage('foo') ipo1.addRequires('bar', None, (None, None, None)) ipo1.addObsoletes('bar', None, (None, None, None)) self.tsInfo.addInstall(ipo1) po1 = FakePackage('bar') self.xsack.addPackage(po1) # FIXME: Does it make sense to ignore the obsoletes here? esp. as we # don't ignore the conflicts above? ... I'm guessing ignoring it is # by accident too? bah. # self.assertEquals('err', *self.resolveCode()) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, po1)) def testUpdate_so_req_diff_arch(self): rpo1 = FakePackage('foozoomer') rpo1.addRequires('libbar.so.1()', None, (None, None, None)) rpo1.addObsoletes('zoom', 'LT', ('8', '8', '8')) self.rpmdb.addPackage(rpo1) rpo2 = FakePackage('bar') rpo2.addProvides('libbar.so.1()', None, (None, None, None)) self.rpmdb.addPackage(rpo2) rpo3 = FakePackage('zoom', arch='i386') self.rpmdb.addPackage(rpo3) apo1 = FakePackage('foozoomer', version=2) apo1.addRequires('libbar.so.2()', None, (None, None, None)) apo1.addObsoletes('zoom', 'LT', ('8', '8', '8')) self.xsack.addPackage(apo1) apo2 = FakePackage('bar', version=2) apo2.addProvides('libbar.so.2()', None, (None, None, None)) self.xsack.addPackage(apo2) self.tsInfo.addUpdate(apo2, oldpo=rpo2) self.assertEquals('ok', *self.resolveCode()) self.assertResult((apo1, apo2)) def testInstalllib_oldbad_prov1(self): # old version of X provides foo, as does foo itself # new version of X doesn't provide foo # So X shouldn't be installed as a provider of foo. apo1 = FakePackage('X') apo1.addProvides('libfoo.so.2()', None, (None, None, None)) self.xsack.addPackage(apo1) apo2 = FakePackage('X', version=2) self.xsack.addPackage(apo2) apo3 = FakePackage('libfoo') apo3.addProvides('libfoo.so.2()', None, (None, None, None)) self.xsack.addPackage(apo3) ipo1 = FakePackage('bar') ipo1.addRequires('libfoo.so.2()', None, (None, None, None)) self.tsInfo.addInstall(ipo1) self.assertEquals('ok', *self.resolveCode()) self.assertResult((ipo1, apo3)) def testCompareProvidersNoarchWithHigherVer_to_64(self): po = FakePackage('abcd', arch='x86_64') po.addRequires('libxyz-1.so.0', None, (None, None, None)) self.tsInfo.addInstall(po) po3 = FakePackage('libbar', version='1.1', arch='x86_64') po3.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po3) po2 = FakePackage('libbar', version='1.2', arch='noarch') po2.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po2) po1 = FakePackage('libbar', version='1.1', arch='i386') po1.addProvides('libxyz-1.so.0', None,(None,None,None)) self.xsack.addPackage(po1) 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()) yum-3.4.3/test/simpleupdatetests.py0000664000076400007640000013523211602434452016444 0ustar jamesjamesfrom testbase import * import rpmUtils.arch class SimpleUpdateTests(OperationsTests): """This test suite runs three different type of tests - for all possible combinations of arches installed and available as update. 1. Update: as done with "yum update" 2. UpdateForDependency: pkgs.requires_update requires a new version of the already installed pkg(s) 3. UpdateForDependency2: A requirement of the installed pkg(s) is removed during an update. Yum tries to update these packages to resolve the situation. """ @staticmethod def buildPkgs(pkgs, *args): # installed pkgs.installed_i386 = FakePackage('zsh', '1', '1', '0', 'i386') pkgs.installed_i386.addRequires('bar', 'EQ', ('0', '1', '1')) pkgs.installed_x86_64 = FakePackage('zsh', '1', '1', '0', 'x86_64') pkgs.installed_x86_64.addRequires('bar', 'EQ', ('0', '1', '1')) pkgs.installed_noarch = FakePackage('zsh', '1', '1', '0', 'noarch') pkgs.installed_noarch.addRequires('bar', 'EQ', ('0', '1', '1')) # updates pkgs.update_i386 = FakePackage('zsh', '2', '1', '0', 'i386') pkgs.update_x86_64 = FakePackage('zsh', '2', '1', '0', 'x86_64') pkgs.update_noarch = FakePackage('zsh', '2', '1', '0', 'noarch') # requires update (UpdateForDependency tests) pkgs.requires_update = FakePackage('zsh-utils', '2', '1', '0', 'noarch') pkgs.requires_update.addRequires('zsh', 'EQ', ('0', '2', '1')) # removed requirement due to update (UpdateForDependency2 tests) pkgs.required = FakePackage('bar', '1', '1', '0') pkgs.required_updated = FakePackage('bar', version='2') # noarch to X def testUpdatenoarchTonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.update_noarch,]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch,)) def testUpdatenoarchTonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_noarch, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch, p.requires_update)) def testUpdatenoarchTonoarchForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_noarch], [p.required_updated, p.update_noarch,]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_noarch,)) def testUpdatenoarchToi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.update_i386,]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386,)) def testUpdatenoarchToi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_i386, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386, p.requires_update)) def testUpdatenoarchToi386ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_noarch], [p.required_updated, p.update_i386]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_i386)) def testUpdatenoarchTox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.update_x86_64,]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64,)) def testUpdatenoarchTox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64, p.requires_update)) def testUpdatenoarchTox86_64ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_noarch], [p.required_updated, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_x86_64)) def testUpdatenoarchToMultilib(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) if True or new_behavior: # We update from .noarch to just the .x86_64 self.assertResult((p.update_x86_64,), (p.update_i386,)) # ? else: # Updates to both... self.assertResult((p.update_i386, p.update_x86_64)) def testUpdatenoarchToMultilibForDependencyRev(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_x86_64, p.update_i386, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64, p.requires_update)) def testUpdatenoarchToMultilibForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_i386, p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64, p.requires_update)) def testUpdatenoarchToMultilibForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_noarch], [p.required_updated, p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_x86_64), (p.update_i386,)) # i386 to X def testUpdatei386Tonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.update_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch,)) def testUpdatei386TonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386], [p.update_noarch, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch, p.requires_update)) def testUpdatei386TonoarchForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386], [p.required_updated, p.update_noarch,]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_noarch,)) def testUpdatei386Toi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.update_i386]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386,)) def testUpdatei386Toi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386], [p.update_i386, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386, p.requires_update)) def testUpdatei386Toi386ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386], [p.required_updated, p.update_i386]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_i386)) def testUpdatei386Tox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64,)) def testUpdatei386Tox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386], [p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64, p.requires_update)) def testUpdatei386Tox86_64ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386], [p.required_updated, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_x86_64)) def testUpdatei386ToMultilib(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386,)) def testUpdatei386ToMultilibForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386], [p.update_i386, p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386, p.requires_update)) def testUpdatei386ToMultilibForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386], [p.required_updated, p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_i386)) # x86_64 to X def testUpdatex86_64Tonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.update_noarch,]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch,)) def testUpdatex86_64TonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_x86_64], [p.update_noarch, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch, p.requires_update)) def testUpdatex86_64TonoarchForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_x86_64], [p.required_updated, p.update_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_noarch)) def testUpdatex86_64Toi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.update_i386,]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386,)) def testUpdatex86_64Toi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_x86_64], [p.update_i386, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386, p.requires_update)) def testUpdatex86_64Toi386ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_x86_64], [p.required_updated, p.update_i386]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_i386)) def testUpdatex86_64Tox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.update_x86_64,]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64,)) def testUpdatex86_64Tox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_x86_64], [p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64, p.requires_update)) def testUpdatex86_64Tox86_64ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_x86_64], [p.required_updated, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_x86_64)) def testUpdatex86_64ToMultilib(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64,)) def testUpdatex86_64ToMultilibForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_x86_64], [p.update_i386, p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_x86_64, p.requires_update)) def testUpdatex86_64ToMultilibForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_x86_64], [p.required_updated, p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_x86_64)) # multilib to X def testUpdateMultilibTonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.update_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch,)) def testUpdateMultilibTonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386, p.installed_x86_64], [p.update_noarch, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_noarch, p.requires_update)) def testUpdateMultilibTonoarchForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386, p.installed_x86_64], [p.required_updated, p.update_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_noarch)) def testUpdateMultilibToi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.update_i386]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.update_i386, p.installed_x86_64)) # self.assertResult((p.update_i386,)) # XXX is this right? else: self.assertResult((p.update_i386, p.installed_x86_64)) def testUpdateMultilibToi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386, p.installed_x86_64], [p.update_i386, p.requires_update]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.update_i386, p.installed_x86_64, p.requires_update)) # self.assertResult((p.update_i386, p.requires_update)) # XXX is this right? else: self.assertResult((p.update_i386, p.installed_x86_64, p.requires_update)) def testUpdateMultilibToi386ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386, p.installed_x86_64], [p.required_updated, p.update_i386]) self.assert_(res=='err', msg) self.assertResult((p.required_updated, p.update_i386, p.installed_x86_64)) def testUpdateMultilibTox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.update_x86_64]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.update_x86_64, p.installed_i386)) # self.assertResult((p.update_x86_64,)) # XXX is this right? else: self.assertResult((p.update_x86_64, p.installed_i386)) def testUpdateMultilibTox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386, p.installed_x86_64], [p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.update_x86_64, p.installed_i386, p.requires_update)) # self.assertResult((p.update_x86_64, p.requires_update)) # XXX is this right? else: self.assertResult((p.update_x86_64, p.installed_i386, p.requires_update)) def testUpdateMultilibTox86_64ForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386, p.installed_x86_64], [p.required_updated, p.update_x86_64]) self.assert_(res=='err', msg) self.assertResult((p.required_updated, p.update_x86_64, p.installed_i386)) def testUpdateMultilibToMultilib(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386, p.update_x86_64)) def testUpdateMultilibToMultilibForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_i386, p.installed_x86_64], [p.update_i386, p.update_x86_64, p.requires_update]) self.assert_(res=='ok', msg) self.assertResult((p.update_i386, p.update_x86_64, p.requires_update)) def testUpdateMultilibToMultilibForDependency2(self): p = self.pkgs res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_i386, p.installed_x86_64], [p.required_updated, p.update_i386, p.update_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.required_updated, p.update_i386, p.update_x86_64)) def testUpdateNotLatestDep(self): foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo11.addRequires('bar', 'EQ', ('0', '1', '1')) foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo12.addRequires('bar', 'EQ', ('0', '1', '2')) bar11 = FakePackage('bar', '1', '1', '0', 'i386') bar12 = FakePackage('bar', '1', '2', '0', 'i386') bar21 = FakePackage('bar', '2', '1', '0', 'i386') res, msg = self.runOperation(['install', 'foo'], [foo11, bar11], [foo12, bar12, bar21]) self.assert_(res=='ok', msg) self.assertResult((foo12, bar12)) def testUpdateBadMultiInstall1(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') res, msg = self.runOperation(['install', 'foo'], [foo11, foo12, foo13], [foo20]) self.assert_(res=='ok', msg) self.assertResult((foo20,)) def testUpdateBadMultiInstall2(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') res, msg = self.runOperation(['update', 'foo'], [foo11, foo12, foo13], [foo20]) self.assert_(res=='ok', msg) self.assertResult((foo20,)) def testUpdateBadMultiInstall3(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') res, msg = self.runOperation(['update'], [foo11, foo12, foo13], [foo20]) self.assert_(res=='ok', msg) self.assertResult((foo20,)) def testUpdateBadMultiInstall4(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') bar11 = FakePackage('bar', '1', '1', '0', 'i386') bar12 = FakePackage('bar', '1', '2', '0', 'i386') bar12.addRequires('foo', 'EQ', ('0', '2', '0')) res, msg = self.runOperation(['update', 'bar'], [foo11, foo12, foo13, bar11], [foo20, bar12]) self.assert_(res=='ok', msg) self.assertResult((foo20,bar12)) def testUpdateBadMultiInstall5(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') bar11 = FakePackage('bar', '1', '1', '0', 'i386') bar12 = FakePackage('bar', '1', '2', '0', 'i386') bar12.addRequires('foo', 'EQ', ('0', '2', '0')) res, msg = self.runOperation(['update'], [foo11, foo12, foo13, bar11], [foo20, bar12]) self.assert_(res=='ok', msg) self.assertResult((foo20,bar12)) def testUpdateBadMultiInstall6(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') bar11 = FakePackage('bar', '1', '1', '0', 'i386') bar12 = FakePackage('bar', '1', '2', '0', 'i386') bar12.addObsoletes('foo', None, (None, None, None)) res, msg = self.runOperation(['update'], [foo11, foo12, foo13, bar11], [foo20, bar12]) self.assert_(res=='ok', msg) self.assertResult((bar12,)) def testUpdateBadMultiInstall7(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') bar11 = FakePackage('bar', '1', '1', '0', 'i386') bar12 = FakePackage('bar', '1', '2', '0', 'i386') bar12.addRequires('foo', 'EQ', ('0', '2', '0')) res, msg = self.runOperation(['update', '*'], [foo11, foo12, foo13, bar11], [foo20, bar12]) self.assert_(res=='ok', msg) self.assertResult((foo20,bar12)) def testUpdateBadMultiInstall8(self): # This is a bug, but we shouldn't die too badly on it... foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo20 = FakePackage('foo', '2', '0', '0', 'i386') bar11 = FakePackage('bar', '1', '1', '0', 'i386') bar12 = FakePackage('bar', '1', '2', '0', 'i386') bar12.addObsoletes('foo', None, (None, None, None)) res, msg = self.runOperation(['update', '*'], [foo11, foo12, foo13, bar11], [foo20, bar12]) self.assert_(res=='ok', msg) self.assertResult((bar12,)) def testUpdateMultiRequiresVersions1(self): pi11 = FakePackage('perl', '1', '1', '0', 'i386') pr11 = FakePackage('perl', '1', '1', '0', 'i386') p12 = FakePackage('perl', '1', '2', '0', 'i386') pvi11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvi11.addRequires('perl', 'GE', ('0', '0', '0')) pvi11.addRequires('perl', 'EQ', ('0', '1', '1')) pvr11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvr11.addRequires('perl', 'GE', ('0', '0', '0')) pvr11.addRequires('perl', 'EQ', ('0', '1', '1')) pv12 = FakePackage('perl-version', '1', '2', '0', 'i386') pv12.addRequires('perl', 'GE', ('0', '0', '0')) pv12.addRequires('perl', 'EQ', ('0', '1', '2')) res, msg = self.runOperation(['update', 'perl'], [pi11, pvi11], [p12, pv12]) self.assert_(res=='ok', msg) self.assertResult((p12,pv12)) def testUpdateMultiRequiresVersions2(self): pi11 = FakePackage('perl', '1', '1', '0', 'i386') pr11 = FakePackage('perl', '1', '1', '0', 'i386') p12 = FakePackage('perl', '1', '2', '0', 'i386') pvi11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvi11.addRequires('perl', 'GE', ('0', '0', '0')) pvi11.addRequires('perl', 'EQ', ('0', '1', '1')) pvr11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvr11.addRequires('perl', 'GE', ('0', '0', '0')) pvr11.addRequires('perl', 'EQ', ('0', '1', '1')) pv12 = FakePackage('perl-version', '1', '2', '0', 'i386') pv12.addRequires('perl', 'GE', ('0', '0', '0')) pv12.addRequires('perl', 'EQ', ('0', '1', '2')) res, msg = self.runOperation(['update', 'perl'], [pi11, pvi11], [pr11,p12, pvr11,pv12]) self.assert_(res=='ok', msg) self.assertResult((p12,pv12)) def testUpdateMultiRequiresVersions3(self): pi11 = FakePackage('perl', '1', '1', '0', 'i386') pr11 = FakePackage('perl', '1', '1', '0', 'i386') p12 = FakePackage('perl', '1', '2', '0', 'i386') pvi11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvi11.addRequires('perl', 'GE', ('0', '0', '0')) pvi11.addRequires('perl', 'EQ', ('0', '1', '1')) pvr11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvr11.addRequires('perl', 'GE', ('0', '0', '0')) pvr11.addRequires('perl', 'EQ', ('0', '1', '1')) pv12 = FakePackage('perl-version', '1', '2', '0', 'i386') pv12.addRequires('perl', 'GE', ('0', '0', '0')) pv12.addRequires('perl', 'EQ', ('0', '1', '2')) res, msg = self.runOperation(['update', 'perl-version'], [pi11, pvi11], [pr11,p12, pvr11,pv12]) self.assert_(res=='ok', msg) self.assertResult((p12,pv12)) def testUpdateMultiRequiresVersions4(self): pi11 = FakePackage('perl', '1', '1', '0', 'i386') pr11 = FakePackage('perl', '1', '1', '0', 'i386') p12 = FakePackage('perl', '1', '2', '0', 'i386') pvi11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvi11.addRequires('perl', 'GE', ('0', '0', '0')) pvi11.addRequires('perl', 'EQ', ('0', '1', '1')) pvr11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvr11.addRequires('perl', 'GE', ('0', '0', '0')) pvr11.addRequires('perl', 'EQ', ('0', '1', '1')) pv12 = FakePackage('perl-version', '1', '2', '0', 'i386') pv12.addRequires('perl', 'GE', ('0', '0', '0')) pv12.addRequires('perl', 'EQ', ('0', '1', '2')) pbi11 = FakePackage('perl-blah', '1', '1', '0', 'i386') pbi11.addRequires('perl', 'EQ', ('0', '1', '1')) pbi11.addRequires('perl', 'GE', ('0', '0', '0')) pbr11 = FakePackage('perl-blah', '1', '1', '0', 'i386') pbr11.addRequires('perl', 'EQ', ('0', '1', '1')) pbr11.addRequires('perl', 'GE', ('0', '0', '0')) pb12 = FakePackage('perl-blah', '1', '2', '0', 'i386') pb12.addRequires('perl', 'EQ', ('0', '1', '2')) pb12.addRequires('perl', 'GE', ('0', '0', '0')) res, msg = self.runOperation(['update', 'perl-version'], [pi11, pbi11, pvi11], [pr11,p12, pbr11,pb12, pvr11,pv12]) self.assert_(res=='ok', msg) self.assertResult((p12,pb12,pv12)) def testUpdateMultiRequiresVersions5(self): pi11 = FakePackage('perl', '1', '1', '0', 'i386') pr11 = FakePackage('perl', '1', '1', '0', 'i386') p12 = FakePackage('perl', '1', '2', '0', 'i386') pvi11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvi11.addRequires('perl', 'GE', ('0', '0', '0')) pvi11.addRequires('perl', 'EQ', ('0', '1', '1')) pvr11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvr11.addRequires('perl', 'GE', ('0', '0', '0')) pvr11.addRequires('perl', 'EQ', ('0', '1', '1')) pv12 = FakePackage('perl-version', '1', '2', '0', 'i386') pv12.addRequires('perl', 'GE', ('0', '0', '0')) pv12.addRequires('perl', 'EQ', ('0', '1', '2')) pbi11 = FakePackage('perl-blah', '1', '1', '0', 'i386') pbi11.addRequires('perl', 'EQ', ('0', '1', '1')) pbi11.addRequires('perl', 'GE', ('0', '0', '0')) pbr11 = FakePackage('perl-blah', '1', '1', '0', 'i386') pbr11.addRequires('perl', 'EQ', ('0', '1', '1')) pbr11.addRequires('perl', 'GE', ('0', '0', '0')) pb12 = FakePackage('perl-blah', '1', '2', '0', 'i386') pb12.addRequires('perl', 'EQ', ('0', '1', '2')) pb12.addRequires('perl', 'GE', ('0', '0', '0')) res, msg = self.runOperation(['update', 'perl-blah'], [pi11, pbi11, pvi11], [pr11,p12, pbr11,pb12, pvr11,pv12]) self.assert_(res=='ok', msg) self.assertResult((p12,pb12,pv12)) def testUpdateMultiRequiresVersions8(self): pi11 = FakePackage('perl', '1', '1', '0', 'i386') pr11 = FakePackage('perl', '1', '1', '0', 'i386') p12 = FakePackage('perl', '1', '2', '0', 'i386') pvi11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvi11.addRequires('perl', 'GE', ('0', '0', '0')) pvi11.addRequires('perl', 'EQ', ('0', '1', '1')) pvr11 = FakePackage('perl-version', '1', '1', '0', 'i386') pvr11.addRequires('perl', 'GE', ('0', '0', '0')) pvr11.addRequires('perl', 'EQ', ('0', '1', '1')) pv12 = FakePackage('perl-version', '1', '2', '0', 'i386') pv12.addRequires('perl', 'GE', ('0', '0', '0')) pv12.addRequires('perl', 'EQ', ('0', '1', '2')) pv13 = FakePackage('perl-version', '1', '3', '0', 'i386') pv13.addRequires('perl', 'GE', ('0', '0', '0')) pv13.addRequires('perl', 'EQ', ('0', '1', '3')) res, msg = self.runOperation(['update', 'perl'], [pi11, pvi11], [pr11,p12, pvr11,pv12,pv13]) # FIXME: This fails ... it tries to install pv13 instead self.assert_(res=='err', msg) # self.assert_(res=='ok', msg) # self.assertResult((p12,pv12)) def testInstallFilenamePkgSplit1(self): pi11 = FakePackage('phoo', '1', '1', '0', 'i386') pi11.addProvides('/path/to/phooy', 'EQ', ('0', '1', '1')) pr11 = FakePackage('phoo', '1', '1', '0', 'i386') pr11.addProvides('/path/to/phooy', 'EQ', ('0', '1', '1')) p12 = FakePackage('phoo', '1', '2', '0', 'i386') py12 = FakePackage('phoo-y', '1', '2', '0', 'i386') py12.addProvides('/path/to/phooy', 'EQ', ('0', '1', '2')) res, msg = self.runOperation(['update', '/path/to/phooy'], [pi11], [pr11,p12, py12]) self.assert_(res=='ok', msg) # FIXME: We'd really like it to be: # self.assertResult((p12,py12)) # ...but there is no info. you can work this out with. self.assertResult((p12,)) def testInstallFilenamePkgSplit2(self): pi11 = FakePackage('phoo', '1', '1', '0', 'i386') pi11.addProvides('/path/to/phooy', 'EQ', ('0', '1', '1')) pr11 = FakePackage('phoo', '1', '1', '0', 'i386') pr11.addProvides('/path/to/phooy', 'EQ', ('0', '1', '1')) p12 = FakePackage('phoo', '1', '2', '0', 'i386') p12.addObsoletes('phoo', 'LE', ('0', '1', '1')) py12 = FakePackage('phoo-y', '1', '2', '0', 'i386') py12.addProvides('/path/to/phooy', 'EQ', ('0', '1', '2')) py12.addObsoletes('phoo', 'LE', ('0', '1', '1')) res, msg = self.runOperation(['update', '/path/to/phooy'], [pi11], [pr11,p12, py12]) self.assert_(res=='ok', msg) self.assertResult((p12,py12)) def testInstallFilenamePkgSplit3(self): p11 = FakePackage('phoo', '1', '1', '0', 'i386') p11.addProvides('/path/to/phooy', 'EQ', ('0', '1', '1')) pi12 = FakePackage('phoo', '1', '2', '0', 'i386') pi12.addObsoletes('phoo', 'LE', ('0', '1', '1')) pr12 = FakePackage('phoo', '1', '2', '0', 'i386') pr12.addObsoletes('phoo', 'LE', ('0', '1', '1')) py12 = FakePackage('phoo-y', '1', '2', '0', 'i386') py12.addProvides('/path/to/phooy', 'EQ', ('0', '1', '2')) py12.addObsoletes('phoo', 'LE', ('0', '1', '1')) res, msg = self.runOperation(['install', '/path/to/phooy'], [pi12], [p11, pr12, py12]) self.assert_(res=='ok', msg) self.assertResult((pi12,py12)) def testUpdateMultiArchConflict(self): pi1 = FakePackage('A', '1', '1', '0', 'i386') pi2 = FakePackage('B', '1', '1', '0', 'i386') pi3 = FakePackage('B', '1', '1', '0', 'x86_64') pa1 = FakePackage('A', '1', '2', '0', 'i386') pa2 = FakePackage('B', '1', '2', '0', 'i386') pa2.addConflicts('A', 'LE', ('0', '1', '1')) pa3 = FakePackage('B', '1', '2', '0', 'x86_64') pa3.addConflicts('A', 'LE', ('0', '1', '1')) res, msg = self.runOperation(['update', 'B'], [pi1, pi2, pi3], [pa1, pa2, pa3]) self.assert_(res=='ok', msg) self.assertResult((pa1, pa2, pa3)) # What I was trying to model here is a problem where the Fedora builders # tried to install "ncurses-libs" and got a choice of: # ncurses-libs-1.x86_64, ncurses-libs-1.i586, ncurses-libs-1.x86_64 # ...and the we should have picked one of the .x86_64 packages in # _compare_providers(), but we picked the .i586 one. # However that didn't happen, as the testcases "just worked". # But from experimenting it was observed that if you just had one .x86_64 # and one .i586 then _compare_providers() got the right answer. So these # testcases model that problem in _compare_providers(), kinda. # Then we can fix that problem, which should also fix the original problem # whatever the hell that was. def testUpdateMultiAvailPkgs1(self): pa1 = FakePackage('A', '1', '1', '0', 'x86_64') pa1.addRequires('blah', 'EQ', ('0', '1', '1')) pa2 = FakePackage('B', '1', '1', '0', 'i586') pa2.addProvides('blah', 'EQ', ('0', '1', '1')) pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one')) pa3.addProvides('blah', 'EQ', ('0', '1', '1')) pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two')) pa4.addProvides('blah', 'EQ', ('0', '1', '1')) res, msg = self.runOperation(['install', 'A'], [], [pa1, pa2, pa3, pa4]) self.assert_(res=='ok', msg) self.assertResult((pa1, pa3)) def testUpdateMultiAvailPkgs2(self): pa1 = FakePackage('A', '1', '1', '0', 'x86_64') pa1.addRequires('blah', 'EQ', ('0', '1', '1')) pa2 = FakePackage('B', '1', '1', '0', 'i586') pa2.addProvides('blah', 'EQ', ('0', '1', '1')) pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one')) pa3.addProvides('blah', 'EQ', ('0', '1', '1')) pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two')) pa4.addProvides('blah', 'EQ', ('0', '1', '1')) res, msg = self.runOperation(['install', 'A'], [], [pa1, pa2, pa4, pa3]) self.assert_(res=='ok', msg) self.assertResult((pa1, pa3)) def testUpdateMultiAvailPkgs3(self): pa1 = FakePackage('A', '1', '1', '0', 'x86_64') pa1.addRequires('B', 'EQ', ('0', '1', '1')) pa2 = FakePackage('B', '1', '1', '0', 'i386') pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one')) pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two')) res, msg = self.runOperation(['install', 'A'], [], [pa1, pa2, pa3, pa4]) self.assert_(res=='ok', msg) self.assertResult((pa1, pa3)) def testUpdateMultiAvailPkgs4(self): pa1 = FakePackage('A', '1', '1', '0', 'x86_64') pa1.addRequires('B', 'EQ', ('0', '1', '1')) pa2 = FakePackage('B', '1', '1', '0', 'i386') pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one')) pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two')) res, msg = self.runOperation(['install', 'A'], [], [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)) def testShellRmUp1(self): """ Do an rm for a package, and then update it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') res, msg = self.runOperation((['remove', 'foo'], ['update', 'foo'], ), [pi1], [pa1], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pa1,)) def testShellRmUp2(self): """ Do an rm for a package, and then update it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pi2 = FakePackage('foo', '1', '1', '0', 'i686') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') pa2 = FakePackage('foo', '2', '1', '0', 'i686') res, msg = self.runOperation((['remove', 'foo.i686'], ['update', 'foo'], ), [pi1, pi2], [pa1, pa2], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pa1, pa2)) def testShellRmUp3(self): """ Do an rm for a package, and then update it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pi2 = FakePackage('foo', '1', '1', '0', 'i686') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') pa2 = FakePackage('foo', '2', '1', '0', 'i686') res, msg = self.runOperation((['remove', 'foo.x86_64'], ['update', 'foo'], ), [pi1, pi2], [pa1, pa2], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pa1, pa2)) def testShellRmUp4(self): """ Do an rm for a package, and then update it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pi2 = FakePackage('foo', '1', '1', '0', 'i686') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') pa2 = FakePackage('foo', '2', '1', '0', 'i686') res, msg = self.runOperation((['remove', 'foo.i686'], ['update', 'foo-2-1'], ), [pi1, pi2], [pa1, pa2], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pa1, pa2)) # Test how update-to != update. def _setupUpdateTo(self): foo11 = FakePackage('foo', '1', '1', '0', 'i386') foo11.addProvides('foobar', 'EQ', ('0', '1', '1')) foo12 = FakePackage('foo', '1', '2', '0', 'i386') foo12.addProvides('foobar', 'EQ', ('0', '1', '2')) foo13 = FakePackage('foo', '1', '3', '0', 'i386') foo13.addProvides('foobar', 'EQ', ('0', '1', '3')) foo20 = FakePackage('foo', '2', '0', '0', 'i386') foo20.addProvides('foobar', 'EQ', ('0', '2', '0')) all = (foo11, foo12, foo13, foo20) return locals() def testUpdateTo1_1(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update', 'foo'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo20'],)) def testUpdateTo1_2(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update-to', 'foo'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo20'],)) def testUpdateTo2_1(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update', 'foo-1-2'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo12'],)) def testUpdateTo2_2(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update-to', 'foo-1-2'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo12'],)) def testUpdateTo3_1(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update', 'foo-1-2'], [pkgs['foo12']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo20'],)) def testUpdateTo3_2(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update-to', 'foo-1-2'], [pkgs['foo12']], pkgs['all']) # Nothing to do... self.assert_(res==0, msg) def testUpdateToProv1_1(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update', 'foobar'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo20'],)) def testUpdateToProv1_2(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update-to', 'foobar'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo20'],)) def testUpdateToProv2_1(self): pkgs = self._setupUpdateTo() # This is kind of annoying, maybe even a bug (but an old one) what # happens is that in "update" we only look for provides matches on # installed pkgs. ... so we can't see a version mismatch. Thus. we # don't see any pkgs. # It also prints an annoying msg. at critical level. So ignoring. if True: return res, msg = self.runOperation(['update', 'foobar = 1-2'], [pkgs['foo11']], pkgs['all']) # self.assert_(res=='ok', msg) # self.assertResult((pkgs['foo12'],)) self.assert_(res==0, msg) def testUpdateToProv2_2(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update-to', 'foobar = 1-2'], [pkgs['foo11']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo12'],)) def testUpdateToProv3_1(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update', 'foobar = 1-2'], [pkgs['foo12']], pkgs['all']) self.assert_(res=='ok', msg) self.assertResult((pkgs['foo20'],)) def testUpdateToProv3_2(self): pkgs = self._setupUpdateTo() res, msg = self.runOperation(['update-to', 'foobar = 1-2'], [pkgs['foo12']], pkgs['all']) # Nothing to do... self.assert_(res==0, msg) yum-3.4.3/test/simpleobsoletestests.py0000664000076400007640000007200411602434452017156 0ustar jamesjamesfrom testbase import * class SimpleObsoletesTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): # installed pkgs.installed_i386 = FakePackage('zsh', '1', '1', '0', 'i386') pkgs.installed_x86_64 = FakePackage('zsh', '1', '1', '0', 'x86_64') pkgs.installed_noarch = FakePackage('zsh', '1', '1', '0', 'noarch') # obsoletes pkgs.obsoletes_i386 = FakePackage('zsh-ng', '0.3', '1', '0', 'i386') pkgs.obsoletes_i386.addObsoletes('zsh', None, (None, None, None)) pkgs.obsoletes_i386.addProvides('zzz') pkgs.obsoletes_x86_64 = FakePackage('zsh-ng', '0.3', '1', '0', 'x86_64') pkgs.obsoletes_x86_64.addObsoletes('zsh', None, (None, None, None)) pkgs.obsoletes_x86_64.addProvides('zzz') pkgs.obsoletes_noarch = FakePackage('zsh-ng', '0.3', '1', '0', 'noarch') pkgs.obsoletes_noarch.addObsoletes('zsh', None, (None, None, None)) pkgs.obsoletes_noarch.addProvides('zzz') # requires obsoletes pkgs.requires_obsoletes = FakePackage('superzippy', '3.5', '3', '0', 'noarch') pkgs.requires_obsoletes.addRequires('zzz') # noarch to X def testObsoletenoarchTonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch,)) def testObsoletenoarchTonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch], [p.obsoletes_noarch, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch, p.requires_obsoletes)) def testObsoletenoarchToi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_i386]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386,)) def testObsoletenoarchToi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch], [p.obsoletes_i386, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.requires_obsoletes)) def testObsoletenoarchTox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64,)) def testObsoletenoarchTox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch], [p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes)) def testObsoletenoarchToMultiarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_i386, p.obsoletes_x86_64]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.obsoletes_x86_64,), (p.obsoletes_i386,)) else: self.assertResult((p.obsoletes_i386, p.obsoletes_x86_64)) def testObsoletenoarchToMultiarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes), (p.obsoletes_i386,)) # i386 to X def testObsoletei386Tonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch,)) def testObsoletei386TonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_noarch, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch, p.requires_obsoletes)) def testObsoletei386Toi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_i386]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386,)) def testObsoletei386Toi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_i386, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.requires_obsoletes)) def testObsoletei386Tox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64,)) def testObsoletei386Tox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes)) def testObsoletei386ToMultiarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_i386, p.obsoletes_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386,)) def testObsoletei386ToMultiarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.requires_obsoletes)) # x86_64 to X def testObsoletex86_64Tonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch,)) def testObsoletex86_64TonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_x86_64], [p.obsoletes_noarch, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch, p.requires_obsoletes)) def testObsoletex86_64Toi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_i386]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386,)) def testObsoletex86_64Toi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_x86_64], [p.obsoletes_i386, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.requires_obsoletes)) def testObsoletex86_64Tox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64,)) def testObsoletex86_64Tox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_x86_64], [p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes)) 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'], [p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes)) # multiarch to X def testObsoleteMultiarchTonoarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch,)) def testObsoleteMultiarchTonoarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_noarch, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch, p.requires_obsoletes)) def testObsoleteMultiarchToi386(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386,)) def testObsoleteMultiarchToi386ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.requires_obsoletes)) def testObsoleteMultiarchTox86_64(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64,)) def testObsoleteMultiarchTox86_64ForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes)) def testObsoleteMultiarchToMultiarch(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.obsoletes_x86_64)) def testObsoleteMultiarchToMultiarchForDependency(self): p = self.pkgs res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes)) def testInstallObsoletenoarchTonoarch(self): p = self.pkgs res, msg = self.runOperation(['install', 'zsh-ng'], [p.installed_noarch], [p.obsoletes_noarch]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_noarch,)) def _MultiObsHelper(self): ret = {'zsh' : FakePackage('zsh', '1', '1', '0', 'noarch'), 'ksh' : FakePackage('ksh', '1', '1', '0', 'noarch'), 'nash' : FakePackage('nash', '1', '1', '0', 'noarch')} ret['pi'] = [ret['zsh'], ret['ksh'], ret['nash']] ret['fish'] = FakePackage('fish', '0.1', '1', '0', 'noarch') ret['fish'].addObsoletes('zsh', None, (None, None, None)) ret['bigfish'] = FakePackage('bigfish', '0.2', '1', '0', 'noarch') ret['bigfish'].addObsoletes('zsh', None, (None, None, None)) ret['bigfish'].addObsoletes('ksh', None, (None, None, None)) ret['shark'] = FakePackage('shark', '0.3', '1', '0', 'noarch') ret['shark'].addObsoletes('zsh', None, (None, None, None)) ret['shark'].addObsoletes('ksh', None, (None, None, None)) ret['shark'].addObsoletes('nash', None, (None, None, None)) ret['po'] = [ret['fish'], ret['bigfish'], ret['shark']] return ret def testMultiObs1(self): pkgs = self._MultiObsHelper() res, msg = self.runOperation(['install', 'fish'], pkgs['pi'], pkgs['po']) self.assert_(res=='ok', msg) self.assertResult((pkgs['ksh'],pkgs['nash'],pkgs['fish'],)) def testMultiObs2(self): pkgs = self._MultiObsHelper() res, msg = self.runOperation(['install', 'bigfish'], pkgs['pi'], pkgs['po']) self.assert_(res=='ok', msg) self.assertResult((pkgs['nash'],pkgs['bigfish'],)) def testMultiObs3(self): pkgs = self._MultiObsHelper() res, msg = self.runOperation(['install', 'shark'], pkgs['pi'], pkgs['po']) self.assert_(res=='ok', msg) self.assertResult((pkgs['shark'],)) def testMultiObs4(self): # This tests update... pkgs = self._MultiObsHelper() oldshark = FakePackage('shark', '0.1', '1', '0', 'noarch') res, msg = self.runOperation(['update', 'shark'], pkgs['pi'] + [oldshark], pkgs['po']) self.assert_(res=='ok', msg) self.assertResult((pkgs['shark'],)) def testMultiObs5(self): # This tests update of the to be obsoleted pkg... pkgs = self._MultiObsHelper() oldshark = FakePackage('shark', '0.1', '1', '0', 'noarch') res, msg = self.runOperation(['update', 'nash'], pkgs['pi'] + [oldshark], pkgs['po']) self.assert_(res=='ok', msg) self.assertResult((pkgs['shark'],)) # NOTE: Do we really want to remove the old kernel-xen? ... not 100% sure def testMultiObsKern1(self): # kernel + kernel-xen installed, and update kernel obsoletes kernel-xen okern1 = FakePackage('kernel', '0.1', '1', '0', 'noarch') okern2 = FakePackage('kernel', '0.2', '1', '0', 'noarch') okernxen1 = FakePackage('kernel-xen', '0.1', '1', '0', 'noarch') okernxen2 = FakePackage('kernel-xen', '0.2', '1', '0', 'noarch') nkern = FakePackage('kernel', '0.8', '1', '0', 'noarch') nkern.addObsoletes('kernel-xen', None, (None, None, None)) res, msg = self.runOperation(['update', 'kernel'], [okern1, okernxen1, okern2, okernxen2], [nkern]) self.assert_(res=='ok', msg) self.assertResult((okern1,okern2,nkern,)) def testMultiObsKern2(self): # kernel + kernel-xen installed, and update kernel obsoletes kernel-xen okern1 = FakePackage('kernel', '0.1', '1', '0', 'noarch') okern2 = FakePackage('kernel', '0.2', '1', '0', 'noarch') okernxen1 = FakePackage('kernel-xen', '0.1', '1', '0', 'noarch') okernxen2 = FakePackage('kernel-xen', '0.2', '1', '0', 'noarch') nkern = FakePackage('kernel', '0.8', '1', '0', 'noarch') nkern.addObsoletes('kernel-xen', None, (None, None, None)) res, msg = self.runOperation(['update', 'kernel-xen'], [okern1, okernxen1, okern2, okernxen2], [nkern]) self.assert_(res=='ok', msg) self.assertResult((okern1,okern2,nkern,)) def testMultiObsKern3(self): # kernel + kernel-xen installed, and update kernel obsoletes kernel-xen okern1 = FakePackage('kernel', '0.1', '1', '0', 'noarch') okern2 = FakePackage('kernel', '0.2', '1', '0', 'noarch') okernxen1 = FakePackage('kernel-xen', '0.1', '1', '0', 'noarch') okernxen2 = FakePackage('kernel-xen', '0.2', '1', '0', 'noarch') nkern = FakePackage('kernel', '0.8', '1', '0', 'noarch') nkern.addObsoletes('kernel-xen', None, (None, None, None)) res, msg = self.runOperation(['update'], [okern1, okernxen1, okern2, okernxen2], [nkern]) self.assert_(res=='ok', msg) self.assertResult((okern1,okern2,nkern,)) def testIncluderObs1(self): # We use an obsolete to include a new package Y for people with an # installed pkg X. X satisfies deps. but isn't the normal best provider # ... traditionally we've included the other dep. _as well_. # The "main" offender has been postfix, which brings in exim. pfix1 = FakePackage('postfix', '1', '1', '0', 'noarch') pfix1.addProvides('/usr/bin/sendmail') pfix2 = FakePackage('postfix', '1', '2', '0', 'noarch') pfix2.addProvides('/usr/bin/sendmail') pnewfix = FakePackage('postfix-blah', '1', '2', '0', 'noarch') pnewfix.addObsoletes('postfix', 'LT', ('0', '1', '2')) pnewfix.addRequires('postfix', 'EQ', ('0', '1', '2')) dep = FakePackage('foo', '1', '1', '0', 'noarch') dep.addRequires('/usr/bin/sendmail') exim = FakePackage('exim', '1', '1', '0', 'noarch') exim.addProvides('/usr/bin/sendmail') res, msg = self.runOperation(['update', 'postfix'], [pfix1, dep], [exim, pnewfix, pfix2, dep]) self.assert_(res=='ok', msg) self.assertResult((dep, pfix2, pnewfix)) def testIncluderObs2(self): # We use an obsolete to include a new package Y for people with an # installed pkg X. X satisfies deps. but isn't the normal best provider # ... traditionally we've included the other dep. _as well_. # The "main" offender has been postfix, which brings in exim. dep = FakePackage('foo', '1', '1', '0', 'noarch') dep.addRequires('/usr/bin/sendmail') pfix1 = FakePackage('postfix', '1', '1', '0', 'noarch') pfix1.addProvides('/usr/bin/sendmail') pfix2 = FakePackage('postfix', '1', '2', '0', 'noarch') pfix2.addProvides('/usr/bin/sendmail') pnewfix = FakePackage('postfix-blah', '1', '2', '0', 'noarch') pnewfix.addObsoletes('postfix', 'LT', ('0', '1', '2')) pnewfix.addRequires('postfix', 'EQ', ('0', '1', '2')) exim = FakePackage('exim', '1', '1', '0', 'noarch') exim.addProvides('/usr/bin/sendmail') res, msg = self.runOperation(['update', 'postfix'], [dep, pfix1], [dep, pfix2, pnewfix, exim]) self.assert_(res=='ok', msg) self.assertResult((dep, pfix2, pnewfix)) def testIncluderObs3(self): # We use an obsolete to include a new package Y for people with an # installed pkg X. X satisfies deps. but isn't the normal best provider # ... traditionally we've included the other dep. _as well_. # The "main" offender has been postfix, which brings in exim. dep = FakePackage('foo', '1', '1', '0', 'noarch') dep.addRequires('/usr/bin/sendmail') pfix1 = FakePackage('postfix', '1', '1', '0', 'noarch') pfix1.addProvides('/usr/bin/sendmail') pfix2 = FakePackage('postfix', '1', '2', '0', 'noarch') pfix2.addProvides('/usr/bin/sendmail') pnewfix = FakePackage('postfix-blah', '1', '2', '0', 'noarch') pnewfix.addObsoletes('postfix', 'LT', ('0', '1', '2')) pnewfix.addRequires('postfix', 'EQ', ('0', '1', '2')) exim = FakePackage('exim', '1', '1', '0', 'noarch') exim.addProvides('/usr/bin/sendmail') res, msg = self.runOperation(['install', 'postfix-blah'], [dep, pfix1], [dep, pfix2, pnewfix, exim]) self.assert_(res=='ok', msg) self.assertResult((dep, pfix2, pnewfix)) def testConflictMultiplePkgs(self): rp1 = FakePackage('foo', '1', '1', '0', 'noarch') aop = FakePackage('bar', '1', '1', '0', 'noarch') aop.addObsoletes('foo', 'LT', ('0', '1', '2')) ap = FakePackage('baz', '1', '1', '0', 'noarch') ap.addRequires('d1') ap.addRequires('d2') ap.addRequires('d3') dep1 = FakePackage('d1', '1', '1', '0', 'noarch') dep1.addConflicts('foo', 'LT', ('0', '1', '2')) dep2 = FakePackage('d2', '1', '1', '0', 'noarch') dep2.addConflicts('foo', 'LT', ('0', '1', '2')) dep3 = FakePackage('d3', '1', '1', '0', 'noarch') dep3.addConflicts('foo', 'LT', ('0', '1', '2')) res, msg = self.runOperation(['install', 'baz'], [rp1], [ap, aop, dep1, dep2, dep3]) self.assert_(res=='ok', msg) self.assertResult((ap, aop, dep1, dep2, dep3)) def testMultipleObsoleters(self): rp1 = FakePackage('foo', '1', '1', '0', 'noarch') aop1 = FakePackage('bar', '1', '1', '0', 'noarch') aop1.addObsoletes('foo', 'LT', ('0', '1', '2')) aop1.addConflicts('bazing') aop2 = FakePackage('bazing', '1', '1', '0', 'noarch') aop2.addObsoletes('foo', 'LT', ('0', '1', '2')) aop2.addConflicts('bar') res, msg = self.runOperation(['update'], [rp1], [aop1, aop2]) self.assert_(res=='err', msg) # FIXME: This is really what should happen, but just sucking works too # self.assert_(res=='ok', msg) # self.assertResult((aop1,)) def _helperRLDaplMess(self): rp1 = FakePackage('dapl', '1.2.1', '7', arch='i386') rp2 = FakePackage('dapl-devel', '1.2.1', '7', arch='i386') rp2.addRequires('dapl', 'EQ', ('0', '1.2.1', '7')) arp1 = FakePackage('dapl', '1.2.1.1', '7', arch='i386') arp2 = FakePackage('dapl-devel', '1.2.1.1', '7', arch='i386') arp2.addRequires('dapl', 'EQ', ('0', '1.2.1.1', '7')) arp3 = FakePackage('dapl', '2.0.15', '1.el4', arch='i386') arp4 = FakePackage('dapl-devel', '2.0.15', '1.el4', arch='i386') arp4.addRequires('dapl', 'EQ', ('0', '2.0.15', '1.el4')) aop1 = FakePackage('compat-dapl-1.2.5', '2.0.7', '2.el4', arch='i386') aop1.addObsoletes('dapl', 'LE', (None, '1.2.1.1', None)) aop2 = FakePackage('compat-dapl-devel-1.2.5', '2.0.7', '2.el4', arch='i386') aop2.addObsoletes('dapl-devel', 'LE', (None, '1.2.1.1', None)) aop2.addRequires('dapl', 'EQ', ('0', '2.0.7', '2.el4')) aoop1 = FakePackage('compat-dapl', '2.0.15', '1.el4', arch='i386') aoop1.addObsoletes('dapl', 'LE', (None, '1.2.1.1', None)) aoop1.addObsoletes('compat-dapl-1.2.5', None, (None, None, None)) aoop2 = FakePackage('compat-dapl-devel', '2.0.15', '1.el4', arch='i386') aoop2.addObsoletes('dapl-devel', 'LE', (None, '1.2.1.1', None)) aoop2.addObsoletes('compat-dapl-devel-1.2.5', None, (None, None, None)) aoop2.addRequires('compat-dapl', 'EQ', ('0', '2.0.15', '1.el4')) return [rp1, rp2], [arp1, arp2, arp3, arp4, aop1, aop2, aoop1, aoop2], [aoop1, aoop2], locals() def testRLDaplMess1(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMess2(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update', 'dapl'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMess3(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update', 'dapl-devel'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMess4(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'compat-dapl'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMess5(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'compat-dapl-devel'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMess6(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'compat-dapl-1.2.5'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMess7(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'compat-dapl-devel-1.2.5'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) # Now we get a bit weird, as we have obsoletes fighting with updates def testRLDaplMessWeirdInst1(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'dapl-1.2.1.1-7'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMessWeirdInst2(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'dapl-2.0.15', 'dapl-devel-2.0.15'], rps, aps) self.assert_(res=='ok', msg) self.assertResult((all['arp3'], all['arp4'])) def testRLDaplMessWeirdInst3(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['install', 'dapl-2.0.15'], rps, aps) self.assert_(res=='ok', msg) self.assertResult((all['arp3'], all['arp4'])) def testRLDaplMessWeirdUp1(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update', 'dapl-1.2.1.1-7'], rps, aps) self.assert_(res=='ok', msg) self.assertResult(ret) def testRLDaplMessWeirdUp2(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update', 'dapl-2.0.15', 'dapl-devel-2.0.15'], rps, aps) self.assert_(res=='ok', msg) self.assertResult((all['arp3'], all['arp4'])) def testRLDaplMessWeirdUp3(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update', 'dapl-2.0.15'], rps, aps) self.assert_(res=='ok', msg) self.assertResult((all['arp3'], all['arp4'])) def testRLDaplFixUpdateNotInstall(self): rps, aps, ret, all = self._helperRLDaplMess() res, msg = self.runOperation(['update', 'dapl-1.2.1*'], [], rps + aps) # self.assert_(res=='err', msg) self.assertResult([]) class GitMetapackageObsoletesTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): # installed pkgs.installed = FakePackage('git-core', '1.5.4.2', '1', '0', 'x86_64') pkgs.metapackage = FakePackage('git', '1.5.4.2', '1', '0', 'x86_64') # obsoletes pkgs.new_git = FakePackage('git', '1.5.4.4', '1', '0', 'x86_64') pkgs.new_git.addObsoletes('git-core', 'LE', ('0', '1.5.4.3', '1')) pkgs.new_git.addProvides('git-core', 'EQ', ('0', '1.5.4', '1')) pkgs.git_all = FakePackage('git-all', '1.5.4', '1', '0', 'x86_64') pkgs.git_all.addObsoletes('git', 'LE', ('0', '1.5.4.3', '1')) def testGitMetapackageOnlyCoreInstalled(self): # Fedora had a package named 'git', which was a metapackage requiring # all other git rpms. Most people wanted 'git-core' when they asked for # git, so we renamed them. # git-core became git, and provided git-core = version while obsoleting # git-core < version # git became git-all, obsoleting git < version p = self.pkgs res, msg = self.runOperation(['update'], [p.installed], [p.new_git, p.git_all]) self.assert_(res=='ok', msg) self.assertResult((p.new_git,)) def testGitMetapackageRenameMetapackageAndCoreInstalled(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed, p.metapackage], [p.new_git, p.git_all]) self.assert_(res=='ok', msg) self.assertResult((p.new_git, p.git_all)) yum-3.4.3/test/simpleremovetests.py0000664000076400007640000001121511602434452016451 0ustar jamesjamesfrom testbase import * class SimpleRemoveTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): pkgs.leaf = FakePackage('foo', '2.5', '1.1', '0', 'noarch') pkgs.leaf.addFile('/bin/foo') pkgs.requires_leaf = FakePackage('bar', '4') pkgs.requires_leaf.addRequires('foo') pkgs.requires_file = FakePackage('barkeeper', '0.8') pkgs.requires_file.addRequires('/bin/foo') pkgs.rr_leaf = FakePackage('baz', '5.3') pkgs.rr_leaf.addRequires('bar') pkgs.provides_leaf = FakePackage('foo-ng', '2.5') pkgs.provides_leaf.addProvides('foo') def testRemoveSingle(self): p = self.pkgs res, msg = self.runOperation(['remove', 'foo'], [p.leaf], []) self.assert_(res=='ok', msg) self.assertResult( () ) def testRemoveRequired(self): p = self.pkgs res, msg = self.runOperation(['remove', 'foo'], [p.leaf, p.requires_leaf], []) self.assert_(res=='ok', msg) self.assertResult( () ) def testRemoveRequiredMissing(self): p = self.pkgs res, msg = self.runOperation(['remove', 'bar'], [p.requires_leaf], []) self.assert_(res=='ok', msg) self.assertResult( () ) def testRemoveRequiredProvided(self): p = self.pkgs res, msg = self.runOperation(['remove', 'foo'], [p.leaf, p.requires_leaf, p.provides_leaf], []) self.assert_(res=='ok', msg) self.assertResult( (p.requires_leaf, p.provides_leaf) ) def testRemoveRequiredAvailable(self): p = self.pkgs res, msg = self.runOperation(['remove', 'foo'], [p.leaf, p.requires_leaf], [p.provides_leaf]) self.assert_(res=='ok', msg) self.assertResult( () ) def testRemoveRequiredChain(self): p = self.pkgs res, msg = self.runOperation(['remove', 'foo'], [p.leaf, p.requires_leaf, p.rr_leaf], []) self.assert_(res=='ok', msg) self.assertResult( () ) def testRemoveRequiredFile(self): p = self.pkgs res, msg = self.runOperation(['remove', 'foo'], [p.leaf, p.requires_file], []) self.assert_(res=='ok', msg) self.assertResult( () ) def testShellUpRm1(self): """ Do an update for a package, and then rm it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') res, msg = self.runOperation((['update', 'foo'], ['remove', 'foo'], ), [pi1], [pa1], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult(()) def testShellUpRm2(self): """ Do an update for a package, and then rm it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pi2 = FakePackage('foo', '1', '1', '0', 'i686') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') pa2 = FakePackage('foo', '2', '1', '0', 'i686') res, msg = self.runOperation((['update', 'foo'], ['remove', 'foo.i686'], ), [pi1, pi2], [pa1, pa2], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pi1, )) def testShellUpRm3(self): """ Do an update for a package, and then rm it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pi2 = FakePackage('foo', '1', '1', '0', 'i686') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') pa2 = FakePackage('foo', '2', '1', '0', 'i686') res, msg = self.runOperation((['update', 'foo'], ['remove', 'foo.x86_64'], ), [pi1, pi2], [pa1, pa2], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pi2, )) def testShellUpRm4(self): """ Do an update for a package, and then rm it. """ pi1 = FakePackage('foo', '1', '1', '0', 'x86_64') pi2 = FakePackage('foo', '1', '1', '0', 'i686') pa1 = FakePackage('foo', '2', '1', '0', 'x86_64') pa2 = FakePackage('foo', '2', '1', '0', 'i686') res, msg = self.runOperation((['update', 'foo-2-1'], ['remove', 'foo.i686'], ), [pi1, pi2], [pa1, pa2], multi_cmds=True) self.assert_(res=='ok', msg) self.assertResult((pi1,)) yum-3.4.3/test/check-po-yes-no.py0000775000076400007640000000577311602434452015577 0ustar jamesjames#! /usr/bin/python -tt # This is a simple command to check that "Is this ok [y/N]: " and yes and no # have either all been translated or none have been translated. import sys import glob from yum.misc import to_utf8 def trans(msg, default): if msg == 'msgstr ""\n': return unicode(default, encoding='utf-8') if msg.startswith('msgstr "'): msg = msg[len('msgstr "'):] msg = msg[:-2] return unicode(msg, encoding='utf-8') for fname in glob.glob("po/*.po"): next = None is_this_ok = None sis_this_ok = None yes = None syes = None y = None sy = None no = None sno = None n = None sn = None for line in file(fname): if next is not None: if next == 'is_this_ok': sis_this_ok = line if line == 'msgstr ""\n' or line.find('[y/N]') != -1: is_this_ok = False else: is_this_ok = True if next == 'yes': syes = line yes = line != 'msgstr ""\n' if next == 'y': sy = line y = line != 'msgstr ""\n' if next == 'no': sno = line no = line != 'msgstr ""\n' if next == 'n': sn = line n = line != 'msgstr ""\n' next = None continue if line == 'msgid "Is this ok [y/N]: "\n': next = 'is_this_ok' if line == 'msgid "yes"\n': next = 'yes' if line == 'msgid "y"\n': next = 'y' if line == 'msgid "no"\n': next = 'no' if line == 'msgid "n"\n': next = 'n' if (is_this_ok is None or yes is None or y is None or no is None or n is None): print >>sys.stderr, """\ ERROR: Can't find all the msg id's in %s is_this_ok %s yes %s y %s no %s n %s """ % (fname, is_this_ok is None, yes is None, y is None, no is None, n is None) sys.exit(1) syes = trans(syes, "yes") sy = trans(sy, "y") sno = trans(sno, "no") sn = trans(sn, "n") if (is_this_ok != yes or is_this_ok != no): print >>sys.stderr, """\ ERROR: yes/no translations don't match in: %s is_this_ok %5s: %s yes %5s: %s y %5s: %s no %5s: %s n %5s: %s """ % (fname, to_utf8(is_this_ok), to_utf8(sis_this_ok), to_utf8(yes), to_utf8(syes), to_utf8(y), to_utf8(sy), to_utf8(no), to_utf8(sno), to_utf8(n), to_utf8(sn)) if syes[0] != sy: print >>sys.stderr, """\ ERROR: yes/y translations don't match in: %s yes %5s: %s y %5s: %s """ % (fname, yes, syes, y, sy) if sno[0] != sn: print >>sys.stderr, """\ ERROR: no/n translations don't match in: %s no %5s: %s n %5s: %s """ % (fname, no, sno, n, sn) yum-3.4.3/test/rpmdb-cache.py0000775000076400007640000000574411602434452015041 0ustar jamesjames#! /usr/bin/python -tt import sys import yum __provides_of_requires_exact__ = False yb1 = yum.YumBase() yb1.conf.cache = True yb2 = yum.YumBase() yb2.conf.cache = True if len(sys.argv) > 1 and sys.argv[1].lower() == 'full': print "Doing full test" __provides_of_requires_exact__ = True assert hasattr(yb1.rpmdb, '__cache_rpmdb__') yb1.rpmdb.__cache_rpmdb__ = False yb2.setCacheDir() # Version ver1 = yb1.rpmdb.simpleVersion(main_only=True)[0] ver2 = yb2.rpmdb.simpleVersion(main_only=True)[0] if ver1 != ver2: print >>sys.stderr, "Error: Version mismatch:", ver1, ver2 # Conflicts cpkgs1 = yb1.rpmdb.returnConflictPackages() cpkgs2 = yb2.rpmdb.returnConflictPackages() if len(cpkgs1) != len(cpkgs2): print >>sys.stderr, "Error: Conflict len mismatch:", len(cpkgs1),len(cpkgs2) for pkg in cpkgs1: if pkg not in cpkgs2: print >>sys.stderr, "Error: Conflict cache missing", pkg for pkg in cpkgs2: if pkg not in cpkgs1: print >>sys.stderr, "Error: Conflict cache extra", pkg # File Requires frd1, blah, fpd1 = yb1.rpmdb.fileRequiresData() frd2, blah, fpd2 = yb2.rpmdb.fileRequiresData() if len(frd1) != len(frd2): print >>sys.stderr, "Error: FileReq len mismatch:", len(frd1), len(frd2) for pkgtup in frd1: if pkgtup not in frd2: print >>sys.stderr, "Error: FileReq cache missing", pkgtup continue if len(set(frd1[pkgtup])) != len(set(frd2[pkgtup])): print >>sys.stderr, ("Error: FileReq[%s] len mismatch:" % (pkgtup,), len(frd1[pkgtup]), len(frd2[pkgtup])) for name in frd1[pkgtup]: if name not in frd2[pkgtup]: print >>sys.stderr, ("Error: FileReq[%s] cache missing" % (pkgtup,), name) for pkgtup in frd2: if pkgtup not in frd1: print >>sys.stderr, "Error: FileReq cache extra", pkgtup continue for name in frd2[pkgtup]: if name not in frd1[pkgtup]: print >>sys.stderr, ("Error: FileReq[%s] cache extra" % (pkgtup,), name) # File Provides (of requires) -- not exact if len(fpd1) != len(fpd2): print >>sys.stderr, "Error: FileProv len mismatch:", len(fpd1), len(fpd2) for name in fpd1: if name not in fpd2: print >>sys.stderr, "Error: FileProv cache missing", name continue if not __provides_of_requires_exact__: continue # We might be missing some providers if len(fpd1[name]) != len(fpd2[name]): print >>sys.stderr, ("Error: FileProv[%s] len mismatch:" % (pkgtup,), len(fpd1[name]), len(fpd2[name])) for pkgtup in fpd1[name]: if pkgtup not in fpd2[name]: print >>sys.stderr,"Error: FileProv[%s] cache missing" % name,pkgtup for name in fpd2: if name not in fpd1: print >>sys.stderr, "Error: FileProv cache extra", name continue for pkgtup in fpd2[name]: if pkgtup not in fpd1[name]: print >>sys.stderr,"Error: FileProv[%s] cache extra" % name,pkgtup yum-3.4.3/test/packagetests.py0000664000076400007640000002473711602434452015352 0ustar jamesjamesimport unittest import settestpath from yum import packages from rpmUtils import miscutils class InPrcoRangePackageTests(unittest.TestCase): def setUp(self): self.po = packages.RpmBase() self.po.prco['provides'].append(("seth", "EQ", (1, 2, 3))) self.po.prco['requires'].append(("foo", "GE", (4, 5, None))) def testRequiresEqPass(self): dep = ("foo", "EQ", (4, 5, 0)) self.assertTrue(self.po.inPrcoRange('requires', dep)) def testRequiresEqFailGt(self): dep = ("foo", "EQ", (4, 4, 0)) self.assertFalse(self.po.inPrcoRange('requires', dep)) def testProvidesGePass(self): dep = ("seth", "GE", (1, 0, 0)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesGePassWithEqual(self): dep = ("seth", "GE", (1, 2, 3)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesGeFailOnEpoch(self): dep = ("seth", "GE", (2, 0, 0)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesGeFailOnVersion(self): dep = ("seth", "GE", (1, 3, 0)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesGeFailOnRelease(self): dep = ("seth", "GE", (1, 2, 4)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesGtPass(self): dep = ("seth", "GT", (1, 0, 0)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesGtFail(self): dep = ("seth", "GT", (1, 2, 4)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesGtFailOnEqual(self): dep = ("seth", "GT", (1, 2, 3)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesEqPass(self): dep = ("seth", "EQ", (1, 2, 3)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesEqFailGt(self): dep = ("seth", "EQ", (1, 2, 0)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesEqFailLt(self): dep = ("seth", "EQ", (1, 2, 4)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesLePassEq(self): dep = ("seth", "LE", (1, 2, 3)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesLePassGt(self): dep = ("seth", "LE", (1, 5, 2)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesLeFail(self): dep = ("seth", "LE", (0, 2, 2)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesLtPass(self): dep = ("seth", "LT", (1, 2, 6)) self.assertTrue(self.po.inPrcoRange('provides', dep)) def testProvidesLtFailEq(self): dep = ("seth", "LT", (1, 2, 3)) self.assertFalse(self.po.inPrcoRange('provides', dep)) def testProvidesLtFailGt(self): dep = ("seth", "LT", (1, 0, 2)) self.assertFalse(self.po.inPrcoRange('provides', dep)) class PackageEvrTests(unittest.TestCase): def setUp(self): self.evr = packages.PackageEVR(0, 1, 2) def testLtPass(self): other_evr = packages.PackageEVR(0, 1, 5) self.assertTrue(self.evr < other_evr) def testLtFailEq(self): other_evr = packages.PackageEVR(0, 1, 2) self.assertFalse(self.evr < other_evr) def testLtFailGt(self): other_evr = packages.PackageEVR(0, 0, 2) self.assertFalse(self.evr < other_evr) def testLePassLt(self): other_evr = packages.PackageEVR(0, 1, 5) self.assertTrue(self.evr <= other_evr) def testLePassEq(self): other_evr = packages.PackageEVR(0, 1, 2) self.assertTrue(self.evr <= other_evr) def testLeFailGt(self): other_evr = packages.PackageEVR(0, 0, 2) self.assertFalse(self.evr <= other_evr) def testGtPass(self): other_evr = packages.PackageEVR(0, 1, 0) self.assertTrue(self.evr > other_evr) def testGtFailEq(self): other_evr = packages.PackageEVR(0, 1, 2) self.assertFalse(self.evr > other_evr) def testGtFailLt(self): other_evr = packages.PackageEVR(0, 2, 2) self.assertFalse(self.evr > other_evr) def testGePassGt(self): other_evr = packages.PackageEVR(0, 1, 0) self.assertTrue(self.evr >= other_evr) def testGePassEq(self): other_evr = packages.PackageEVR(0, 1, 2) self.assertTrue(self.evr >= other_evr) def testGeFailLt(self): other_evr = packages.PackageEVR(2, 1, 2) self.assertFalse(self.evr >= other_evr) def testEqPass(self): other_evr = packages.PackageEVR(0, 1, 2) self.assertTrue(self.evr == other_evr) def testEqFailGt(self): other_evr = packages.PackageEVR(0, 1, 0) self.assertFalse(self.evr == other_evr) def testEqFailLt(self): other_evr = packages.PackageEVR(0, 4, 2) self.assertFalse(self.evr == other_evr) class StubPkg(object): def __init__(self, n, a, e, v, r): self.pkgtup = (n, a, e, v, r) class BuildPackageDictRefTests(unittest.TestCase): def testNoPkg(self): pkgs = [] self.assertEquals({}, packages.buildPkgRefDict(pkgs)) def testOnePkg(self): pkg = StubPkg("yum", "noarch", 0, "3.1.1", 2) pkgs = [pkg] pkg_dict = packages.buildPkgRefDict(pkgs) self.assertEquals(7, len(pkg_dict)) unseen_keys = ['yum', 'yum.noarch', 'yum-3.1.1-2.noarch', 'yum-3.1.1', 'yum-3.1.1-2', '0:yum-3.1.1-2.noarch', 'yum-0:3.1.1-2.noarch'] for key in pkg_dict.keys(): self.assertTrue(key in unseen_keys) unseen_keys.remove(key) self.assertEquals(1, len(pkg_dict[key])) self.assertEquals(pkg, pkg_dict[key][0]) self.assertEquals(0, len(unseen_keys)) def _perms(evr): # Magic comp. sci. stuff ... oooh e, v, r = evr for num in range(8): perm = [] if num & 1: perm.append(e) else: perm.append(None) if num & 2: perm.append(v) else: perm.append(None) if num & 4: perm.append(r) else: perm.append(None) yield tuple(perm) class RangeCompareTests(unittest.TestCase): def testRangeCompare(self): def tst(requires, provides, result): print requires, provides self.assertEquals(miscutils.rangeCompare(requires, provides),result) def tst_lege_prov(requires, provides, result): if not result or provides[1] != 'EQ': return for flag in ('GE', 'LE'): # EQ is a subset of either LE or GE nprovides = (provides[0], flag, provides[2]) tst(requires, nprovides, result) def tst_lege_reqs(requires, provides, result): tst_lege_prov(requires, provides, result) if not result or requires[1] != 'EQ': return for flag in ('GE', 'LE'): # EQ is a subset of either LE or GE nrequires = (requires[0], flag, requires[2]) tst(nrequires, provides, result) tst_lege_prov(nrequires, provides, result) def tst_none_reqs(requires, provides, result): if (not result or requires[1] or provides[1] != 'EQ' or requires[2] != (None, None, None)): return tst_lege_prov(requires, provides, result) # Doesn't matter about versions for flag in ('GE', 'EQ', 'LE'): nrequires = (requires[0], flag, requires[2]) tst(nrequires, provides, result) tst_lege_prov(nrequires, provides, result) def tst_none_expand(requires, provides, result, *args): if requires[2] != (None, None, None): return # Expand parts of the version, replacing with data from provides. # Eg. (None, None, None) and ('1', '2', '3') becomes: # (None, None, None) # ('1', None, None) # (None, '2', None) # (None, None, '3') # ('1', '2', None) # ... # ('1', '2', '3') for evr in _perms(provides[2]): nrequires = (requires[0], requires[1], evr) for func in args: func(nrequires, provides, result) 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), (('foo', 'GE', ('0', '1.4.4', '7.1')), ('foo', 'EQ', ('0', '1.4.4', '7')), 0), (('foo', 'EQ', ('0', '1.4', None)), ('foo', 'EQ', ('0', '1.4.4', '7')), 0), (('foo', 'GT', ('1', '1.4.4', None)), ('foo', 'EQ', ('3', '1.2.4', '7')), 1), (('foo', None, (None, None, None)), ('foo', 'EQ', ('3', '1.2.4', '7')), 1), (('fuu', None, (None, None, None)), ('foo', 'EQ', ('3', '1.2.4', '7')), 0), (('foo', None, (None, None, None)), ('foo', 'GT', ('3', '1.2.4', '7')), 1), (('foo', 'EQ', (None, None, None)), ('foo', 'GT', ('3', '1.2.4', '7')), 0), (('foo', 'LT', (None, None, None)), ('foo', 'GT', ('3', '1.2.4', '7')), 0), (('foo', 'LE', (None, None, None)), ('foo', 'GT', ('3', '1.2.4', '7')), 0), (('foo', 'GE', (None, None, None)), ('foo', 'GT', ('3', '1.2.4', '7')), 1), (('foo', 'GT', (None, None, None)), ('foo', 'GT', ('3', '1.2.4', '7')), 1), (('foo', 'EQ', (None, None, None)), ('foo', 'LT', ('3', '1.2.4', '7')), 0), (('foo', 'LT', (None, None, None)), ('foo', 'LT', ('3', '1.2.4', '7')), 1), (('foo', 'LE', (None, None, None)), ('foo', 'LT', ('3', '1.2.4', '7')), 1), (('foo', 'GE', (None, None, None)), ('foo', 'LT', ('3', '1.2.4', '7')), 0), (('foo', 'GT', (None, None, None)), ('foo', 'LT', ('3', '1.2.4', '7')), 0), ): tst(requires, provides, result) tst_lege_reqs(requires, provides, result) tst_none_expand(requires, provides, result, tst, tst_lege_reqs, tst_none_reqs) yum-3.4.3/test/operationstests.py0000664000076400007640000002570211602434452016133 0ustar jamesjamesfrom testbase import * import simpleobsoletestests # Obsolete for conflict class ComplicatedTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): simpleobsoletestests.SimpleObsoletesTests.buildPkgs(pkgs) # conflicts pkgs.conflicts = FakePackage('super-zippy', '0.3', '1', '0', 'i386') pkgs.conflicts.addConflicts('zsh', 'EQ', ('0', '1', '1')) def testObsoleteForConflict(self): p = self.pkgs res, msg = self.runOperation(['install', 'super-zippy'], [p.installed_i386], [p.obsoletes_i386, p.obsoletes_x86_64, p.conflicts]) if new_behavior: self.assert_(res=='ok', msg) self.assertResult((p.obsoletes_i386, p.conflicts)) class CombinedUpdateObsoletesTest(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): pkgs.k_1 = FakePackage('k', '3.5') pkgs.kdevel_1 = FakePackage('k-devel', '3.5') pkgs.kdevel_1.addRequires('k') pkgs.klibs_1_i386 = FakePackage('klibs', '3.5', arch='i386') pkgs.klibs_1_x86_64 = FakePackage('klibs', '3.5', arch='x86_64') pkgs.k_2 = FakePackage('k', '3.5', '2') pkgs.kdevel_2 = FakePackage('k-devel', '3.5', '2') pkgs.kdevel_2.addRequires('k') pkgs.klibs_2_i386 = FakePackage('klibs', '3.5', '2', arch='i386') pkgs.klibs_2_i386.addObsoletes('klibs', 'LT', (None, '3.5', '2')) pkgs.klibs_2_i386.addObsoletes('k', 'LT', (None, '3.5', '2')) pkgs.klibs_2_x86_64 = FakePackage('klibs', '3.5', '2', arch='x86_64') pkgs.klibs_2_x86_64.addObsoletes('klibs', 'LT', (None, '3.5', '2')) pkgs.klibs_2_x86_64.addObsoletes('k', 'LT', (None, '3.5', '2')) def testSelfObsolete(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.klibs_1_x86_64], [p.klibs_2_i386, p.klibs_2_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.klibs_2_x86_64,)) def testPackageSplitWithObsoleteAndRequiresForUpdate(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.k_1, p.kdevel_1, p.klibs_1_x86_64], [p.k_2, p.kdevel_2, p.klibs_2_x86_64]) self.assert_(res=='ok', msg) self.assertResult((p.k_2, p.kdevel_2, p.klibs_2_x86_64,)) class ComplicatedObsoletesTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): pkgs.installed = FakePackage('foo', '1.4', '1') pkgs.obsoletecircle = FakePackage('foo', '1.4', '1') pkgs.obsoletecircle.addObsoletes('baz') pkgs.obsoletes = FakePackage('bar', '1.2', '1') pkgs.obsoletes.addObsoletes('foo') pkgs.obsoletes2 = FakePackage('baz', '1.8', '1') pkgs.obsoletes2.addObsoletes('bar') def testObsoleteChain(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed], [p.obsoletes, p.obsoletes2]) self.assert_(res=='ok', msg) if True or new_behavior: self.assertResult((p.obsoletes2,)) else: self.assertResult((p.obsoletes,)) def testObsoleteChainNext(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.obsoletes], [p.obsoletes2]) self.assert_(res=='ok', msg) self.assertResult((p.obsoletes2,)) def testObsoleteCircle(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.obsoletecircle], [p.obsoletes, p.obsoletes2]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.obsoletecircle,)) else: self.assertResult((p.obsoletes2,)) def testObsoleteCircleNext(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.obsoletes], [p.obsoletecircle, p.obsoletes, p.obsoletes2]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.obsoletes,)) else: self.assertResult((p.obsoletes2,)) def testObsoleteCircleNextNext(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.obsoletes2], [p.obsoletecircle, p.obsoletes, p.obsoletes2]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.obsoletes2,)) else: self.assertResult((p.obsoletecircle,)) def testObsoleteCircleNextNextNext(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.obsoletecircle], [p.obsoletes, p.obsoletes2]) self.assert_(res=='ok', msg) if new_behavior: self.assertResult((p.obsoletecircle,)) else: self.assertResult((p.obsoletes2,)) # continue endlessly class KernelTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): pkgs.inst = [] pkgs.inst.append(FakePackage('kernel', '2.6.23.8', '63',arch='i686')) pkgs.inst.append(FakePackage('kernel', '2.6.23.1', '49',arch='i686')) pkgs.avail = [] pkgs.avail.append(FakePackage('kernel', '2.6.23.8', '63',arch='i686')) pkgs.avail.append(FakePackage('kernel', '2.6.23.8', '63',arch='i586')) pkgs.avail.append(FakePackage('kernel', '2.6.23.1', '49',arch='i686')) pkgs.avail.append(FakePackage('kernel', '2.6.23.1', '49',arch='i586')) pkgs.avail.append(FakePackage('kernel', '2.6.23.1', '42',arch='i686')) pkgs.avail.append(FakePackage('kernel', '2.6.23.1', '42',arch='i586')) def testKernelInstall1(self): p = self.pkgs res, msg = self.runOperation(['install','kernel'], p.inst, p.avail) self.assertResult(p.inst) def testKernelInstall2(self): p = self.pkgs res, msg = self.runOperation(['install','kernel-2.6.23.1-42'], p.inst, p.avail) self.assertResult(p.inst + [ p.avail[4] ] ) def testKernelInstall3(self): p = self.pkgs res, msg = self.runOperation(['install','kernel-2.6.23.8'], p.inst, p.avail) self.assertResult(p.inst) class MultiLibTests(OperationsTests): @staticmethod def buildPkgs(pkgs, *args): pkgs.inst = [] pkgs.i_foo_1_12_x = FakePackage('foo', '1', '12',arch='x86_64') pkgs.i_wbar_1_12_i = FakePackage('wbar', '1', '12', arch='i586') pkgs.inst.append(pkgs.i_foo_1_12_x) pkgs.inst.append(pkgs.i_wbar_1_12_i) pkgs.avail = [] pkgs.a_foo_0_2_x = FakePackage('foo', '0', '2', arch='x86_64') pkgs.a_foo_0_2_i = FakePackage('foo', '0', '2', arch='i686') pkgs.a_foo_1_12_x = FakePackage('foo', '1', '12', arch='x86_64') pkgs.a_foo_1_12_i = FakePackage('foo', '1', '12', arch='i686') pkgs.a_foo_2_22_x = FakePackage('foo', '2', '22', arch='x86_64') pkgs.a_foo_2_22_i = FakePackage('foo', '2', '22', arch='i686') pkgs.a_bar_1_12_x = FakePackage('bar', '1', '12', arch='x86_64') pkgs.a_bar_1_12_i = FakePackage('bar', '1', '12', arch='i686') pkgs.a_bar_2_22_x = FakePackage('bar', '2', '22', arch='x86_64') pkgs.a_bar_2_22_i = FakePackage('bar', '2', '22', arch='i686') # ibar is .i?86 older pkgs.a_ibar_2_22_x = FakePackage('ibar', '2', '22', arch='x86_64') pkgs.a_ibar_1_12_i = FakePackage('ibar', '1', '12', arch='i686') # xbar is .x86_64 older pkgs.a_xbar_1_12_x = FakePackage('xbar', '1', '12', arch='x86_64') pkgs.a_xbar_2_22_i = FakePackage('xbar', '2', '22', arch='i686') # wbar is arch changing update/downgrade pkgs.a_wbar_0_2_i = FakePackage('wbar', '0', '2', arch='i386') pkgs.a_wbar_2_22_i = FakePackage('wbar', '2', '22', arch='i686') for i in ('a_foo_0_2', 'a_foo_1_12', 'a_foo_2_22', 'a_bar_1_12', 'a_bar_2_22'): pkgs.avail.append(getattr(pkgs, i + '_x')) pkgs.avail.append(getattr(pkgs, i + '_i')) pkgs.avail.append(pkgs.a_ibar_2_22_x) pkgs.avail.append(pkgs.a_ibar_1_12_i) pkgs.avail.append(pkgs.a_xbar_1_12_x) pkgs.avail.append(pkgs.a_xbar_2_22_i) pkgs.avail.append(pkgs.a_wbar_0_2_i) pkgs.avail.append(pkgs.a_wbar_2_22_i) def testBestInstall1(self): p = self.pkgs ninst = p.inst[:] ninst.append(p.a_bar_2_22_x) res, msg = self.runOperation(['install', 'bar'], p.inst, p.avail) self.assertResult(ninst) def testBestInstall2(self): p = self.pkgs ninst = p.inst[:] ninst.append(p.a_bar_1_12_x) res, msg = self.runOperation(['install', 'bar-1'], p.inst, p.avail) self.assertResult(ninst) def testAllInstall1(self): p = self.pkgs ninst = p.inst[:] ninst.append(p.a_bar_2_22_x) ninst.append(p.a_bar_2_22_i) res, msg = self.runOperation(['install', 'bar'], p.inst, p.avail, {'multilib_policy' : 'all'}) self.assertResult(ninst) def testAllInstall2(self): p = self.pkgs ninst = p.inst[:] ninst.append(p.a_bar_1_12_x) ninst.append(p.a_bar_1_12_i) res, msg = self.runOperation(['install', 'bar-1'], p.inst, p.avail, {'multilib_policy' : 'all'}) self.assertResult(ninst) def testAllInstall3(self): p = self.pkgs ninst = p.inst[:] ninst.append(p.a_ibar_2_22_x) res, msg = self.runOperation(['install', 'ibar'], p.inst, p.avail, {'multilib_policy' : 'all'}) self.assertResult(ninst) def testAllInstall4(self): p = self.pkgs ninst = p.inst[:] ninst.append(p.a_xbar_2_22_i) res, msg = self.runOperation(['install', 'xbar'], p.inst, p.avail, {'multilib_policy' : 'all'}) self.assertResult(ninst) def testDowngrade1(self): p = self.pkgs ninst = [p.i_foo_1_12_x, p.a_wbar_0_2_i] res, msg = self.runOperation(['downgrade', 'wbar'], p.inst, p.avail) self.assertResult(ninst) def testDowngrade2(self): p = self.pkgs oinst = [p.i_foo_1_12_x, p.a_wbar_2_22_i] ninst = [p.i_foo_1_12_x, p.i_wbar_1_12_i] p.avail.append(p.i_wbar_1_12_i) res, msg = self.runOperation(['downgrade', 'wbar'], oinst, p.avail) self.assertResult(ninst) def testDowngrade3(self): p = self.pkgs oinst = [p.i_foo_1_12_x, p.a_wbar_2_22_i] ninst = [p.i_foo_1_12_x, p.a_wbar_0_2_i] res, msg = self.runOperation(['downgrade', 'wbar'], oinst, p.avail) self.assertResult(ninst) def testDowngrade4(self): p = self.pkgs oinst = p.inst[:] + [p.a_ibar_2_22_x] p.a_ibar_1_12_i.arch = 'noarch' ninst = p.inst[:] + [p.a_ibar_1_12_i] res, msg = self.runOperation(['downgrade', 'ibar'], oinst, p.avail) self.assertResult(ninst) def testDowngrade5(self): p = self.pkgs ninst = p.inst[:] + [p.a_xbar_1_12_x] p.a_xbar_2_22_i.arch = 'noarch' oinst = p.inst[:] + [p.a_xbar_2_22_i] res, msg = self.runOperation(['downgrade', 'xbar'], oinst, p.avail) self.assertResult(ninst) yum-3.4.3/test/transactiontests.py0000664000076400007640000001554411602434452016300 0ustar jamesjamesfrom yum.constants import * import unittest import settestpath from testbase import * from yum.transactioninfo import TransactionData class TransactionDataTests(unittest.TestCase): ''' Test cases for yum.transactioninfo.TransactionData''' def setUp(self): self.tsInfo = TransactionData() self.rpmdb = packageSack.PackageSack() self.pkgSack = packageSack.PackageSack() self.tsInfo.setDatabases(self.rpmdb, self.pkgSack) self.foo1 = FakePackage('foo', '1', '0', '0', 'noarch') self.foo2 = FakePackage('foo', '2', '0', '0', 'i386') self.bar1 = FakePackage('bar', '1', '0', '0', 'i386') self.bar2 = FakePackage('bar', '2', '0', '0', 'noarch') self.foogui1 = FakePackage('foogui', '1', '0', '0', 'x86_64') self.foogui2 = FakePackage('foogui', '2', '0', '0', 'noarch') def testLenght(self): ''' test __len__ method ''' self.tsInfo.addInstall(self.foo1) self.tsInfo.addUpdate(self.foogui2,self.foogui1) self.dumpTsInfo() self.assertEqual(len(self.tsInfo),3) def testAddTheSameTwice(self): ''' test add the same twice ''' txmbr1 = self.tsInfo.addInstall(self.foo1) txmbr2 = self.tsInfo.addInstall(self.foo2) txmbr3 = self.tsInfo.addInstall(self.foo1) self.dumpTsInfo() self.assertEqual(len(self.tsInfo),2) # only 2 members # self.assertEquals(txmbr3, txmbr1) # 1 & 3 should be equal def testExists(self): ''' test exists method ''' self.tsInfo.addInstall(self.foo1) self.tsInfo.addInstall(self.bar1) self.dumpTsInfo() self.assertEqual(self.tsInfo.exists(self.foo1.pkgtup),1) self.assertEqual(self.tsInfo.exists(self.bar1.pkgtup),1) self.assertEqual(self.tsInfo.exists(self.foogui1.pkgtup),0) def testRemove(self): ''' test remove from transaction ''' txmbr = self.tsInfo.addInstall(self.foo1) self.tsInfo.addInstall(self.bar2) self.tsInfo.remove(self.bar2.pkgtup) self.dumpTsInfo() self.assertResult([txmbr]) def testAddToTransaction(self): ''' test adding basic adding to Transaction ''' txmbr1 = self.tsInfo.addInstall(self.foo1) txmbr2 = self.tsInfo.addUpdate(self.foogui2,self.foogui1) txmbr3 = self.tsInfo.getMembers(self.foogui1.pkgtup)[0] self.dumpTsInfo() self.assertResult([txmbr1,txmbr2,txmbr3]) def testGetFromTransaction(self): ''' test getting from Transaction ''' self.tsInfo.addInstall(self.foo2) self.tsInfo.addObsoleting(self.bar2,self.bar1) self.tsInfo.addUpdate(self.foogui2,self.foogui1) self.tsInfo.addErase(self.foo1) self.dumpTsInfo() # get install member foo-2.0 - u txmbr = self.tsInfo.getMembers(self.foo2.pkgtup)[0] self.assertEqual(txmbr.po, self.foo2) self.assertEqual(txmbr.current_state, TS_AVAILABLE) self.assertEqual(txmbr.output_state, TS_INSTALL) self.assertEqual(txmbr.po.state, TS_INSTALL) self.assertEqual(txmbr.ts_state, 'u') # get erase member foo-1.0 - e txmbr = self.tsInfo.getMembers(self.foo1.pkgtup)[0] self.assertEqual(txmbr.po, self.foo1) self.assertEqual(txmbr.current_state, TS_INSTALL) self.assertEqual(txmbr.output_state, TS_ERASE) self.assertEqual(txmbr.po.state, TS_INSTALL) self.assertEqual(txmbr.ts_state, 'e') # get Obsoleting txmbr = self.tsInfo.getMembers(self.bar2.pkgtup)[0] self.assertEqual(txmbr.po, self.bar2) self.assertEqual(txmbr.current_state, TS_AVAILABLE) self.assertEqual(txmbr.output_state, TS_OBSOLETING) self.assertEqual(txmbr.po.state, TS_OBSOLETING) self.assertEqual(txmbr.ts_state, 'u') self.assertEqual(txmbr.relatedto, [(self.bar1, 'obsoletes')]) self.assertEqual(txmbr.obsoletes, [self.bar1]) # get update member txmbr = self.tsInfo.getMembers(self.foogui2.pkgtup)[0] self.assertEqual(txmbr.po, self.foogui2) self.assertEqual(txmbr.current_state, TS_AVAILABLE) self.assertEqual(txmbr.output_state, TS_UPDATE) self.assertEqual(txmbr.po.state, TS_UPDATE) self.assertEqual(txmbr.ts_state, 'u') self.assertEqual(txmbr.relatedto, [(self.foogui1, 'updates')]) self.assertEqual(txmbr.updates, [self.foogui1]) def testAddUpdatesAndObsoletes(self): ''' test addUpdated,addObsoleted''' txmbr1 = self.tsInfo.addUpdated(self.foo1,self.foo2) txmbr2 = self.tsInfo.addObsoleted(self.bar1,self.bar2) self.dumpTsInfo() self.assertResult([txmbr1,txmbr2]) txmbr = self.tsInfo.getMembersWithState(output_states=[TS_UPDATED])[0] self.assertEqual(txmbr.po, self.foo1) txmbr = self.tsInfo.getMembersWithState(output_states=[TS_OBSOLETED])[0] self.assertEqual(txmbr.po, self.bar1) def testMatchNaevr(self): ''' test MatchNaevr ''' self.tsInfo.addInstall(self.foo1) self.tsInfo.addObsoleting(self.bar2,self.bar1) self.tsInfo.addUpdate(self.foogui2,self.foogui1) self.dumpTsInfo() res = self.tsInfo.matchNaevr( name='foogui') self.assertEqual(len(res),2) # foogui-1.0, foogui-2.0 res = self.tsInfo.matchNaevr( arch='noarch') self.assertEqual(len(res),3) # foo-1.0, bar-2.0, foogui-2.0 res = self.tsInfo.matchNaevr( epoch='0',ver='1', rel='0') self.assertEqual(len(res),2) # foo-1.0, foogui-1.0 def testgetMembersWithState(self): ''' test getMembersWithState''' self.tsInfo.addInstall(self.foo1) self.tsInfo.addObsoleting(self.bar2,self.bar1) self.tsInfo.addUpdate(self.foogui2,self.foogui1) self.dumpTsInfo() res = self.tsInfo.getMembersWithState(output_states=[TS_INSTALL,TS_UPDATE]) self.assertEqual(len(res),2) # foo-1.0, bar-2.0 res = self.tsInfo.getMembersWithState(output_states=[TS_UPDATED]) self.assertEqual(len(res),1) # bar-1.0 def assertResult(self, txmbrs): """Check if self.tsInfo contains the given txmbr. """ errors = ["Problems with members in txInfo \n\n"] txmbrs = set(txmbrs) found = set(self.tsInfo.getMembers()) # Look for needed members for txmbr in txmbrs: if not self.tsInfo.exists(txmbr.po.pkgtup): errors.append(" %s was not found in tsInfo!\n" % txmbr) for txmbr in found - txmbrs: errors.append("%s should not be in tsInfo\n" % txmbr) if len(errors) > 1: errors.append("\nTest case was:\n\n") errors.extend(inspect.getsource(inspect.stack()[1][0].f_code)) errors.append("\n") self.fail("".join(errors)) def dumpTsInfo(self): for txmbr in self.tsInfo: print txmbr yum-3.4.3/test/yum-release-i18n-test.sh0000775000076400007640000001056711602434452016637 0ustar jamesjames#!/bin/bash -e ####################################################### ### Settings ########################################## ####################################################### # Change to true, to not perform the "root" commands SUDO_CMD=sudo # Do we want full info/list output (takes a while, and outputs a _lot_) FULL_PKG_OUTPUT=false # Do we want to play with the livna repo. includes install/remove LIVNA=true # Pkg to add/remove/etc. from livna PKG_LIVNA=amule # Pkg that doesn't exist PKG_BAD=pkg-no-exist-kthx-bai-OMGWTFBBQ # Run tests the "fail", like installing packages for which we don't have the # key. If you run these you need to look to see what the output is. # FIXME: need a more automated way to see if we are getting Unicode*Error RUN_FAILURES=true _yes='' if [ "x$1" = "x-y" ]; then _yes='-y' fi beg_hdr=" ===============================================================================" end_hdr="\ ------------------------------------------------------------------------------- " I18N="C \ da_DA da_DA.UTF-8 \ de_DE de_DE.UTF-8 \ fr_FR fr_FR.UTF-8 \ it_IT it_IT.UTF-8 \ ms_MS ms_MS.UTF-8 \ nb_NB nb_NB.UTF-8 \ pl_PL pl_PL.UTF-8 \ pt_PT pt_PT.UTF-8 \ pt_BR pt_BR.UTF-8 \ ru_RU ru_RU.UTF-8 \ sr_SR sr_SR.UTF-8 sr_SR@latin sr_SR@latin.UTF-8 \ en_US en_US.UTF-8 \ BAD_LOCALE" cmd() { echo $beg_hdr echo "Doing: LANG=$lang yum --enablerepo=rawhide $@" echo $end_hdr LANG=$lang yum --enablerepo=rawhide "$@" } scmd() { echo $beg_hdr echo "Doing: LANG=$lang $SUDO_CMD yum $@" echo $end_hdr LANG=$lang $SUDO_CMD yum "$@" } lcmd() { $LIVNA && echo $beg_hdr $LIVNA && echo "Doing: LANG=$lang yum --enablerepo=livna $@" $LIVNA && echo $end_hdr $LIVNA && LANG=$lang yum --enablerepo=livna "$@" } lscmd() { $LIVNA && echo $beg_hdr $LIVNA && echo "Doing: LANG=$lang $SUDO_CMD yum --enablerepo=livna $@" $LIVNA && echo $end_hdr $LIVNA && LANG=$lang $SUDO_CMD yum --enablerepo=livna "$@" } tst() { # Using ¶ because it doesn't match anything cmd search fedora linux ® $PKG_BAD ¶ cmd search fedora linux ® $PKG_BAD ¶ | cat cmd list afflib libselinux linux $PKG_BAD ¶ cmd list afflib libselinux linux $PKG_BAD ¶ | cat cmd info afflib libselinux linux $PKG_BAD ¶ cmd info afflib libselinux linux $PKG_BAD ¶ | cat cmd grouplist cmd grouplist | cat # Games and Entertainment joy lcmd grouplist lcmd grouplist | cat cmd groupinfo 'Games and Entertainment' cmd groupinfo 'Games and Entertainment' | cat cmd groupinfo 'ଖେଳ à¬à¬¬à¬‚ ମନୋରଞà­à¬œà¬¨' cmd groupinfo 'ଖେଳ à¬à¬¬à¬‚ ମନୋରଞà­à¬œà¬¨' | cat # Games and Entertainment joy lcmd groupinfo 'Games and Entertainment' lcmd groupinfo 'Games and Entertainment' | cat lcmd groupinfo 'ଖେଳ à¬à¬¬à¬‚ ମନୋରଞà­à¬œà¬¨' lcmd groupinfo 'ଖେଳ à¬à¬¬à¬‚ ମନୋରଞà­à¬œà¬¨' | cat $FULL_PKG_OUTPUT && cmd list $FULL_PKG_OUTPUT && cmd list | cat $FULL_PKG_OUTPUT && cmd info $FULL_PKG_OUTPUT && cmd info | cat # This always fails, so we need to "look" if it does so with an encoding # problem or the real one ($RUN_FAILURES && cmd help) || true $RUN_FAILURES && sleep 3 # This always fails, so we need to "look" if it does so with an encoding # problem or the real one ($RUN_FAILURES && (cmd help | cat)) || true $RUN_FAILURES && sleep 3 for i in install remove check-update update list info provides; do cmd help $i cmd help $i | cat done cmd --help cmd --help | cat # This always fails, so we need to "look" if it does so with an encoding # problem or the real one ($RUN_FAILURES && cmd) || true $RUN_FAILURES && sleep 3 # This always fails, so we need to "look" if it does so with an encoding # problem or the real one ($RUN_FAILURES && (cmd | cat)) || true $RUN_FAILURES && sleep 3 scmd install bash scmd install $PKG_BAD scmd remove $PKG_BAD # Test livna, missing keys and install/remove $LIVNA && $SUDO_CMD mv /etc/pki/rpm-gpg/RPM-GPG-KEY-livna . ($LIVNA && $SUDO_CMD rpm -e gpg-pubkey-a109b1ec-3f6e28d5) || true # This always fails, so we need to "look" if it does so with an encoding # problem or the real one ($RUN_FAILURES && lscmd install $_yes $PKG_LIVNA) || true $RUN_FAILURES && $LIVNA && sleep 1 $LIVNA && $SUDO_CMD mv RPM-GPG-KEY-livna /etc/pki/rpm-gpg/ lscmd install -y $PKG_LIVNA lscmd remove -y $PKG_LIVNA } for lang in $I18N; do tst done yum-3.4.3/test/complexremovetests.py0000664000076400007640000000642011602434452016631 0ustar jamesjamesfrom testbase import * class ComplexRemoveTests(OperationsTests): # Three testcases. A -> B means that B requires A. # 1) 0 -> L1 -> (R1 -> R2, L2 -> L3) where everything but L3 was # dep-installed (removing L3 should remove everything); # 2) 0 -> L1 -> (R1 -> R2, L2 -> L3) where everything but L3 and R2 was # dep-installed (removing L3 should only remove L3 and L2); # 3) C1 <--> C2 -> C3 where C1 and C2 were dep-installed (removing # C3 should remove everything) @staticmethod def buildPkgs(pkgs, *args): pkgs.node0 = FakePackage('foo', '2.5', '1.1', '0', 'noarch') pkgs.node0.addFile('/bin/foo') pkgs.node0.yumdb_info.reason = 'dep' pkgs.lnode1 = FakePackage('bar1', '1.0') pkgs.lnode1.addRequires('foo') pkgs.lnode1.addRequiresPkg(pkgs.node0) pkgs.node0.addRequiringPkg(pkgs.lnode1) pkgs.lnode1.yumdb_info.reason = 'dep' pkgs.lnode2 = FakePackage('bar2', '1.0') pkgs.lnode2.addRequires('bar1') pkgs.lnode2.addRequiresPkg(pkgs.lnode1) pkgs.lnode1.addRequiringPkg(pkgs.lnode2) pkgs.lnode2.yumdb_info.reason = 'dep' pkgs.lnode3 = FakePackage('bar3', '1.0') pkgs.lnode3.addRequires('bar2') pkgs.lnode3.addRequiresPkg(pkgs.lnode2) pkgs.lnode2.addRequiresPkg(pkgs.lnode3) pkgs.lnode3.yumdb_info.reason = 'user' pkgs.rnode1 = FakePackage('baz1', '1.0') pkgs.rnode1.addRequires('bar1') pkgs.rnode1.addRequiresPkg(pkgs.lnode1) pkgs.lnode1.addRequiringPkg(pkgs.rnode1) pkgs.rnode1.yumdb_info.reason = 'dep' pkgs.rnode2 = FakePackage('baz2', '1.0') pkgs.rnode2.addRequires('baz1') pkgs.rnode2.addRequiresPkg(pkgs.rnode1) pkgs.rnode1.addRequiringPkg(pkgs.rnode2) pkgs.rnode2.yumdb_info.reason = 'dep' pkgs.cycle1 = FakePackage('cycle1', '1.0') pkgs.cycle1.yumdb_info.reason = 'dep' pkgs.cycle2 = FakePackage('cycle2', '1.0') pkgs.cycle2.yumdb_info.reason = 'dep' pkgs.cycle3 = FakePackage('cycle3', '1.0') pkgs.cycle3.yumdb_info.reason = 'user' pkgs.cycle1.addRequires('cycle2') pkgs.cycle1.addRequiresPkg(pkgs.cycle2) pkgs.cycle2.addRequiringPkg(pkgs.cycle1) pkgs.cycle2.addRequires('cycle1') pkgs.cycle2.addRequiringPkg(pkgs.cycle1) pkgs.cycle1.addRequiringPkg(pkgs.cycle2) pkgs.cycle3.addRequires('cycle2') pkgs.cycle3.addRequiresPkg(pkgs.cycle2) pkgs.cycle2.addRequiringPkg(pkgs.cycle3) def testRemoveCycle(self): p = self.pkgs res, msg = self.runOperation(['remove', 'cycle3'], [p.cycle1, p.cycle2, p.cycle3], []) self.assertResult( () ) def testRemoveTree(self): p = self.pkgs res, msg = self.runOperation(['remove', 'bar3'], [p.node0, p.lnode1, p.lnode2, p.lnode3, p.rnode1, p.rnode2], []) self.assertResult( () ) def testRemoveNeededRevdeps(self): p = self.pkgs p.rnode2.yumdb_info.reason = 'user' res, msg = self.runOperation(['remove', 'bar3'], [p.node0, p.lnode1, p.lnode2, p.lnode3, p.rnode1, p.rnode2], []) p.rnode2.yumdb_info.reason = 'dep' self.assertResult( (p.node0, p.lnode1, p.rnode1, p.rnode2) ) yum-3.4.3/test/yum-leak-test.py0000775000076400007640000000621511602434452015367 0ustar jamesjames#! /usr/bin/python -tt # 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): ps = {} for line in open("/proc/%d/status" % pid): if line[-1] != '\n': continue data = line[:-1].split(':\t', 1) if data[1].endswith(' kB'): data[1] = data[1][:-3] ps[data[0].strip().lower()] = data[1].strip() if 'vmrss' in ps and 'vmsize' in ps: print "* Memory : %5s RSS (%5sB VSZ)" % \ (format_number(int(ps['vmrss']) * 1024), format_number(int(ps['vmsize']) * 1024)) 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() out_mem(os.getpid()) time.sleep(4) if False: del yb print len(gc.garbage) if gc.garbage: 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() yum-3.4.3/test/skipbroken-tests.py0000664000076400007640000010104411602434452016166 0ustar jamesjamesimport unittest import logging import sys import re from testbase import * REGEX_PKG = re.compile(r"(\d*):?(.*)-(.*)-(.*)\.(.*)$") class SkipBrokenTests(DepsolveTests): ''' Test cases to test skip-broken''' def setUp(self): DepsolveTests.setUp(self) self.xrepo = FakeRepo("TestRepository", self.xsack) setup_logging() def repoPackage(self, name, version='1', release='0', epoch='0', arch='noarch'): po = FakePackage(name, version, release, epoch, arch, repo=self.xrepo) self.xsack.addPackage(po) return po def instPackage(self, name, version='1', release='0', epoch='0', arch='noarch'): po = FakePackage(name, version, release, epoch, arch, repo=self.repo) self.rpmdb.addPackage(po) return po def _pkgstr_to_nevra(self, pkg_str): ''' Get a nevra from from a epoch:name-version-release.arch string @param pkg_str: package string ''' res = REGEX_PKG.search(pkg_str) if res: (e,n,v,r,a) = res.groups() if e == "": e = "0" return (n,e,v,r,a) else: raise AttributeError("Illegal package string : %s" % pkg_str) def repoString(self, pkg_str): ''' Add an available package from a epoch:name-version-release.arch string ''' (n,e,v,r,a) = self._pkgstr_to_nevra(pkg_str) return self.repoPackage(n,v,r,e,a) def instString(self, pkg_str): ''' Add an installed package from a epoch:name-version-release.arch string ''' (n,e,v,r,a) = self._pkgstr_to_nevra(pkg_str) return self.instPackage(n,v,r,e,a) def testMissingReqNoSkip(self): ''' install fails, because of missing req. bar fails because foobar is not provided ''' po = self.repoPackage('foo', '1') po.addRequires('bar', None, (None,None,None)) self.tsInfo.addInstall(po) xpo = self.repoPackage('bar', '1') xpo.addRequires('foobar', None, (None,None,None)) self.assertEquals('err', *self.resolveCode(skip=False)) self.assertResult((po,xpo)) def testMissingReqSkip(self): ''' install is skipped, because of missing req. foo + bar is skipped, because foobar is not provided ''' po = self.repoPackage('foo', '1') po.addRequires('bar', None, (None,None,None)) self.tsInfo.addInstall(po) xpo = self.repoPackage('bar', '1') xpo.addRequires('foobar', None, (None,None,None)) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([]) def testDepWithMissingReqSkip(self): ''' install is skipped, beacuse dep is missing req. foo + foobar is skipped because barfoo is not provided bar stays in the transaction ''' po1 = self.repoPackage('foo', '1') po1.addRequires('foobar', None, (None,None,None)) self.tsInfo.addInstall(po1) po2 = self.repoPackage('bar', '1') self.tsInfo.addInstall(po2) xpo1 = self.repoPackage('foobar', '1') xpo1.addRequires('barfoo', None, (None,None,None)) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([po2]) def testUpdateOldRequired(self): ''' update breaking req. of installed package is skipped foo-1.0 -> foo-2.0 breaks the installed foo-tools needing foo-1.0 so skip the update and we have and empty transaction ''' # FIXME: The right solution is to skip the update from the transaction po1 = self.instPackage('foo', '1') po2 = self.repoPackage('foo', '2') ipo = self.instPackage('foo-tools', '2.5') ipo.addRequires('foo', 'EQ', ('0', '1', '0')) self.tsInfo.addUpdate(po2, oldpo=po1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([ipo, po1]) def testUpdateRequireOld(self): '''update with missing req. is skipped The foo-1.0 -> foo-2.0 update fails, because foo-tools-2.0 need by foo-2.0 is not provided, the update should be skipped and result in a empty transaction ''' po1 = self.instPackage('foo', '1') po1.addRequires('foo-tools', 'EQ', ('0', '1', '0')) po2 = self.repoPackage('foo', '2') po2.addRequires('foo-tools', 'EQ', ('0', '2', '0')) ipo = self.instPackage('foo-tools', '1') self.tsInfo.addUpdate(po2, oldpo=po1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([ipo, po1]) def testUpdateRequireBoth(self): ''' install + update skipped, because of missing req. foo-1.0 -> foo-2.0 update, fails because foo-tools-2.0, needed by foo-2.0 is not provided. foo-2.0 update get skip, and the foo-gui install will get skipped too, because it need foo-2.0 there is not longer provided. ''' po1 = self.instPackage('foo', '1') po1.addRequires('foo-tools', 'EQ', ('0', '1', '0')) po2 = self.repoPackage('foo', '2') po2.addRequires('foo-tools', 'EQ', ('0', '2', '0')) ipo = self.instPackage('foo-tools', '1') por = self.repoPackage('foo-gui', '1') por.addRequires('foo', 'EQ', ('0', '2', '0')) self.tsInfo.addUpdate(po2, oldpo=po1) self.tsInfo.addInstall(por) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([ipo, po1]) def testEraseDep(self): ''' remove a package that someone depends on foo is removed, and foo-tools get removed too, because it depends on foo ''' ipo = self.instPackage('foo', '1') ipo2 = self.instPackage('foo-tools', '1') ipo2.addRequires('foo', 'EQ', ('0', '1', '0')) self.tsInfo.addErase(ipo) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([]) def testEraseReqByUpdateNoSkip(self): ''' update fails, because a req is erased. Update foo-tools-1.0 -> foo-tools-2.0, should fail because the require foo is removed ''' ipo = self.instPackage('foo', '1') ipo2 = self.instPackage('foo-tools', '1') ipo2.addRequires('foo', 'EQ', ('0', '1', '0')) upo2 = self.repoPackage('foo-tools', '2') upo2.addRequires('foo', 'EQ', ('0', '1', '0')) self.tsInfo.addErase(ipo) self.tsInfo.addUpdate(upo2, oldpo=ipo2) self.assertEquals('err', *self.resolveCode(skip=False)) def testEraseReqByUpdateSkip(self): ''' update is skipped, because a req is erased. Update foo-tools-1.0 -> foo-tools-2.0, should fail because the require foo is removed the update is skipped and foo-tools-1.0 is removed too, because it requires foo. ''' ipo = self.instPackage('foo', '1') ipo2 = self.instPackage('foo-tools', '1') ipo2.addRequires('foo', 'EQ', ('0', '1', '0')) upo2 = self.repoPackage('foo-tools', '2') upo2.addRequires('foo', 'EQ', ('0', '1', '0')) self.tsInfo.addUpdate(upo2, oldpo=ipo2) self.tsInfo.addErase(ipo) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([]) def testConflictWithInstalled(self): ''' update fails, because it conflicts with installed foo 1.0 -> 2.0 update fails, because foo-2.0 conflict with bar-1.0 the update get skipped and the transaction is now empty ''' po1 = self.instPackage('foo', '1') po2 = self.repoPackage('foo', '2') po2.addConflicts('bar', 'EQ', ('0', '1', '0')) ipo = self.instPackage('bar', '1') self.tsInfo.addUpdate(po2, oldpo=po1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([ipo, po1]) def testConflictWithInstalledButUpdateExist(self): ''' update fails, because conflict cant be fixed. (req. loop) foo 1.0 -> 2.0 update fails, because foo-2.0 conflict with bar-1.0 bar-1.0 is update to bar-2.0, to solve the conflict but bar-2.0 need foo-1.0 so the foo & bar updates get skipped and the transaction is empty ''' po1 = self.instPackage('foo', '1') po2 = self.repoPackage('foo', '2') po2.addConflicts('bar', 'EQ', ('0', '1', '0')) ipo = self.instPackage('bar', '1') xpo = self.repoPackage('bar', '2') xpo.addRequires('foo', 'EQ', ('0', '1', '0')) self.tsInfo.addUpdate(po2, oldpo=po1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([po1,ipo]) def testConflictWithInstalledButUpdateExist2(self): '''update fails, because conflict cant be fixed. (missing req.) foo 1.0 -> 2.0 update fails, because foo-2.0 conflict with bar-1.0 bar-1.0 is update to bar-2.0, to solve the conflict but bar-2.0 need poo-1.0 there is not provided So the foo & bar updates get skipped and the transaction is empty ''' po1 = self.instPackage('foo', '1') po2 = self.repoPackage('foo', '2') po2.addConflicts('bar', 'EQ', ('0', '1', '0')) ipo = self.instPackage('bar', '1') xpo = self.repoPackage('bar', '2') xpo.addRequires('poo', 'EQ', ('0', '1', '0')) self.tsInfo.addUpdate(po2, oldpo=po1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([po1,ipo]) def testAlternativePackageAvailable(self): ipo = self.repoPackage('foo') ipo.addRequires('bar') provides1 = self.repoPackage('bar') provides1.addRequires('baz') provides2 = self.repoPackage('bar-ng') provides2.addProvides('bar') #provides2.addRequires('baz') self.tsInfo.addInstall(ipo) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([ipo, provides2]) def testOnlyOneRequirementAvailable(self): ipo = self.repoPackage('foo') ipo.addRequires('bar') ipo.addRequires('baz') ppo = self.repoPackage('baz') self.tsInfo.addInstall(ipo) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([]) def test2PkgReqSameDep(self): po1 = self.repoPackage('foo') po1.addRequires('bar') po1.addRequires('foobar') po2 = self.repoPackage('bar') po2.addRequires('zzzz') po3 = self.repoPackage('barfoo') po3.addRequires('foobar') po4 = self.repoPackage('foobar') self.tsInfo.addInstall(po1) self.tsInfo.addInstall(po3) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([po3,po4]) def testProvidesAndDepsGetRemoved(self): po1 = self.repoPackage('Spaceman') po1.addProvides('money') po2 = self.repoPackage('GutlessGibbon') po2.addRequires('money') po2.addRequires('nice') po2.addRequires('features') self.tsInfo.addInstall(po2) self.assertEquals('empty', *self.resolveCode(skip=True)) def testSecondStepRequiresUpdate(self): po1 = self.repoPackage('foo') po1.addRequires('xxx') po1.addRequires('bar') self.tsInfo.addInstall(po1) po2 = self.repoPackage('bar') po2.addRequires('baz', 'EQ', (None, '2', '1')) ipo = self.instPackage('baz') upo = self.repoPackage('baz', '2', '1') self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([ipo]) def testDepCycle1(self): po0 = self.repoPackage('leaf') po1 = self.repoPackage('foo') po1.addRequires('bar') po1.addRequires('xxx') po2 = self.repoPackage('bar') po2.addRequires('baz') po3 = self.repoPackage('baz') po3.addRequires('foo') po3.addRequires('leaf') self.tsInfo.addInstall(po1) self.assertEquals('empty', *self.resolveCode(skip=True)) def testDepCycle2(self): po0 = self.repoPackage('leaf') po1 = self.repoPackage('foo') po1.addRequires('bar') po2 = self.repoPackage('bar') po2.addRequires('baz') po2.addRequires('xxx') po3 = self.repoPackage('baz') po3.addRequires('foo') po3.addRequires('leaf') self.tsInfo.addInstall(po1) self.assertEquals('empty', *self.resolveCode(skip=True)) def testDepCycle3(self): po0 = self.repoPackage('leaf') po1 = self.repoPackage('foo') po1.addRequires('bar') po2 = self.repoPackage('bar') po2.addRequires('baz') po3 = self.repoPackage('baz') po3.addRequires('foo') po3.addRequires('leaf') po3.addRequires('xxx') self.tsInfo.addInstall(po1) self.assertEquals('empty', *self.resolveCode(skip=True)) def testMultiLibUpdate(self): ''' foo-1.i386 & foo-1.x86_64 is updated by foo-2.i386 & foo-2.x86_64 foo-2.x86_64 has a missing req, and gets skipped, foo-2.i386 has to be skipped too or it will fail in the rpm test transaction ''' ipo1 = self.instPackage('foo', '1',arch='i386') ipo2 = self.instPackage('foo', '1',arch='x86_64') po1 = self.repoPackage('foo', '2',arch='i386') po2 = self.repoPackage('foo', '2',arch='x86_64') po2.addRequires('notfound', 'EQ', ('0', '1', '0')) self.tsInfo.addUpdate(po1, oldpo=ipo1) self.tsInfo.addUpdate(po2, oldpo=ipo2) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([ipo1,ipo2]) def testInstReqOldVer1(self): """ zap-2.0 updates zap-1.0, but zap-2.0 needs barlib-2.0 provided by bar-2.0, but the installed foo, needs barlib-1.0, so it need to be updated to foo-2.0, that requires barlib-2.0 But it only work if foo-1.0 -> foo-2.0 is added as an update, it is not pulled in by it self. """ ipo1 = self.instPackage('foo', '1') ipo1.addRequires('barlib', 'EQ', ('0', '1', '0')) ipo2 = self.instPackage('bar', '1') ipo2.addProvides('barlib', 'EQ', ('0', '1', '0')) ipo3 = self.instPackage('zap', '1') po1 = self.repoPackage('foo', '2') po1.addRequires('barlib', 'EQ', ('0', '2', '0')) po2 = self.repoPackage('bar', '2') po2.addProvides('barlib', 'EQ', ('0', '2', '0')) po3 = self.repoPackage('zap', '2') po3.addRequires('barlib', 'EQ', ('0', '2', '0')) #FIXME: Find out why this line is needed, it should be auto updated by the solver. self.tsInfo.addUpdate(po1, oldpo=ipo1) # why is this needed, it should work without ? self.tsInfo.addUpdate(po3, oldpo=ipo3) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([po1,po2,po3]) def testBumpedSoName1(self): """ d2 need a lib from b1, so the update fails. d2 and b2 get skipped, but the installed b1 needs a lib from a1, but it has been updated to a2, so it is no longer there. so a2 needs to be skipped to """ a1 = self.instPackage('a', '1', arch='x86_64') a1.addProvides("liba.so.1()(64bit)") a2 = self.repoPackage('a', '2', arch='x86_64') a2.addProvides("liba.so.2()(64bit)") b1 = self.instPackage('b', '1', arch='x86_64') b1.addProvides("libb.so.1()(64bit)") b1.addRequires("liba.so.1()(64bit)") b2 = self.repoPackage('b', '2', arch='x86_64') b2.addProvides("libb.so.2()(64bit)") b2.addRequires("liba.so.2()(64bit)") c1 = self.instPackage('c', '1', arch='x86_64') c1.addRequires("liba.so.1()(64bit)") c2 = self.repoPackage('c', '2', arch='x86_64') c2.addRequires("liba.so.2()(64bit)") d1 = self.instPackage('d', '1', arch='x86_64') d1.addRequires("libb.so.1()(64bit)") d2 = self.repoPackage('d', '2', arch='x86_64') d2.addRequires("libb.so.1()(64bit)") e1 = self.instPackage('e', '1', arch='x86_64') e2 = self.repoPackage('e', '2', arch='x86_64') f1 = self.instPackage('f', '1', arch='x86_64') f2 = self.repoPackage('f', '2', arch='x86_64') self.tsInfo.addUpdate(a2, oldpo=a1) self.tsInfo.addUpdate(b2, oldpo=b1) self.tsInfo.addUpdate(c2, oldpo=c1) self.tsInfo.addUpdate(d2, oldpo=d1) self.tsInfo.addUpdate(e2, oldpo=e1) self.tsInfo.addUpdate(f2, oldpo=f1) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult([a1,b1,c1,d1,e2,f2]) def testBumpedSoName2(self): """ https://bugzilla.redhat.com/show_bug.cgi?id=468785 """ c1 = self.instPackage('cyrus-sasl-lib', '2.1.22',"18") c1.addRequires("libdb-4.3.so") d1 = self.instPackage('compat-db', '4.6.21',"4") d1.addProvides("libdb-4.3.so") od1 = self.repoPackage('compat-db46', '4.6.21',"5") od1.addProvides("libdb-4.6.so") od1.addObsoletes("compat-db") od2 = self.repoPackage('compat-db45', '4.6.21',"5") od2.addProvides("libdb-4.5.so") od2.addObsoletes("compat-db") r1 = self.instPackage('rpm', '4.6.0-0','0.rc1.3') r1.addRequires("libdb-4.5.so") r2 = self.instPackage('rpm-libs', '4.6.0-0','0.rc1.3') r2.addRequires("libdb-4.5.so") r3 = self.instPackage('rpm-build', '4.6.0-0','0.rc1.3') r3.addRequires("libdb-4.5.so") r4 = self.instPackage('rpm-python', '4.6.0-0','0.rc1.3') r4.addRequires("libdb-4.5.so") ur1 = self.repoPackage('rpm', '4.6.0-0','0.rc1.5') ur1.addRequires("libdb-4.5.so") ur1.addRequires("compat-db45") ur2 = self.repoPackage('rpm-libs', '4.6.0-0','0.rc1.5') ur2.addRequires("libdb-4.5.so") ur2.addRequires("compat-db45") ur3 = self.repoPackage('rpm-build', '4.6.0-0','0.rc1.5') ur3.addRequires("libdb-4.5.so") ur3.addRequires("compat-db45") ur4 = self.repoPackage('rpm-python', '4.6.0-0','0.rc1.5') ur4.addRequires("libdb-4.5.so") ur4.addRequires("compat-db45") self.tsInfo.addObsoleting(od2, oldpo=d1) self.tsInfo.addObsoleted(d1, od2) self.tsInfo.addObsoleting(od1, oldpo=d1) self.tsInfo.addObsoleted(d1, od1) self.tsInfo.addUpdate(ur1, oldpo=r1) self.tsInfo.addUpdate(ur2, oldpo=r2) self.tsInfo.addUpdate(ur3, oldpo=r3) self.tsInfo.addUpdate(ur4, oldpo=r4) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([c1,d1,r1,r2,r3,r4]) def testBumpedSoName3(self): """ https://bugzilla.redhat.com/show_bug.cgi?id=468785 yum update compat-db46 """ c1 = self.instPackage('cyrus-sasl-lib', '2.1.22',"18") c1.addRequires("libdb-4.3.so") d1 = self.instPackage('compat-db', '4.6.21',"4") d1.addProvides("libdb-4.3.so") od1 = self.repoPackage('compat-db46', '4.6.21',"5") od1.addProvides("libdb-4.6.so") od1.addObsoletes("compat-db") od2 = self.repoPackage('compat-db45', '4.6.21',"5") od2.addProvides("libdb-4.5.so") od2.addObsoletes("compat-db") r1 = self.instPackage('rpm', '4.6.0-0','0.rc1.3') r1.addRequires("libdb-4.5.so") r2 = self.instPackage('rpm-libs', '4.6.0-0','0.rc1.3') r2.addRequires("libdb-4.5.so") r3 = self.instPackage('rpm-build', '4.6.0-0','0.rc1.3') r3.addRequires("libdb-4.5.so") r4 = self.instPackage('rpm-python', '4.6.0-0','0.rc1.3') r4.addRequires("libdb-4.5.so") ur1 = self.repoPackage('rpm', '4.6.0-0','0.rc1.5') ur1.addRequires("libdb-4.5.so") ur1.addRequires("compat-db45") ur2 = self.repoPackage('rpm-libs', '4.6.0-0','0.rc1.5') ur2.addRequires("libdb-4.5.so") ur2.addRequires("compat-db45") ur3 = self.repoPackage('rpm-build', '4.6.0-0','0.rc1.5') ur3.addRequires("libdb-4.5.so") ur3.addRequires("compat-db45") ur4 = self.repoPackage('rpm-python', '4.6.0-0','0.rc1.5') ur4.addRequires("libdb-4.5.so") ur4.addRequires("compat-db45") self.tsInfo.addObsoleting(od1, oldpo=d1) self.tsInfo.addObsoleted(d1, od1) self.tsInfo.addUpdate(ur1, oldpo=r1) self.tsInfo.addUpdate(ur2, oldpo=r2) self.tsInfo.addUpdate(ur3, oldpo=r3) self.tsInfo.addUpdate(ur4, oldpo=r4) self.assertEquals('err', *self.resolveCode(skip=False)) def testBumpedSoNameMultiArch(self): """ if compat-db45.x86_64 get skipped, then compat-db45.i386 should not get pulled in instead """ c1 = self.instPackage('cyrus-sasl-lib', '2.1.22',"18", arch='x86_64') c1.addRequires("libdb-4.3.so") d1 = self.instPackage('compat-db', '4.6.21',"4", arch='x86_64') d1.addProvides("libdb-4.3.so") od1 = self.repoPackage('compat-db46', '4.6.21',"5", arch='x86_64') od1.addProvides("libdb-4.6.so") od1.addObsoletes("compat-db") od2 = self.repoPackage('compat-db45', '4.6.21',"5", arch='x86_64') od2.addProvides("libdb-4.5.so") od2.addObsoletes("compat-db") od3 = self.repoPackage('compat-db45', '4.6.21',"5", arch='i386') od3.addProvides("libdb-4.5.so") od3.addObsoletes("compat-db") r1 = self.instPackage('rpm', '4.6.0-0','0.rc1.3', arch='x86_64') r1.addRequires("libdb-4.5.so") r2 = self.instPackage('rpm-libs', '4.6.0-0','0.rc1.3', arch='x86_64') r2.addRequires("libdb-4.5.so") r3 = self.instPackage('rpm-build', '4.6.0-0','0.rc1.3', arch='x86_64') r3.addRequires("libdb-4.5.so") r4 = self.instPackage('rpm-python', '4.6.0-0','0.rc1.3', arch='x86_64') r4.addRequires("libdb-4.5.so") ur1 = self.repoPackage('rpm', '4.6.0-0','0.rc1.5', arch='x86_64') ur1.addRequires("libdb-4.5.so") ur1.addRequires("compat-db45") ur2 = self.repoPackage('rpm-libs', '4.6.0-0','0.rc1.5', arch='x86_64') ur2.addRequires("libdb-4.5.so") ur2.addRequires("compat-db45") ur3 = self.repoPackage('rpm-build', '4.6.0-0','0.rc1.5', arch='x86_64') ur3.addRequires("libdb-4.5.so") ur3.addRequires("compat-db45") ur4 = self.repoPackage('rpm-python', '4.6.0-0','0.rc1.5', arch='x86_64') ur4.addRequires("libdb-4.5.so") ur4.addRequires("compat-db45") self.tsInfo.addObsoleting(od2, oldpo=d1) self.tsInfo.addObsoleted(d1, od2) self.tsInfo.addObsoleting(od1, oldpo=d1) self.tsInfo.addObsoleted(d1, od1) self.tsInfo.addUpdate(ur1, oldpo=r1) self.tsInfo.addUpdate(ur2, oldpo=r2) self.tsInfo.addUpdate(ur3, oldpo=r3) self.tsInfo.addUpdate(ur4, oldpo=r4) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([c1,d1,r1,r2,r3,r4]) def testDualPackageUpdate(self): ''' RHBZ #522112 two version of the same package installed on the system and update will update both, but if it fail some dep only One of the updated packages will be removed from the transaction. ''' i1 = self.instPackage('xorg-x11-server-Xorg','1.6.99.900') i2 = self.instPackage('xorg-x11-server-Xorg','1.6.3') u1 = self.repoPackage('xorg-x11-server-Xorg', '1.6.99.901') u1.addRequires("notfound") self.tsInfo.addUpdate(u1, oldpo=i1) self.tsInfo.addUpdate(u1, oldpo=i2) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([i1,i2]) def testDowngrade1(self): ''' bar require foolib=2.0 provided by foo-1.2 foo-1.2 is downgraded to foo-1.1 there only contains foolib=1.0 so bar requirement is broken and the downgrade should be removed from transaction ''' i1 = self.instPackage('foo', '1.2') i1.addProvides('foolib', 'EQ', ('0', '2', '0')) i2 = self.instPackage('bar', '1.0') i2.addRequires('foolib', 'EQ', ('0', '2', '0')) d1 = self.repoPackage('foo', '1.1') d1.addProvides('foolib', 'EQ', ('0', '1', '0')) self.tsInfo.addDowngrade(d1, oldpo=i1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([i1, i2]) def testMissingfileReqIptabes(self): ''' RHBZ #555528 iptables-0:1.4.5-1.fc12.i686 provides /usr/lib/libxtables.so.2 is updated to iptables-0:1.4.6-1.fc13.i686 provides /usr/lib/libxtables.so.4 so libguestfs-1:1.0.81-1.fc13.i686 that requires /usr/lib/libxtables.so.2 breaks because /usr/lib/libxtables.so.2 no longer exists. It fails in real life but not in the testcase :( ''' i1 = self.instPackage('iptables','1.4.5', arch='x86_64') i1.addFile("/usr/lib64/libxtables.so.2") i2 = self.instPackage('libguestfs','1.0.81', arch='x86_64') i2.addRequires("/usr/lib64/libxtables.so.2") u1 = self.repoPackage('iptables','1.4.6', arch='x86_64') u1.addFile("/usr/lib64/libxtables.so.4") self.tsInfo.addUpdate(u1, oldpo=i1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult([i1,i2]) def testTransactionOutput(self): ''' Test that skip-broken transaction dump output dont show the dependon: xxx once. ''' i1 = self.repoPackage('bar1', '1') i1.addRequires('foo1', 'EQ', ('0', '1', '0')) i1.addRequires('foo2', 'EQ', ('0', '1', '0')) i1.addRequires('foo3', 'EQ', ('0', '1', '0')) i1.addRequires('foo4', 'EQ', ('0', '1', '0')) i1.addRequires('foo5', 'EQ', ('0', '1', '0')) i1.addRequires('foo6', 'EQ', ('0', '1', '0')) i2 = self.repoPackage('fooA', '1') i2.addProvides('foo1', 'EQ', ('0', '1', '0')) i3 = self.repoPackage('fooB', '1') i3.addProvides('foo2', 'EQ', ('0', '1', '0')) i4 = self.repoPackage('fooC', '1') i4.addProvides('foo3', 'EQ', ('0', '1', '0')) i5 = self.repoPackage('fooD', '1') i5.addProvides('foo4', 'EQ', ('0', '1', '0')) i6 = self.repoPackage('fooE', '1') i6.addProvides('foo5', 'EQ', ('0', '1', '0')) i7 = self.instPackage('fooF', '1') i7.addProvides('foo6', 'EQ', ('0', '1', '0')) u7 = self.instPackage('fooF', '2') u7.addProvides('foo6', 'EQ', ('0', '2', '0')) self.tsInfo.addInstall(i1) self.tsInfo.addUpdate(u7, oldpo=i7) self.assertEquals('ok', *self.resolveCode(skip=True)) # uncomment this line and the test will fail and you can see the output # self.assertResult([i1]) def test_conflict_looping(self): ''' Skip-broken is looping https://bugzilla.redhat.com/show_bug.cgi?id=681806 ''' members = [] # the result after the transaction # Installed package conflicts with u1 i0 = self.instString('kde-l10n-4.6.0-3.fc15.1.noarch') i0.addConflicts('kdepim', 'GT', ('6', '4.5.9', '0')) members.append(i0) i1 = self.instString('6:kdepim-4.5.94.1-1.fc14.x86_64') u1 = self.repoString('7:kdepim-4.4.10-1.fc15.x86_64') self.tsInfo.addUpdate(u1, oldpo=i1) # u1 should be removed, because of the conflict members.append(i1) i2 = self.instString('6:kdepim-libs-4.5.94.1-1.fc14.x86_64') u2 = self.repoString('7:kdepim-libs-4.4.10-1.fc15.x86_64') self.tsInfo.addUpdate(u2, oldpo=i2) members.append(u2) i3 = self.instString('kdepim-runtime-libs-4.5.94.1-2.fc14.x86_64') u3 = self.repoString('1:kdepim-runtime-libs-4.4.10-2.fc15.x86_64') self.tsInfo.addUpdate(u3, oldpo=i3) members.append(u3) i4 = self.instString('kdepim-runtime-4.5.94.1-2.fc14.x86_64') u4 = self.repoString('1:kdepim-runtime-4.4.10-2.fc15.x86_64') self.tsInfo.addUpdate(u4, oldpo=i4) members.append(u4) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult(members) def test_skipbroken_001(self): ''' this will pass https://bugzilla.redhat.com/show_bug.cgi?id=656057 ''' members = [] # Installed package conflicts with ux1 ix0 = self.instString('1:libguestfs-1.6.0-1.fc14.1.i686') ix0.addRequires('/usr/lib/.libssl.so.1.0.0a.hmac') members.append(ix0) ix1 = self.instString('openssl-1.0.0a-2.fc14.i686') ix1.addFile("/usr/lib/.libssl.so.1.0.0a.hmac") ux1 = self.repoString('openssl-1.0.0b-1.fc14.i686') ux1.addFile("/usr/lib/.libssl.so.1.0.0b.hmac") self.tsInfo.addUpdate(ux1, oldpo=ix1) members.append(ix1) self.assertEquals('empty', *self.resolveCode(skip=True)) self.assertResult(members) def test_skipbroken_002(self): ''' this will pass https://bugzilla.redhat.com/show_bug.cgi?id=656057 ''' members = [] # Installed package conflicts with ux1 ix0 = self.instString('1:libguestfs-1.6.0-1.fc14.1.i686') ix0.addRequires('/usr/lib/.libssl.so.1.0.0a.hmac') members.append(ix0) ix1 = self.instString('openssl-1.0.0a-2.fc14.i686') ix1.addFile("/usr/lib/.libssl.so.1.0.0a.hmac") ux1 = self.repoString('openssl-1.0.0b-1.fc14.i686') ux1.addFile("/usr/lib/.libssl.so.1.0.0b.hmac") self.tsInfo.addUpdate(ux1, oldpo=ix1) members.append(ix1) # this is just junk to make the transaction big i1 = self.instString('afoobar-0.4.12-2.fc12.noarch') u1 = self.repoString('afoobar-0.4.14-1.fc14.noarch') self.tsInfo.addUpdate(u1, oldpo=i1) members.append(u1) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult(members) def test_skipbroken_003(self): ''' this will fail, because of a bug in the skip-broken code. it will remove the wrong package (zfoobar) instead of openssl. the problem is that self._working_po is not set with the right value when checking file requires for installed packages after the transaction if resolved. (_resolveRequires) if fails because self._working_po contains the last package processed in the transaction zfoobar, so it will be removed. https://bugzilla.redhat.com/show_bug.cgi?id=656057 This should not fail anymore, after the the self._working_po is reset in depsolver ''' members = [] # Installed package conflicts with ux1 ix0 = self.instString('1:libguestfs-1.6.0-1.fc14.1.i686') ix0.addRequires('/usr/lib/.libssl.so.1.0.0a.hmac') members.append(ix0) ix1 = self.instString('openssl-1.0.0a-2.fc14.i686') ix1.addFile("/usr/lib/.libssl.so.1.0.0a.hmac") ux1 = self.repoString('openssl-1.0.0b-1.fc14.i686') ux1.addFile("/usr/lib/.libssl.so.1.0.0b.hmac") self.tsInfo.addUpdate(ux1, oldpo=ix1) members.append(ix1) # this is just junk to make the transaction big i1 = self.instString('zfoobar-0.4.12-2.fc12.noarch') u1 = self.repoString('zfoobar-0.4.14-1.fc14.noarch') self.tsInfo.addUpdate(u1, oldpo=i1) members.append(u1) self.assertEquals('ok', *self.resolveCode(skip=True)) self.assertResult(members) def resolveCode(self,skip = False): solver = YumBase() solver.save_ts = save_ts solver.arch.setup_arch('x86_64') solver.conf = FakeConf() solver.conf.skip_broken = skip solver.tsInfo = solver._tsInfo = self.tsInfo solver.rpmdb = self.rpmdb solver.pkgSack = self.xsack solver.dsCallback = DepSolveProgressCallBack() for po in self.rpmdb: po.repoid = po.repo.id = "installed" for po in self.xsack: po.repoid = po.repo.id = "TestRepository" for txmbr in solver.tsInfo: if txmbr.ts_state in ('u', 'i'): txmbr.po.repoid = txmbr.po.repo.id = "TestRepository" else: txmbr.po.repoid = txmbr.po.repo.id = "installed" res, msg = solver.buildTransaction() return self.res[res], msg def setup_logging(): logging.basicConfig() plainformatter = logging.Formatter("%(message)s") console_stdout = logging.StreamHandler(sys.stdout) console_stdout.setFormatter(plainformatter) verbose = logging.getLogger("yum.verbose") verbose.propagate = False verbose.addHandler(console_stdout) verbose.setLevel(2) yum-3.4.3/test/testbase.py0000664000076400007640000004367211602434452014505 0ustar jamesjamesimport os import sys import unittest import settestpath import logging import yum.logginglevels as logginglevels new_behavior = "NEW_BEHAVIOR" in os.environ.keys() from yum import YumBase from yum import transactioninfo from yum import packages from yum import packageSack from yum.constants import TS_INSTALL_STATES, TS_REMOVE_STATES from cli import YumBaseCli from yum.rpmsack import RPMDBPackageSack as _rpmdbsack import inspect from rpmUtils import arch from rpmUtils.transaction import initReadOnlyTransaction import rpmUtils.miscutils ############################################################# ### Helper classes ########################################## ############################################################# # Dummy translation wrapper def _(msg): return msg # dummy save_ts to avoid lots of errors def save_ts(*args, **kwargs): pass class FakeConf(object): def __init__(self): self.installonlypkgs = ['kernel'] self.exclude = [] self.debuglevel = 8 self.obsoletes = True self.exactarch = False self.exactarchlist = [] self.installroot = '/' self.tsflags = [] self.installonly_limit = 0 self.skip_broken = False self.disable_excludes = [] self.multilib_policy = 'best' self.persistdir = '/should-not-exist-bad-test!' self.showdupesfromrepos = False self.uid = 0 self.groupremove_leaf_only = False self.protected_packages = [] self.protected_multilib = False self.clean_requirements_on_remove = True class FakeSack: """ Fake PackageSack to use with FakeRepository""" 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 def __cmp__(self, other): """ Sort base class repos. by alphanumeric on their id, also see __cmp__ in YumRepository(). """ if self.id > other.id: return 1 elif self.id < other.id: return -1 else: return 0 class FakeYumDBInfo(object): """Simulate some functionality of RPMAdditionalDataPackage""" _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=None, pkgdir=None, yumdb_cache=None): self.db = {} for attr in self._auto_hardlink_attrs: self.db[attr] = '' def __getattr__(self, attr): return self.db[attr] def __setattr__(self, attr, value): if not attr.startswith("db"): self.db[attr] = value else: object.__setattr__(self, attr, value) def __iter__(self, show_hidden=False): for item in self.db: yield item def get(self, attr, default=None): try: res = self.db[attr] except AttributeError: return default return res class FakePackage(packages.YumAvailablePackage): def __init__(self, name, version='1.0', release='1', epoch='0', arch='noarch', repo=None): if repo is None: repo = FakeRepo() print "creating empty repo for %s-%s:%s-%s.%s " % (name, epoch, version, release, arch) packages.YumAvailablePackage.__init__(self, repo) self.name = name self.version = version self.ver = version self.release = release self.rel = release self.epoch = epoch self.arch = arch self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release) self.yumdb_info = FakeYumDBInfo() self.prco['provides'].append((name, 'EQ', (epoch, version, release))) # Just a unique integer self.id = self.__hash__() self.pkgKey = self.__hash__() self.required_pkgs = [] self.requiring_pkgs = [] def addProvides(self, name, flag=None, evr=(None, None, None)): self.prco['provides'].append((name, flag, evr)) def addRequires(self, name, flag=None, evr=(None, None, None)): self.prco['requires'].append((name, flag, evr)) def addRequiresPkg(self, pkg): self.required_pkgs.append(pkg) def addRequiringPkg(self, pkg): self.requiring_pkgs.append(pkg) def addConflicts(self, name, flag=None, evr=(None, None, None)): self.prco['conflicts'].append((name, flag, evr)) def addObsoletes(self, name, flag=None, evr=(None, None, None)): self.prco['obsoletes'].append((name, flag, evr)) def addFile(self, name, ftype='file'): self.files[ftype].append(name) def required_packages(self): return self.required_pkgs def requiring_packages(self): return self.requiring_pkgs class _Container(object): pass class DepSolveProgressCallBack: """provides text output callback functions for Dependency Solver callback""" def __init__(self): """requires yum-cli log and errorlog functions as arguments""" self.verbose_logger = logging.getLogger("yum.verbose.cli") self.loops = 0 def pkgAdded(self, pkgtup, mode): modedict = { 'i': _('installed'), 'u': _('an update'), 'e': _('erased'), 'r': _('reinstalled'), 'd': _('a downgrade'), 'o': _('obsoleting'), 'ud': _('updated'), 'od': _('obsoleted'),} (n, a, e, v, r) = pkgtup modeterm = modedict[mode] self.verbose_logger.log(logginglevels.INFO_2, _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r, modeterm) def start(self): self.loops += 1 def tscheck(self): self.verbose_logger.log(logginglevels.INFO_2, _('--> Running transaction check')) def restartLoop(self): self.loops += 1 self.verbose_logger.log(logginglevels.INFO_2, _('--> Restarting Dependency Resolution with new changes.')) self.verbose_logger.debug('---> Loop Number: %d', self.loops) def end(self): self.verbose_logger.log(logginglevels.INFO_2, _('--> Finished Dependency Resolution')) def procReq(self, name, formatted_req): self.verbose_logger.log(logginglevels.INFO_2, _('--> Processing Dependency: %s for package: %s'), formatted_req, name) def unresolved(self, msg): self.verbose_logger.log(logginglevels.INFO_2, _('--> Unresolved Dependency: %s'), msg) def procConflict(self, name, confname): self.verbose_logger.log(logginglevels.INFO_2, _('--> Processing Conflict: %s conflicts %s'), name, confname) def transactionPopulation(self): self.verbose_logger.log(logginglevels.INFO_2, _('--> Populating transaction set ' 'with selected packages. Please wait.')) def downloadHeader(self, name): self.verbose_logger.log(logginglevels.INFO_2, _('---> Downloading header for %s ' 'to pack into transaction set.'), name) ####################################################################### ### Abstract super class for test cases ############################### ####################################################################### class _DepsolveTestsBase(unittest.TestCase): res = {0 : 'empty', 2 : 'ok', 1 : 'err'} def __init__(self, methodName='runTest'): unittest.TestCase.__init__(self, methodName) self.pkgs = _Container() self.buildPkgs(self.pkgs) def setUp(self): pass def tearDown(self): pass @staticmethod def buildPkgs(pkgs, *args): """Overload this staticmethod to create pkpgs that are used in several test cases. It gets called from __init__ with self.pkgs as first parameter. It is a staticmethod so you can call .buildPkgs() from other Tests to share buildPkg code (inheritance doesn't work here, because we don't want to inherit the test cases, too). """ pass def assertResult(self, pkgs, optional_pkgs=[]): """Check if "system" contains the given pkgs. pkgs must be present, optional_pkgs may be. Any other pkgs result in an error. Pkgs are present if they are in the rpmdb and are not REMOVEd or they are INSTALLed. """ errors = ["Unexpected result after depsolving: \n\n"] pkgs = set(pkgs) optional_pkgs = set(optional_pkgs) installed = set() for pkg in self.rpmdb: # got removed if self.tsInfo.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES): if pkg in pkgs: errors.append("Package %s was removed!\n" % pkg) else: # still installed if pkg not in pkgs and pkg not in optional_pkgs: errors.append("Package %s was not removed!\n" % pkg) installed.add(pkg) for txmbr in self.tsInfo.getMembersWithState(output_states=TS_INSTALL_STATES): installed.add(txmbr.po) if txmbr.po not in pkgs and txmbr.po not in optional_pkgs: errors.append("Package %s was installed!\n" % txmbr.po) for pkg in pkgs - installed: errors.append("Package %s was not installed!\n" % pkg) if len(errors) > 1: errors.append("\nTest case was:\n\n") errors.extend(inspect.getsource(inspect.stack()[1][0].f_code)) errors.append("\n") self.fail("".join(errors)) class FakeRpmDb(packageSack.PackageSack): ''' We use a PackagePack for a Fake rpmdb insted of the normal RPMDBPackageSack, getProvides works a little different on unversioned requirements so we have to overload an add some extra checkcode. ''' def __init__(self): packageSack.PackageSack.__init__(self) # Need to mock out rpmdb caching... copy&paste. Gack. def returnConflictPackages(self): ret = [] for pkg in self.returnPackages(): if len(pkg.conflicts): ret.append(pkg) return ret def fileRequiresData(self): installedFileRequires = {} installedUnresolvedFileRequires = set() resolved = set() for pkg in self.returnPackages(): for name, flag, evr in pkg.requires: if not name.startswith('/'): continue installedFileRequires.setdefault(pkg.pkgtup, []).append(name) if name not in resolved: dep = self.getProvides(name, flag, evr) resolved.add(name) if not dep: installedUnresolvedFileRequires.add(name) fileRequires = set() for fnames in installedFileRequires.itervalues(): fileRequires.update(fnames) installedFileProviders = {} for fname in fileRequires: pkgtups = [pkg.pkgtup for pkg in self.getProvides(fname)] installedFileProviders[fname] = pkgtups ret = (installedFileRequires, installedUnresolvedFileRequires, installedFileProviders) return ret def transactionCacheFileRequires(self, installedFileRequires, installedUnresolvedFileRequires, installedFileProvides, problems): return def transactionCacheConflictPackages(self, pkgs): return def transactionResultVersion(self, rpmdbv): return 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') result = { } # convert flags & version for unversioned reqirements if not version: version=(None, None, None) if type(version) in (str, type(None), unicode): version = rpmUtils.miscutils.stringToVersion(version) if flags == '0': flags=None for po in self.provides.get(name, []): hits = po.matchingPrcos('provides', (name, flags, version)) if hits: result[po] = hits if name[0] == '/': hit = (name, None, (None, None, None)) for po in self.searchFiles(name): result.setdefault(po, []).append(hit) return result ####################################################################### ### Derive Tests from these classes or unittest.TestCase ############## ####################################################################### class DepsolveTests(_DepsolveTestsBase): """Run depsolver on an manually set up transaction. You can add pkgs to self.rpmdb or self.tsInfo. See yum/transactioninfo.py for details. A typical test case looks like: def testInstallPackageRequireInstalled(self): po = FakePackage('zsh', '1', '1', None, 'i386') po.addRequires('zip', 'EQ', (None, '1.3', '2')) self.tsInfo.addInstall(po) ipo = FakePackage('zip', '1.3', '2', None, 'i386') self.rpmdb.addPackage(ipo) result, msg = self.resolveCode() self.assertEquals('ok', result, msg) self.assertResult((po, ipo)) """ def setUp(self): """ Called at the start of each test. """ _DepsolveTestsBase.setUp(self) self.tsInfo = transactioninfo.TransactionData() self.tsInfo.debug = 1 self.rpmdb = FakeRpmDb() self.xsack = packageSack.PackageSack() self.repo = FakeRepo("installed") # XXX this side-affect is hacky: self.tsInfo.setDatabases(self.rpmdb, self.xsack) def resetTsInfo(self): self.tsInfo = transactioninfo.TransactionData() def resolveCode(self): solver = YumBase() solver.save_ts = save_ts solver.conf = FakeConf() solver.arch.setup_arch('x86_64') solver.tsInfo = solver._tsInfo = self.tsInfo solver.rpmdb = self.rpmdb solver.pkgSack = self.xsack for po in self.rpmdb: po.repoid = po.repo.id = "installed" for po in self.xsack: if po.repo.id is None: po.repo.id = "TestRepository" po.repoid = po.repo.id for txmbr in self.tsInfo: if txmbr.ts_state in ('u', 'i'): if txmbr.po.repo.id is None: txmbr.po.repo.id = "TestRepository" txmbr.po.repoid = txmbr.po.repo.id else: txmbr.po.repoid = txmbr.po.repo.id = "installed" result, msg = solver.resolveDeps() return (self.res[result], msg) class OperationsTests(_DepsolveTestsBase): """Run a yum command (install, update, remove, ...) in a given set of installed and available pkgs. Typical test case looks like: def testUpdate(self): p = self.pkgs res, msg = self.runOperation(['update'], [p.installed], [p.update]) self.assert_(res=='ok', msg) self.assertResult((p.update,)) To avoid creating the same pkgs over and over again overload the staticmethod buildPkgs. It gets called from __init__ with self.pkgs as first parameter. As it is a static method you can call .buildPkgs() from other Tests to share buildPkg code. """ def runOperation(self, args, installed=[], available=[], confs={}, multi_cmds=False): """Sets up and runs the depsolver. args[0] must be a valid yum command ("install", "update", ...). It might be followed by pkg names as on the yum command line. The pkg objects in installed are added to self.rpmdb and those in available to self.xsack which is the repository to resolve requirements from. """ depsolver = YumBaseCli() depsolver.save_ts = save_ts depsolver.arch.setup_arch('x86_64') self.rpmdb = depsolver.rpmdb = FakeRpmDb() self.xsack = depsolver._pkgSack = packageSack.PackageSack() self.repo = depsolver.repo = FakeRepo("installed") depsolver.conf = FakeConf() for conf in confs: setattr(depsolver.conf, conf, confs[conf]) # We are running nosetest, so we want to see some yum output # if a testcase if failing depsolver.doLoggingSetup(9,9) self.depsolver = depsolver for po in installed: po.repoid = po.repo.id = "installed" self.depsolver.rpmdb.addPackage(po) for po in available: if po.repo.id is None: po.repo.id = "TestRepository" po.repoid = po.repo.id self.depsolver._pkgSack.addPackage(po) if not multi_cmds: self.depsolver.basecmd = args[0] self.depsolver.extcmds = args[1:] res, msg = self.depsolver.doCommands() else: for nargs in args: self.depsolver.basecmd = nargs[0] self.depsolver.extcmds = nargs[1:] res, msg = self.depsolver.doCommands() if res != 2: return res, msg self.tsInfo = depsolver.tsInfo if res!=2: return res, msg res, msg = self.depsolver.buildTransaction() return self.res[res], msg yum-3.4.3/test/settestpath.py0000664000076400007640000000026311602434452015230 0ustar jamesjamesimport sys # Adjust path so we can see the src modules running from branch as well # as test dir: sys.path.insert(0, '../../') sys.path.insert(0, '../') sys.path.insert(0, './') yum-3.4.3/test/yum-pylintrc0000664000076400007640000002500111602434452014702 0ustar jamesjames# lint Python modules using external checkers. # # This is the main checker controling the other ones and the reports # generation. It is itself both a raw checker and an astng checker in order # to: # * handle message activation / deactivation at the module level # * handle some basic but necessary stats'data (number of classes, methods...) # [MASTER] # Specify a configuration file. #rcfile= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook=="execfile('test/pylint-setup.py')" # Profiled execution. profile=no # Add to the black list. It should be a base name, not a # path. You may set this option multiple times. ignore=CVS # Pickle collected data for later comparisons. persistent=yes # Set the cache size for astng objects. cache-size=500 # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= [MESSAGES CONTROL] # Enable only checker(s) with the given id(s). This option conflicts with the # disable-checker option #enable-checker= # Enable all checker(s) except those with the given id(s). This option # conflicts with the enable-checker option #disable-checker= # Enable all messages in the listed categories. #enable-msg-cat= # Disable all messages in the listed categories. disable-msg-cat=C,R # Enable the message(s) with the given id(s). #enable-msg= # Disable the message(s) with the given id(s). # E1101: *%s %r has no %r member* (The init-hook for do sys.path manipulation don't, so we cant find the utils module) # F0401: *Unable to import %r (%s)* (See above) # W0704: *Except doesn't do anything* ( Except xxxxxx,e : pass is ok) # W0612: *Unused variable %r* ( dont care if x,y,z = f() and y,z is not used) # W0212: *Access to a protected member %s of a client class* (if sucks, but we do that a lot) # W0613: *Unused argument %r* # W0602: *Using global for %r but no assigment is done* # W0511: Used when a warning note as FIXME or XXX is detected # W0401: *Wildcard import %s* # W0614: *Unused import %s from wildcard import* # W0232: *Class has no __init__ method* # W0201: *Attribute %r defined outside __init__* # W0603: *Using the global statement* # W0621: *Redefining name %r from outer scope (line %s)* # W0142: *Used * or ** magic* # W0102: *Dangerous default value %s as argument* # W0105: *String statement has no effect* # W0702: *No exception type(s) specified* # W0231: *__init__ method from base class %r is not called* # E0202: *An attribute inherited from %s hide this method* # W0622: *Redefining built-in %r* # W0403: *Relative import %r* # W0223: *Method %r is abstract in class %r but is not overridden* # W0104: *Statement seems to have no effect* # W1001: *Use of "property" on an old style class* # W0221: *Arguments number differs from %s method* # 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) # 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] # set the output format. Available formats are text, parseable, colorized, msvs # (visual studio) and html output-format=colorized # Include message's id in output include-ids=yes # Put messages in a separate file for each module / package specified on the # command line instead of printing them on stdout. Reports (if any) will be # written in a file name "pylint_global.[txt|html]". files-output=no # Tells wether to display a full report or only the messages reports=yes # Python expression which should return a note less than 10 (10 is the highest # note).You have access to the variables errors warning, statement which # respectivly contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (R0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Add a comment according to your evaluation note. This is used by the global # evaluation report (R0004). comment=no # Enable the report(s) with the given id(s). #enable-report= # Disable the report(s) with the given id(s). #disable-report= # checks for : # * doc strings # * modules / classes / functions / methods / arguments / variables name # * number of arguments, local variables, branchs, returns and statements in # functions, methods # * required module attributes # * dangerous default values as arguments # * redefinition of function / method / class # * uses of the global statement # [BASIC] # Required attributes for module, separated by a comma required-attributes= # Regular expression which should only match functions or classes name which do # not require a docstring no-docstring-rgx=__.*__ # Regular expression which should only match correct module names module-rgx=(([a-z_][a-z0-9_\-]*)|([A-Z][a-zA-Z0-9]+))$ # Regular expression which should only match correct module level names const-rgx=(([A-Z_a-z][A-Z1-9_a-z]*)|(__.*__))$ # Regular expression which should only match correct class names class-rgx=[A-Z_][a-zA-Z0-9]+$ # Regular expression which should only match correct function names function-rgx=[a-z_][a-z0-9_A-Z]{2,30}$ # Regular expression which should only match correct method names method-rgx=[a-z_][a-z0-9_A-Z]{2,30}$ # Regular expression which should only match correct instance attribute names attr-rgx=[a-z_][a-z0-9_A-Z]{2,30}$ # Regular expression which should only match correct argument names argument-rgx=[a-z_][a-z0-9_A-Z]{0,30}$ # Regular expression which should only match correct variable names variable-rgx=[a-z_][a-z0-9_A-Z]{0,30}$ # Regular expression which should only match correct list comprehension / # generator expression variable names inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_,n,e,r,v,a,po,f,m,u,h,l # Bad variable names which should always be refused, separated by a comma bad-names=foo,bar,baz,toto,tutu,tata # List of builtins function names that should not be used, separated by a comma bad-functions=input # checks for # * unused variables / imports # * undefined variables # * redefinition of variable from builtins or from an outer scope # * use of variable before assigment # [VARIABLES] # Tells wether we should check for unused import in __init__ files. init-import=no # A regular expression matching names used for dummy variables (i.e. not used). dummy-variables-rgx=_|dummy # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= # try to find bugs in the code using type inference # [TYPECHECK] # Tells wether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamicaly set). ignored-classes=SQLObject,NullTranslations # When zope mode is activated, consider the acquired-members option to ignore # access to some undefined attributes. zope=no # List of members which are usually get through zope's acquisition mecanism and # so shouldn't trigger E0201 when accessed (need zope=yes to be considered). acquired-members=REQUEST,acl_users,aq_parent # checks for # * external modules dependencies # * relative / wildcard imports # * cyclic imports # * uses of deprecated modules # [IMPORTS] # Deprecated modules which should not be used, separated by a comma deprecated-modules=regsub,TERMIOS,Bastion,rexec # Create a graph of every (i.e. internal and external) dependencies in the # given file (report R0402 must not be disabled) import-graph= # Create a graph of external dependencies in the given file (report R0402 must # not be disabled) ext-import-graph= # Create a graph of internal dependencies in the given file (report R0402 must # not be disabled) int-import-graph= # checks for : # * methods without self as first argument # * overridden methods signature # * access only to existant members via self # * attributes not defined in the __init__ method # * supported interfaces implementation # * unreachable code # [CLASSES] # List of interface methods to ignore, separated by a comma. This is used for # instance to not check methods defines in Zope's Interface base class. ignore-iface-methods=interrupt_callback # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # checks for sign of poor/misdesign: # * number of methods, attributes, local variables... # * size, complexity of functions, methods # [DESIGN] # Maximum number of arguments for function / method max-args=5 # Maximum number of locals for function / method body max-locals=30 # Maximum number of return / yield for function / method body max-returns=10 # Maximum number of branch for function / method body max-branchs=25 # Maximum number of statements in function / method body max-statements=100 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Minimum number of public methods for a class (see R0903). min-public-methods=2 # Maximum number of public methods for a class (see R0904). max-public-methods=100 # checks for : # * unauthorized constructions # * strict indentation # * line length # * use of <> instead of != # [FORMAT] # Maximum number of characters on a single line. max-line-length=80 # Maximum number of lines in a module max-module-lines=1000 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' # checks for similarities and duplicated code. This computation may be # memory / CPU intensive, so you should disable it if you experiments some # problems. # [SIMILARITIES] # Minimum lines number of a similarity. min-similarity-lines=4 # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # checks for: # * warning notes in the code like FIXME, XXX # * PEP 263: source code with non ascii character but no encoding declaration # [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX,TODO yum-3.4.3/test/release.sh0000775000076400007640000000615011602434452014266 0ustar jamesjames#! /bin/sh -e function bbanner { python -c 'print "=" * 79' echo $@ python -c 'print "-" * 79' } function ebanner { python -c 'print "-" * 79' echo $@ python -c 'print "=" * 79' } function utst { bbanner "Testing (user):" $@ "$@" ebanner "Does that look fine? For (user):" $@ sleep 8 } function stst { bbanner "Testing (root):" $@ sudo "$@" ebanner "Does that look fine? For (root):" $@ sleep 8 } stst yum version nogroups utst yum version nogroups stst yum history list stst yum history new stst yum history new utst yum list zzuf stst yum version nogroups stst yum install zzuf stst yum version nogroups stst yum reinstall zzuf stst yum version nogroups stst yum remove zzuf stst yum version nogroups stst yum install yourmom || true stst yum install -y zzuf | tee /tmp/yum-release-testing-install-y-zzuf stst cat /tmp/yum-release-testing-install-y-zzuf stst yum version nogroups stst yum remove -y zzuf | tee /tmp/yum-release-testing-remove-y-zzuf stst cat /tmp/yum-release-testing-remove-y-zzuf stst yum version nogroups stst yum history list stst yum localinstall || true stst yum localinstall yourmom || true stst yum list updates stst yum list obsoletes stst yum list available stst yum list installed stst yum check-update || true echo | stst yum update || true stst yum groupinstall 'News Server' stst yum groupremove 'News Server' stst yum groupinstall -y 'News Server' stst yum groupremove --setopt=clean_requirements_on_remove=true -y 'News Server' # News server has a bunch of deps. stst yum groupinstall -y 'News Server' stst yum history undo last-4 -y stst yum history list utst yum grouplist utst yum grouplist not_a_group utst yum groupinfo || true utst yum groupinfo not_a_group stst yum info zzuf utst yum info zzuf stst yum makecache utst yum makecache stst yum clean all utst yum clean all stst yum -d0 -e0 install || true utst yum --version utst yum search || true stst yum provides zzuf stst yum provides /usr/bin/zzuf stst yum provides /usr/bin/yum utst yum provides /usr/share/man/man1/zzuf.1.gz utst yum provides '/usr/share/man/man*/zzuf.*.gz' stst yum provides '/usr/share/man/man1/zzcat.*.gz' utst yum provides '/usr/share/man/man*/zzcat.*.gz' utst yum resolvedep /usr/bin/zzcat stst yum deplist yum utst yum deplist zzuf echo echo python -c 'print "*" * 79' echo "Running 'make check', this should work but meh:" python -c 'print "*" * 79' make check echo echo sleep 8 echo echo python -c 'print "=" * 79' python -c 'print "*" * 79' echo "Done, good to do a release. Running git2cl:" make changelog || true python -c 'print "*" * 79' python -c 'print "=" * 79' echo " Make sure you have edited yum/__init__.py:__version__ *.spec versions If not check --version again. ChangeLog has been updated, check with git diff, then: git commit git push git tag -a yum-#-#-# git push --tags make archive Stick a build in rawhide. Update webpages: Main wiki page. /whatsnew /releases Upload tarball to yum.baseurl.org:/srv/projects/yum/web/download/x.y Send email to user and devel mailing list. " python -c 'print "=" * 79' yum-3.4.3/test/merge-history-transactions-tests.py0000664000076400007640000010437011602434452021330 0ustar jamesjamesimport unittest import yum.history as hist _fake_count = 0 class FakeYumHistoryTransaction(hist.YumHistoryTransaction): def __init__(self, pkgs, tid=None, beg_timestamp=None, end_timestamp=None, beg_rpmdbversion=None, end_rpmdbversion=None, loginuid=0, return_code=0, pkgs_with=[], errors=[], output=[]): global _fake_count if tid is None: _fake_count += 1 tid = _fake_count if beg_timestamp is None: _fake_count += 1 beg_timestamp = _fake_count if end_timestamp is None: _fake_count += 1 end_timestamp = _fake_count if beg_rpmdbversion is None: _fake_count += 1 beg_rpmdbversion = '?:,' + str(_fake_count) if end_rpmdbversion is None: _fake_count += 1 end_rpmdbversion = '?:,' + str(_fake_count) self.tid = tid self.beg_timestamp = beg_timestamp self.beg_rpmdbversion = beg_rpmdbversion self.end_timestamp = end_timestamp self.end_rpmdbversion = end_rpmdbversion self.loginuid = loginuid self.return_code = return_code self._loaded_TW = pkgs_with self._loaded_TD = pkgs self._loaded_ER = errors self._loaded_OT = output self.altered_lt_rpmdb = None self.altered_gt_rpmdb = None def _dump_trans_data(pkgs): """ For debugging to see WTF is going on with .trans_data. """ return [(str(pkg), pkg.state) for pkg in pkgs] class MergeHistTransTests(unittest.TestCase): def __init__(self, methodName='runTest'): unittest.TestCase.__init__(self, methodName) def setUp(self): pass def tearDown(self): pass def _merge_new(self, trans): merged = hist.YumMergedHistoryTransaction(trans[0]) for pkg in trans[1:]: merged.merge(pkg) return merged def _trans_new(self, *args, **kwargs): return FakeYumHistoryTransaction(*args, **kwargs) def _pkg_new(self, name, version='1', release='2', arch='noarch', epoch='0', checksum=None, state='Install'): self.assertTrue(state in hist._sttxt2stcode) pkg = hist.YumHistoryPackageState(name,arch,epoch,version,release, state, checksum) return pkg def assertMergedBeg(self, merged, beg): self.assertTrue(beg.tid in merged.tid) self.assertEquals(beg.beg_timestamp, merged.beg_timestamp) self.assertEquals(beg.beg_rpmdbversion, merged.beg_rpmdbversion) def assertMergedEnd(self, merged, end): self.assertTrue(end.tid in merged.tid) self.assertEquals(end.end_timestamp, merged.end_timestamp) self.assertEquals(end.end_rpmdbversion, merged.end_rpmdbversion) def assertMergedCodes(self, merged, trans): ret = set() uid = set() for trans in trans: ret.add(trans.loginuid) uid.add(trans.return_code) if len(ret) == 1: self.assertEquals(list(ret)[0], merged.return_code) else: for ret in ret: self.assertTrue(ret in merged.return_code) if len(uid) == 1: self.assertEquals(list(uid)[0], merged.loginuid) else: for uid in uid: self.assertTrue(uid in merged.loginuid) def assertMergedMain(self, merged, trans): self.assertMergedBeg(merged, trans[0]) self.assertMergedEnd(merged, trans[-1]) self.assertMergedCodes(merged, trans) def testSimpleInMerge1(self, xstate='Install'): pkg1 = self._pkg_new('foo', state=xstate) pkg2 = self._pkg_new('xbar', version='4') trans = [] trans.append(self._trans_new([pkg1])) trans.append(self._trans_new([pkg2])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 2) self.assertEquals(pkgs[0], pkg1) self.assertEquals(pkgs[0].state, xstate) self.assertEquals(pkgs[1], pkg2) self.assertEquals(pkgs[1].state, pkg2.state) def testSimpleInMerge2(self, xstate='Install'): pkg1 = self._pkg_new('foo', state=xstate) pkg2 = self._pkg_new('bar', version='4') pkg3 = self._pkg_new('xbar', version='6') pkg4 = self._pkg_new('xfoo', version='3') trans = [] trans.append(self._trans_new([pkg1, pkg3])) trans.append(self._trans_new([pkg2, pkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], pkg2) self.assertEquals(pkgs[0].state, pkg2.state) self.assertEquals(pkgs[1], pkg1) self.assertEquals(pkgs[1].state, xstate) self.assertEquals(pkgs[2], pkg3) self.assertEquals(pkgs[2].state, pkg3.state) self.assertEquals(pkgs[3], pkg4) self.assertEquals(pkgs[3].state, pkg4.state) def testSimpleUpMerge1(self, xstate='Update'): opkg1 = self._pkg_new('foo', state='Updated') npkg1 = self._pkg_new('foo', version='3', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') trans = [] trans.append(self._trans_new([opkg1, npkg1])) trans.append(self._trans_new([opkg2, npkg2])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, opkg2.state) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[1].state, npkg2.state) self.assertEquals(pkgs[2], opkg1) self.assertEquals(pkgs[2].state, opkg1.state) self.assertEquals(pkgs[3], npkg1) self.assertEquals(pkgs[3].state, xstate) def testSimpleUpMerge2(self, xstate='Update'): opkg1 = self._pkg_new('foo', state='Updated') npkg1 = self._pkg_new('foo', version='3', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='3', state='Updated') npkg3 = self._pkg_new('foo', version='5', state='Update') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1, npkg1])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, opkg2.state) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[1].state, npkg2.state) self.assertEquals(pkgs[2], opkg1) self.assertEquals(pkgs[2].state, opkg1.state) self.assertEquals(pkgs[3], npkg3) self.assertEquals(pkgs[3].state, xstate) def testSimpleUpMerge3(self, xstate='Install'): opkg1 = self._pkg_new('foo', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', state='Updated') npkg3 = self._pkg_new('foo', version='5', state='Update') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, opkg2.state) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[1].state, npkg2.state) self.assertEquals(pkgs[2], npkg3) self.assertEquals(pkgs[2].state, xstate) def testSimpleUpMultiMerge1(self, xstate='Install'): opkg1 = self._pkg_new('foo', arch='i586', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', arch='i586', state='Updated') npkg3 = self._pkg_new('foo', arch='i686', version='5', state='Update') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, opkg2.state) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[1].state, npkg2.state) self.assertEquals(pkgs[2], npkg3) self.assertEquals(pkgs[2].state, xstate) def testUpDownMerge1(self, xstate='Update'): opkg1 = self._pkg_new('foo', version='0', state='Updated') npkg1 = self._pkg_new('foo', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', state='Updated') npkg3 = self._pkg_new('foo', version='7', state='Update') opkg4 = self._pkg_new('foo', version='7', state='Downgraded') npkg4 = self._pkg_new('foo', version='5', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1, npkg1])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([opkg4, npkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[2], opkg1) self.assertNotEquals(pkgs[3], opkg3) self.assertNotEquals(pkgs[3], npkg3) self.assertNotEquals(pkgs[3], opkg4) self.assertNotEquals(pkgs[3].state, npkg4.state) self.assertEquals(pkgs[3].pkgtup, npkg4.pkgtup) self.assertEquals(pkgs[3].state, xstate) def testUpDownMerge2(self, xstate='Install'): opkg1 = self._pkg_new('foo') opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', state='Updated') npkg3 = self._pkg_new('foo', version='7', state=xstate) opkg4 = self._pkg_new('foo', version='7', state='Downgraded') npkg4 = self._pkg_new('foo', version='5', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([opkg4, npkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertNotEquals(pkgs[2], opkg1) self.assertNotEquals(pkgs[2], opkg3) self.assertNotEquals(pkgs[2], npkg3) self.assertNotEquals(pkgs[2], opkg4) self.assertNotEquals(pkgs[2].state, npkg4.state) self.assertEquals(pkgs[2].pkgtup, npkg4.pkgtup) self.assertEquals(pkgs[2].state, xstate) def testUpDownMerge3(self): opkg1 = self._pkg_new('foo') opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='3', state='Updated') # rpmdbv npkg3 = self._pkg_new('foo', version='7', state='Update') opkg4 = self._pkg_new('foo', version='7', state='Downgraded') npkg4 = self._pkg_new('foo', version='3', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([opkg4, npkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[2], opkg1) self.assertEquals(pkgs[2].state, opkg1.state) self.assertNotEquals(pkgs[3], opkg1) self.assertNotEquals(pkgs[3].state, opkg3.state) self.assertNotEquals(pkgs[3], npkg3) self.assertNotEquals(pkgs[3], opkg4) self.assertNotEquals(pkgs[3].state, npkg4.state) self.assertEquals(pkgs[3].pkgtup, npkg4.pkgtup) self.assertEquals(pkgs[3].state, 'Reinstall') def testUpDownMerge4(self, xstate='Update'): opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='3', state='Updated') npkg3 = self._pkg_new('foo', version='7', state=xstate) opkg4 = self._pkg_new('foo', version='7', state='Downgraded') npkg4 = self._pkg_new('foo', version='3', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([opkg4, npkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertNotEquals(pkgs[2].state, opkg3.state) self.assertNotEquals(pkgs[2], npkg3) self.assertNotEquals(pkgs[2], opkg4) self.assertNotEquals(pkgs[2].state, npkg4.state) self.assertEquals(pkgs[2].pkgtup, opkg3.pkgtup) if xstate == 'Obsoleting': self.assertEquals(pkgs[2].state, 'Obsoleting') else: self.assertEquals(pkgs[2].state, 'Reinstall') def testUpDownMerge5(self, xstate='Update'): opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='3', state='Updated') npkg3 = self._pkg_new('foo', version='21', state=xstate) opkg4 = self._pkg_new('foo', version='21', state='Downgraded') npkg4 = self._pkg_new('foo', version='19', state='Downgrade') opkg5 = self._pkg_new('foo', version='19', state='Downgraded') npkg5 = self._pkg_new('foo', version='13', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([opkg4, npkg4])) trans.append(self._trans_new([opkg5, npkg5])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, opkg2.state) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[1].state, npkg2.state) self.assertEquals(pkgs[2], opkg3) self.assertEquals(pkgs[2].state, opkg3.state) self.assertEquals(pkgs[3], npkg5) self.assertEquals(pkgs[3].state, xstate) def testDownUpMerge1(self, xstate='Downgrade'): opkg1 = self._pkg_new('foo', version='10', state='Downgraded') npkg1 = self._pkg_new('foo', version='9', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='7', state='Updated') npkg3 = self._pkg_new('foo', version='8', state='Update') opkg4 = self._pkg_new('foo', version='9', state='Downgraded') npkg4 = self._pkg_new('foo', version='7', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1, npkg1])) trans.append(self._trans_new([opkg4, npkg4])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertNotEquals(pkgs[2], opkg3) self.assertNotEquals(pkgs[2].state, npkg3.state) self.assertNotEquals(pkgs[2], opkg4) self.assertNotEquals(pkgs[2], npkg4) self.assertEquals(pkgs[2].pkgtup, npkg3.pkgtup) self.assertEquals(pkgs[2].state, xstate) self.assertEquals(pkgs[3], opkg1) self.assertEquals(pkgs[3].state, opkg1.state) def testDownUpMerge2(self, xstate='Install'): opkg1 = self._pkg_new('foo', version='7', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='5', state='Updated') npkg3 = self._pkg_new('foo', version='6', state='Update') opkg4 = self._pkg_new('foo', version='7', state='Downgraded') npkg4 = self._pkg_new('foo', version='5', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1])) trans.append(self._trans_new([opkg4, npkg4])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertNotEquals(pkgs[2], opkg1) self.assertNotEquals(pkgs[2], opkg3) self.assertNotEquals(pkgs[2], opkg4) self.assertNotEquals(pkgs[2], npkg4) self.assertNotEquals(pkgs[2].state, npkg3.state) self.assertEquals(pkgs[2].pkgtup, npkg3.pkgtup) self.assertEquals(pkgs[2].state, xstate) def testDownUpMerge3(self): opkg1 = self._pkg_new('foo') opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='3', state='Updated') npkg3 = self._pkg_new('foo', version='7', state='Update') opkg4 = self._pkg_new('foo', version='7', state='Downgraded') # rpmdbv npkg4 = self._pkg_new('foo', version='3', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2, opkg1])) trans.append(self._trans_new([opkg4, npkg4])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[2], opkg1) self.assertEquals(pkgs[2].state, opkg1.state) self.assertNotEquals(pkgs[3], opkg1) self.assertNotEquals(pkgs[3], opkg3) self.assertNotEquals(pkgs[3].state, npkg3.state) self.assertNotEquals(pkgs[3].state, opkg4.state) self.assertNotEquals(pkgs[3], npkg4) self.assertEquals(pkgs[3].pkgtup, npkg3.pkgtup) self.assertEquals(pkgs[3].state, 'Reinstall') def testDownUpMerge4(self, xstate='Update'): opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='3', state='Updated') npkg3 = self._pkg_new('foo', version='7', state=xstate) opkg4 = self._pkg_new('foo', version='7', state='Downgraded') npkg4 = self._pkg_new('foo', version='3', state='Downgrade') trans = [] trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([opkg4, npkg4])) trans.append(self._trans_new([opkg3, npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[1], npkg2) self.assertNotEquals(pkgs[2], opkg3) self.assertNotEquals(pkgs[2].state, 'Update') self.assertNotEquals(pkgs[2].state, opkg4.state) self.assertNotEquals(pkgs[2], npkg4) self.assertEquals(pkgs[2].pkgtup, npkg3.pkgtup) if xstate == 'Obsoleting': self.assertEquals(pkgs[2].state, 'Obsoleting') else: self.assertEquals(pkgs[2].state, 'Reinstall') def testDownUpMerge5(self, xstate='Downgrade'): opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') opkg3 = self._pkg_new('foo', version='21', state='Downgraded') npkg3 = self._pkg_new('foo', version='3', state=xstate) opkg4 = self._pkg_new('foo', version='3', state='Updated') npkg4 = self._pkg_new('foo', version='7', state='Update') opkg5 = self._pkg_new('foo', version='7', state='Updated') npkg5 = self._pkg_new('foo', version='13', state='Update') trans = [] trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([opkg4, npkg4])) trans.append(self._trans_new([opkg5, npkg5])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 4) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, opkg2.state) self.assertEquals(pkgs[1], npkg2) self.assertEquals(pkgs[1].state, npkg2.state) self.assertEquals(pkgs[2], npkg5) self.assertEquals(pkgs[2].state, xstate) self.assertEquals(pkgs[3], opkg3) self.assertEquals(pkgs[3].state, opkg3.state) def testInRmMerge1(self, xstate='Install', estate='Erase'): npkg1 = self._pkg_new('foo', state=xstate) npkg2 = self._pkg_new('foo', state=estate) npkg3 = self._pkg_new('bar', version='6', state='True-Install') trans = [] trans.append(self._trans_new([npkg1])) trans.append(self._trans_new([npkg2])) trans.append(self._trans_new([npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 1) self.assertEquals(pkgs[0], npkg3) self.assertEquals(pkgs[0].state, npkg3.state) def testInRmMerge2(self, xstate='Install'): self.testInRmMerge1(xstate, 'Obsoleted') def testInRmInonlyMerge1(self, xstate='True-Install', estate='Erase'): npkg1 = self._pkg_new('foo', state=xstate) npkg2 = self._pkg_new('foo', version='2', state=xstate) npkg3 = self._pkg_new('foo', version='3', state=xstate) npkg4 = self._pkg_new('foo', state=estate) npkg5 = self._pkg_new('foo', version='2', state=estate) npkg6 = self._pkg_new('foo', version='3', state=estate) npkg9 = self._pkg_new('bar', version='6', state=xstate) trans = [] trans.append(self._trans_new([npkg1])) trans.append(self._trans_new([npkg2])) trans.append(self._trans_new([npkg3])) trans.append(self._trans_new([npkg4])) trans.append(self._trans_new([npkg5])) trans.append(self._trans_new([npkg6])) trans.append(self._trans_new([npkg9])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 1) self.assertEquals(pkgs[0], npkg9) self.assertEquals(pkgs[0].state, npkg9.state) def testInRmInonlyMerge2(self, xstate='True-Install'): self.testInRmInonlyMerge1(xstate, 'Obsoleted') def testUpRmMerge1(self, xstate='Update'): npkg1 = self._pkg_new('foo') opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state=xstate) npkg3 = self._pkg_new('bar', version='6', state='Erase') trans = [] trans.append(self._trans_new([npkg1])) trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 2) self.assertEquals(pkgs[0], opkg2) self.assertEquals(pkgs[0].state, npkg3.state) self.assertEquals(pkgs[1], npkg1) self.assertEquals(pkgs[1].state, npkg1.state) def testUpRmMerge2(self, xstate='True-Install'): npkg1 = self._pkg_new('foo') npkg4 = self._pkg_new('bar', version='4', state=xstate) opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state='Update') npkg3 = self._pkg_new('bar', version='6', state='Erase') trans = [] trans.append(self._trans_new([npkg1, npkg4])) trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 1) self.assertEquals(pkgs[0], npkg1) self.assertEquals(pkgs[0].state, npkg1.state) def testUpRmMerge3(self, xstate='Update'): npkg1 = self._pkg_new('foo') npkg4 = self._pkg_new('bar', version='4', state='Dep-Install') opkg2 = self._pkg_new('bar', version='4', state='Updated') npkg2 = self._pkg_new('bar', version='6', state=xstate) npkg3 = self._pkg_new('bar', version='6', state='Erase') trans = [] trans.append(self._trans_new([npkg1, npkg4])) trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 1) self.assertEquals(pkgs[0], npkg1) self.assertEquals(pkgs[0].state, npkg1.state) def testRmInMerge1(self, xstate='Install', estate='Erase'): npkg1 = self._pkg_new('foo', state=xstate) npkg2 = self._pkg_new('foo', state=estate) npkg3 = self._pkg_new('bar', version='6', state='True-Install') trans = [] trans.append(self._trans_new([npkg2])) trans.append(self._trans_new([npkg1])) trans.append(self._trans_new([npkg3])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 2) self.assertEquals(pkgs[0], npkg3) self.assertEquals(pkgs[0].state, npkg3.state) self.assertEquals(pkgs[1], npkg1) if xstate == 'Obsoleting': self.assertEquals(pkgs[1].state, 'Obsoleting') else: self.assertEquals(pkgs[1].state, 'Reinstall') def testRmInMerge2(self, xstate='Install'): self.testRmInMerge1(xstate, 'Obsoleted') def testUpRmInlMerge1(self, xstate='Update', ystate='Install', estate='Erase'): npkg1 = self._pkg_new('bar', version='6', state='True-Install') opkg2 = self._pkg_new('foo', version='3', state='Updated') npkg2 = self._pkg_new('foo', version='7', state=xstate) npkg3 = self._pkg_new('foo', version='7', state=estate) npkg4 = self._pkg_new('foo', state=ystate) trans = [] trans.append(self._trans_new([npkg1])) trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([npkg3])) trans.append(self._trans_new([npkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], npkg1) self.assertEquals(pkgs[0].state, npkg1.state) self.assertEquals(pkgs[1].pkgtup, npkg4.pkgtup) if ystate == 'Obsoleting': self.assertEquals(pkgs[1].state, "Obsoleting") else: self.assertEquals(pkgs[1].state, "Downgrade") self.assertEquals(pkgs[2].pkgtup, opkg2.pkgtup) self.assertEquals(pkgs[2].state, "Downgraded") def testUpRmInlMerge2(self, xstate='Update', ystate='Install'): self.testUpRmInlMerge1(xstate, ystate, 'Obsoleted') def testUpRmInuMerge1(self, xstate='Update', ystate='Install', estate='Erase'): npkg1 = self._pkg_new('bar', version='6', state='True-Install') opkg2 = self._pkg_new('foo', version='3', state='Updated') npkg2 = self._pkg_new('foo', version='7', state=xstate) npkg3 = self._pkg_new('foo', version='7', state=estate) npkg4 = self._pkg_new('foo', version='4', state=ystate) trans = [] trans.append(self._trans_new([npkg1])) trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([npkg3])) trans.append(self._trans_new([npkg4])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], npkg1) self.assertEquals(pkgs[0].state, npkg1.state) self.assertEquals(pkgs[1].pkgtup, opkg2.pkgtup) self.assertEquals(pkgs[1].state, "Updated") self.assertEquals(pkgs[2].pkgtup, npkg4.pkgtup) if ystate == 'Obsoleting': self.assertEquals(pkgs[2].state, "Obsoleting") else: self.assertEquals(pkgs[2].state, "Update") def testUpRmInuMerge2(self, xstate='Update', ystate='Install'): self.testUpRmInuMerge1(xstate, ystate, 'Obsoleted') def testBrokenUpMerge1(self, xstate='Update', estate='Erase'): # This is "broken", so as long as we don't die it's all good. # The below test basically documents what we do. opkg1 = self._pkg_new('foo', version='1', state='Updated') npkg1 = self._pkg_new('foo', version='2', state=xstate) opkg2 = self._pkg_new('foo', version='11', state='Updated') npkg2 = self._pkg_new('foo', version='21', state=xstate) opkg3 = self._pkg_new('foo', version='110', state='Updated') npkg3 = self._pkg_new('foo', version='210', state=xstate) npkg4 = self._pkg_new('foo', version='2', state=estate) npkg5 = self._pkg_new('foo', version='21', state=estate) npkg6 = self._pkg_new('foo', version='210', state=estate) trans = [] trans.append(self._trans_new([opkg1, npkg1])) trans.append(self._trans_new([opkg2, npkg2])) trans.append(self._trans_new([opkg3, npkg3])) trans.append(self._trans_new([npkg4])) trans.append(self._trans_new([npkg5])) trans.append(self._trans_new([npkg6])) merged = self._merge_new(trans) self.assertMergedMain(merged, trans) pkgs = merged.trans_data self.assertEquals(len(pkgs), 3) self.assertEquals(pkgs[0], opkg1) self.assertEquals(pkgs[0].state, 'Updated') self.assertEquals(pkgs[1], opkg2) self.assertEquals(pkgs[1].state, 'Updated') self.assertEquals(pkgs[2], opkg3) self.assertEquals(pkgs[2].state, estate) # Obsoleting is the _painful_ one because it really should be a state, but # an attribute. So "Obsoleting" can be any of: # Install*, Reinstall, Update, Downgrade def testObsSIM1(self): self.testSimpleInMerge1(xstate='Obsoleting') def testObsSIM2(self): self.testSimpleInMerge2(xstate='Obsoleting') def testObsSUM1(self): self.testSimpleUpMerge1(xstate='Obsoleting') def testObsSUM2(self): self.testSimpleUpMerge2(xstate='Obsoleting') def testObsSUM3(self): self.testSimpleUpMerge3(xstate='Obsoleting') def testObsSUMM1(self): self.testSimpleUpMultiMerge1(xstate='Obsoleting') def testObsUDM1(self): self.testUpDownMerge1(xstate='Obsoleting') def testObsUDM2(self): self.testUpDownMerge2(xstate='Obsoleting') def testObsUDM4(self): self.testUpDownMerge4(xstate='Obsoleting') def testObsUDM5(self): self.testUpDownMerge5(xstate='Obsoleting') def testObsDUM1(self): self.testDownUpMerge1(xstate='Obsoleting') def testObsDUM2(self): self.testDownUpMerge2(xstate='Obsoleting') def testObsDUM4(self): self.testDownUpMerge4(xstate='Obsoleting') def testObsDUM5(self): self.testDownUpMerge5(xstate='Obsoleting') def testObsIRM1(self): self.testInRmMerge1(xstate='Obsoleting') def testObsIRM2(self): self.testInRmMerge2(xstate='Obsoleting') def testObsIRMM1(self): self.testInRmInonlyMerge1(xstate='Obsoleting') def testObsIRMM2(self): self.testInRmInonlyMerge1(xstate='Obsoleting') def testObsURM1(self): self.testUpRmMerge1(xstate='Obsoleting') def testObsURM2(self): self.testUpRmMerge2(xstate='Obsoleting') def testObsURM3(self): self.testUpRmMerge3(xstate='Obsoleting') def testObsRIM1(self): self.testRmInMerge1(xstate='Obsoleting') def testObsRIM2(self): self.testRmInMerge2(xstate='Obsoleting') def testObsURIlM1(self): self.testUpRmInlMerge1(xstate='Obsoleting') self.testUpRmInlMerge1(ystate='Obsoleting') self.testUpRmInlMerge1(xstate='Obsoleting', ystate='Obsoleting') def testObsURIlM2(self): self.testUpRmInlMerge2(xstate='Obsoleting') self.testUpRmInlMerge2(ystate='Obsoleting') self.testUpRmInlMerge2(xstate='Obsoleting', ystate='Obsoleting') def testObsURIuM1(self): self.testUpRmInuMerge1(xstate='Obsoleting') self.testUpRmInuMerge1(ystate='Obsoleting') self.testUpRmInuMerge1(xstate='Obsoleting', ystate='Obsoleting') def testObsURIuM2(self): self.testUpRmInuMerge2(xstate='Obsoleting') self.testUpRmInuMerge2(ystate='Obsoleting') self.testUpRmInuMerge2(xstate='Obsoleting', ystate='Obsoleting') yum-3.4.3/test/misc-tests.py0000664000076400007640000001147611602434452014763 0ustar jamesjamesimport unittest import logging import sys from testbase import * class MiscTests(DepsolveTests): ''' Test cases to test skip-broken''' def setUp(self): DepsolveTests.setUp(self) self.xrepo = FakeRepo("TestRepository", self.xsack) setup_logging() def repoPackage(self, name, version='1', release='0', epoch='0', arch='noarch'): po = FakePackage(name, version, release, epoch, arch, repo=self.xrepo) self.xsack.addPackage(po) return po def instPackage(self, name, version='1', release='0', epoch='0', arch='noarch'): po = FakePackage(name, version, release, epoch, arch, repo=self.repo) self.rpmdb.addPackage(po) return po def testLibBCD(self): ''' The libABC test http://svn.labix.org/smart/trunk/README (Case Studies - Case 2) The issue is, a package named `A` requires package `BCD` explicitly, and RPM detects implicit dependencies between `A` and `libB`, `libC`, and `libD`. Package `BCD` provides `libB`, `libC`, and `libD`, but additionally there is a package `B` providing `libB`, a package `C` providing `libC`, and a package `D` providing `libD`. In other words, there's a package `A` which requires four different symbols, and one of these symbols is provided by a single package `BCD`, which happens to provide all symbols needed by `A`. There are also packages `B`, `C`, and `D`, that provide some of the symbols required by `A`, but can't satisfy all dependencies without `BCD`. The expected behavior for an operation asking to install `A` is obviously selecting `BCD` to satisfy `A`'s dependencies This fails in yum because, yum selects the packages with the shortest name if multiple packages provides the same requirements ''' A = self.repoPackage('A', '1',arch='i386') A.addRequires('LibB') A.addRequires('LibC') A.addRequires('LibD') A.addRequires('BCD') BCD = self.repoPackage('BCD', '1',arch='i386') BCD.addProvides('LibB') BCD.addProvides('LibC') BCD.addProvides('LibD') B = self.repoPackage('B', '1',arch='i386') B.addProvides('LibB') C = self.repoPackage('C', '1',arch='i386') C.addProvides('LibC') D = self.repoPackage('D', '1',arch='i386') D.addProvides('LibD') self.tsInfo.addInstall(A) self.assertEquals('ok', *self.resolveCode(skip=False)) # This one is disabled because, we no it fails, but we dont want it to bail out in the each testcase run # Just enable it to do the test # self.assertResult([A,BCD]) def testLibBCD2(self): ''' Same as above, but in this cases it is ok, because the BCD names is shorter than LibB,LibC and LibD ''' A = self.repoPackage('A', '1',arch='i386') A.addRequires('LibB') A.addRequires('LibC') A.addRequires('LibD') A.addRequires('BCD') BCD = self.repoPackage('BCD', '1',arch='i386') BCD.addProvides('LibB') BCD.addProvides('LibC') BCD.addProvides('LibD') B = self.repoPackage('LibB', '1',arch='i386') B.addProvides('LibB') C = self.repoPackage('LibC', '1',arch='i386') C.addProvides('LibC') D = self.repoPackage('LibD', '1',arch='i386') D.addProvides('LibD') self.tsInfo.addInstall(A) self.assertEquals('ok', *self.resolveCode(skip=False)) self.assertResult([A,BCD]) def resolveCode(self,skip = False): solver = YumBase() solver.save_ts = save_ts solver.conf = FakeConf() solver.arch.setup_arch('x86_64') solver.conf.skip_broken = skip solver.tsInfo = solver._tsInfo = self.tsInfo solver.rpmdb = self.rpmdb solver.pkgSack = self.xsack for po in self.rpmdb: po.repoid = po.repo.id = "installed" for po in self.xsack: po.repoid = po.repo.id = "TestRepository" for txmbr in solver.tsInfo: if txmbr.ts_state in ('u', 'i'): txmbr.po.repoid = txmbr.po.repo.id = "TestRepository" else: txmbr.po.repoid = txmbr.po.repo.id = "installed" res, msg = solver.buildTransaction() return self.res[res], msg def setup_logging(): logging.basicConfig() plainformatter = logging.Formatter("%(message)s") console_stdout = logging.StreamHandler(sys.stdout) console_stdout.setFormatter(plainformatter) verbose = logging.getLogger("yum.verbose") verbose.propagate = False verbose.addHandler(console_stdout) verbose.setLevel(2) yum-3.4.3/test/yum-release-test.sh0000775000076400007640000001576211602434452016064 0ustar jamesjames#!/bin/bash ####################################################### ### Settings ########################################## ####################################################### USE_LOCAL_YUM_CONF=0 FIXWORKDIR=/tmp/yum-release-test #WORKDIR=$FIXWORKDIR # always run on same directory # and don't do expensive tests WORKDIR=`mktemp -d` # always start from scratch # and do full tests # path to executables YUMBINARY=/home/ffesti/CVS/yum/yummain.py YUMBINARY=yum YUMDOWNLOADER=(yumdownloader -d 0 --disablerepo=updates) YUMDOWNLOADERUPDATES=(yumdownloader -d 0 --enablerepo=updates) # for testing fedora releases YUM=($YUMBINARY -d 0 --installroot=$WORKDIR --disablerepo=updates ) YUMUPDATES=($YUMBINARY -d 0 --installroot=$WORKDIR --enablerepo=updates ) # for fedora devel # XXX TODO RPM=(rpm --root $WORKDIR) # Adjust size of base install #DEFAULTGROUPS=("Office/Productivity" "GNOME Desktop Environment" "Games and Entertainment" "Sound and Video" "Graphical Internet" "System Tools" Core Base Editors "X Window System" ) DEFAULTGROUPS=(Base Core) ####################################################### ### end of settings ################################### ####################################################### if [ `whoami` != root ] ; then echo You must be root to run this script exit 1 fi mkdir -p $WORKDIR/var/cache/yum mkdir -p $WORKDIR/var/lib/yum mkdir -p $WORKDIR/var/log mkdir -p $WORKDIR/tmp mkdir -p $WORKDIR/etc/yum.repos.d if [ "$USE_LOCAL_YUM_CONF" == 1 ] ; then # copy repos into build root to take advance of local mirrors echo "Using local yum repos" cp /etc/yum.repos.d/*.repo $WORKDIR/etc/yum.repos.d/ else echo "Not using local yum repos" yumdownloader --destdir $WORKDIR/tmp fedora-release rpm -i --nodeps --root $WORKDIR $WORKDIR/tmp/fedora-release\*.noarch.rpm rm -f $WORKDIR/tmp/fedora-release\*.noarch.rpm fi echo "Using $WORKDIR" if [ ! -d $WORKDIR/usr/bin ]; then echo echo "yum groupinstall ${DEFAULTGROUPS[@]}" "${YUM[@]}" -y groupinstall "${DEFAULTGROUPS[@]}" if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "Check for vim-minimal" "${RPM[@]}" -q vim-minimal > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi else echo Ommiting base install fi #"${YUMUPDATES[@]}" list updates #rm -rf $WORKDIR #exit 0 echo echo "yum remove vim-minimal" "${YUM[@]}" -y remove vim-minimal if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "Check if vim-minimal is removed" "${RPM[@]}" -q vim-minimal > /dev/null if [ "X$?" == "X1" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum install vim-minimal | cat" "${YUM[@]}" -y install vim-minimal | cat if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "Check vim-minimal" "${RPM[@]}" -q vim-minimal > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum install bash (already installed)" "${YUM[@]}" install bash if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum install fOObAr (not available)" "${YUM[@]}" install fOObAr if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi if [ $WORKDIR != $FIXWORKDIR ] ; then echo echo "yum groupinstall Graphics" "${YUM[@]}" -y groupinstall Graphics if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "Check gimp" "${RPM[@]}" -q gimp > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum groupremove Graphics" "${YUM[@]}" -y groupremove Graphics if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "Check if gimp is removed" "${RPM[@]}" -q gimp > /dev/null if [ "X$?" == "X1" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum clean all" "${YUM[@]}" clean all if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi fi echo echo "yum makecache" "${YUM[@]}" makecache if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo yumdownloader emacs "${YUMDOWNLOADER[@]}" --destdir $WORKDIR/tmp --resolve emacs "${YUMDOWNLOADER[@]}" --destdir $WORKDIR/tmp --resolve emacs-common if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo yum localinstall emacs\*.rpm "${YUM[@]}" localinstall -y $WORKDIR/tmp/*.rpm if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "Check emacs" "${RPM[@]}" -q emacs > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi rm -f $WORKDIR/tmp/*.rpm echo echo yumdownloader emacs "${YUMDOWNLOADERUPDATES[@]}" --destdir $WORKDIR/tmp --resolve emacs "${YUMDOWNLOADERUPDATES[@]}" --destdir $WORKDIR/tmp --resolve emacs-common echo yum localupdate emacs\*.rpm "${YUM[@]}" localupdate -y $WORKDIR/tmp/emacs*.rpm if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum check-update # false" "${YUM[@]}" check-update if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo "yum check-update # true" "${YUMUPDATES[@]}" check-update > /dev/null if [ "X$?" == "X100" ] ; then echo " OK"; else echo " FAILED or uptodate"; fi echo echo yum update glibc GLIBC=`"${RPM[@]}" -q glibc` "${YUMUPDATES[@]}" -y update glibc UGLIBC=`"${RPM[@]}" -q glibc` if [ "$GLIBC" != "$UGLIBC" ] ; then echo " OK"; else echo " FAILED or uptodate"; fi echo echo yum update KERNEL=`"${RPM[@]}" -q kernel` "${YUMUPDATES[@]}" -y update UKERNEL=`"${RPM[@]}" -q kernel` if [ "$KERNEL" != "$UKERNEL" ] ; then echo " OK"; else echo " FAILED or uptodate"; fi echo echo "yum --version" "${YUM[@]}" --version if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi #"${YUM[@]}" shell # repo # config # etc echo echo "yum search kernel" "${YUM[@]}" search kernel > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum provides kernel" "${YUM[@]}" provides kernel > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum info kernel" "${YUM[@]}" info kernel > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum groupinfo Core" "${YUM[@]}" groupinfo Core > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum deplist bash" "${YUM[@]}" deplist bash > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum grouplist" "${YUM[@]}" grouplist > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum list updates" "${YUM[@]}" list updates > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum list obsoletes" "${YUM[@]}" list obsoletes > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum list available" "${YUM[@]}" list available > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi echo echo "yum list installed" "${YUM[@]}" list installed > /dev/null if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi if [ $WORKDIR != $FIXWORKDIR ] ; then echo Deleting $WORKDIR rm -rf $WORKDIR fi yum-3.4.3/yum/0000775000076400007640000000000011602434452012140 5ustar jamesjamesyum-3.4.3/yum/rpmsack.py0000664000076400007640000020233211602434452014154 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import rpm import types import warnings import glob import os import os.path from rpmUtils import miscutils from rpmUtils import arch from rpmUtils.transaction import initReadOnlyTransaction import misc import Errors from packages import YumInstalledPackage, parsePackages from packageSack import PackageSackBase, PackageSackVersion # For returnPackages(patterns=) import fnmatch import re from yum.i18n import to_unicode, _ import constants import yum.depsolve def _open_no_umask(*args): """ Annoying people like to set umask's for root, which screws everything up for user readable stuff. """ oumask = os.umask(022) try: ret = open(*args) finally: os.umask(oumask) return ret def _iopen(*args): """ IOError wrapper BS for open, stupid exceptions. """ try: ret = open(*args) except IOError, e: return None, e return ret, None class RPMInstalledPackage(YumInstalledPackage): def __init__(self, rpmhdr, index, rpmdb): self._has_hdr = True YumInstalledPackage.__init__(self, rpmhdr, yumdb=rpmdb.yumdb) self.idx = index self.rpmdb = rpmdb self._has_hdr = False del self.hdr def _get_hdr(self): # Note that we can't use hasattr(self, 'hdr') or we'll recurse if self._has_hdr: return self.hdr ts = self.rpmdb.readOnlyTS() mi = ts.dbMatch(0, self.idx) try: return mi.next() except StopIteration: raise Errors.PackageSackError, 'Rpmdb changed underneath us' def __getattr__(self, varname): # If these existed, then we wouldn't get here... # Prevent access of __foo__, _cached_foo etc from loading the header if varname.startswith('_'): raise AttributeError, "%s has no attribute %s" % (self, varname) if varname != 'hdr': # Don't cache the hdr, unless explicitly requested # Note that we don't even cache the .blah value, but looking up the # header is _really_ fast so it's not obvious any of it is worth it. # This is different to prco etc. data, which is loaded separately. val = self._get_hdr() else: self.hdr = val = self._get_hdr() self._has_hdr = True if varname != 'hdr': # This is unusual, for anything that happens val = val[varname] # a lot we should preload at __init__. # Also note that pkg.no_value raises KeyError. return val def requiring_packages(self): """return list of installed pkgs requiring this package""" pkgset = set() for (reqn, reqf, reqevr) in self.provides: for pkg in self.rpmdb.getRequires(reqn,reqf,reqevr): if pkg != self: pkgset.add(pkg) for fn in self.filelist + self.dirlist: for pkg in self.rpmdb.getRequires(fn, None, (None, None, None)): if pkg != self: pkgset.add(pkg) return list(pkgset) def required_packages(self): pkgset = set() for (reqn, reqf, reqevr) in self.requires: for pkg in self.rpmdb.getProvides(reqn, reqf, reqevr): if pkg != self: pkgset.add(pkg) return list(pkgset) class RPMDBProblem: ''' Represents a problem in the rpmdb, from the check_*() functions. ''' def __init__(self, pkg, problem, **kwargs): self.pkg = pkg self.problem = problem for kwarg in kwargs: setattr(self, kwarg, kwargs[kwarg]) def __cmp__(self, other): if other is None: return 1 return cmp(self.pkg, other.pkg) or cmp(self.problem, other.problem) class RPMDBProblemDependency(RPMDBProblem): def __str__(self): if self.problem == 'requires': return "%s %s %s" % (self.pkg, _('has missing requires of'), self.missing) return "%s %s %s: %s" % (self.pkg, _('has installed conflicts'), self.found,', '.join(map(str, self.conflicts))) class RPMDBProblemDuplicate(RPMDBProblem): def __init__(self, pkg, **kwargs): RPMDBProblem.__init__(self, pkg, "duplicate", **kwargs) def __str__(self): 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 ''' DEP_TABLE = { 'requires' : (rpm.RPMTAG_REQUIRENAME, rpm.RPMTAG_REQUIREVERSION, rpm.RPMTAG_REQUIREFLAGS), 'provides' : (rpm.RPMTAG_PROVIDENAME, rpm.RPMTAG_PROVIDEVERSION, rpm.RPMTAG_PROVIDEFLAGS), 'conflicts' : (rpm.RPMTAG_CONFLICTNAME, rpm.RPMTAG_CONFLICTVERSION, rpm.RPMTAG_CONFLICTFLAGS), 'obsoletes' : (rpm.RPMTAG_OBSOLETENAME, rpm.RPMTAG_OBSOLETEVERSION, rpm.RPMTAG_OBSOLETEFLAGS) } # Do we want to cache rpmdb data in a file, for later use? __cache_rpmdb__ = True def __init__(self, root='/', releasever=None, cachedir=None, persistdir='/var/lib/yum'): 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 = persistdir + "/rpmdb-indexes" self.setCacheDir(cachedir) 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. self._trans_cache_store = {} self.ts = None self.releasever = releasever 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' : { }, 'requires' : { }, 'conflicts' : { }, 'obsoletes' : { }, } addldb_path = os.path.normpath(self._persistdir + '/yumdb') version_path = os.path.normpath(cachedir + '/version') self.yumdb = RPMDBAdditionalData(db_path=addldb_path, version_path=version_path) def _get_pkglist(self): '''Getter for the pkglist property. Returns a list of package tuples. ''' if not self._simple_pkgtup_list: csumpkgtups = self.preloadPackageChecksums(load_packages=False) if csumpkgtups is not None: self._simple_pkgtup_list = csumpkgtups.keys() if not self._simple_pkgtup_list: for (hdr, mi) in self._get_packages(): self._simple_pkgtup_list.append(self._hdr2pkgTuple(hdr)) return self._simple_pkgtup_list pkglist = property(_get_pkglist, None) def dropCachedData(self): """ Drop all cached data, this is a big perf. hit if we need to load the data back in again. Also note that if we ever call this while a transaction is ongoing we'll have multiple copies of packages which is _bad_. """ 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 = {} # We can be called on python shutdown (due to yb.__del__), at which # point other modules might not be available. if misc is not None: misc.unshare_data() self._cache = { 'provides' : { }, 'requires' : { }, 'conflicts' : { }, 'obsoletes' : { }, } self._have_cached_rpmdbv_data = None self._cached_conflicts_data = None self.transactionReset() # Should do nothing, but meh... self._cached_rpmdb_mtime = None def dropCachedDataPostTransaction(self, txmbrs): """ Drop cached data that is assocciated with the given transaction, this tries to keep as much data as possible and even does a "preload" on the checksums. This should be called once, when a transaction is complete. """ # -- Below -- self._idx2pkg = {} # -- Below -- self._name2pkg = {} # -- Below -- self._pkgnames_loaded = set() # -- Below -- self._tup2pkg = {} self._completely_loaded = False self._pkgmatch_fails = set() # -- Below -- self._pkgname_fails = set() self._provmatch_fails = set() self._simple_pkgtup_list = [] self._get_pro_cache = {} self._get_req_cache = {} # We can be called on python shutdown (due to yb.__del__), at which # point other modules might not be available. if misc is not None: misc.unshare_data() self._cache = { 'provides' : { }, 'requires' : { }, 'conflicts' : { }, 'obsoletes' : { }, } self._have_cached_rpmdbv_data = None self._cached_conflicts_data = None self.transactionReset() # Should do nothing, but meh... # We are keeping some data from before, and sometimes (Eg. remove only) # we never open the rpmdb again ... so get the mtime now. rpmdbfname = self.root + "/var/lib/rpm/Packages" self._cached_rpmdb_mtime = os.path.getmtime(rpmdbfname) def _safe_del(x, y): """ Make sure we never traceback here, because it screws our yumdb if we do. """ # Maybe use x.pop(y, None) ? if y in x: del x[y] precache = [] for txmbr in txmbrs: self._pkgnames_loaded.discard(txmbr.name) _safe_del(self._name2pkg, txmbr.name) if txmbr.output_state in constants.TS_INSTALL_STATES: self._pkgname_fails.discard(txmbr.name) precache.append(txmbr) if txmbr.reinstall: # For reinstall packages we have: # # 1. one txmbr: the new install. # 2. two rpmdb entries: the new; the old; # # ...so we need to remove the old one, given only the new # one. ipo = self._tup2pkg[txmbr.pkgtup] _safe_del(self._idx2pkg, ipo.idx) _safe_del(self._tup2pkg, txmbr.pkgtup) if txmbr.output_state in constants.TS_REMOVE_STATES: _safe_del(self._idx2pkg, txmbr.po.idx) _safe_del(self._tup2pkg, txmbr.pkgtup) for txmbr in precache: (n, a, e, v, r) = txmbr.pkgtup pkg = self.searchNevra(n, e, v, r, a) if not pkg: # Wibble? self._deal_with_bad_rpmdbcache("dCDPT(pkg checksums)") continue pkg = pkg[0] csum = txmbr.po.returnIdSum() if csum is None: continue (T, D) = (str(csum[0]), str(csum[1])) if ('checksum_type' in pkg.yumdb_info._read_cached_data or 'checksum_data' in pkg.yumdb_info._read_cached_data): continue pkg.yumdb_info._read_cached_data['checksum_type'] = T pkg.yumdb_info._read_cached_data['checksum_data'] = D def setCacheDir(self, cachedir): """ Sets the internal cachedir value for the rpmdb, to be the "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 if hasattr(self, 'yumdb'): # Need to keep this upto date, after init. version_path = os.path.normpath(self._cachedir + '/version') self.yumdb.conf.version_path = version_path def readOnlyTS(self): if not self.ts: self.ts = initReadOnlyTransaction(root=self.root) if not self.ts.open: self.ts = initReadOnlyTransaction(root=self.root) return self.ts def buildIndexes(self): # Not used here return def _checkIndexes(self, failure='error'): # Not used here return def delPackage(self, obj): # Not supported with this sack type pass def searchAll(self, name, query_type='like'): result = {} # check provides tag = self.DEP_TABLE['provides'][0] mi = self._get_packages(patterns=[(tag, rpm.RPMMIRE_GLOB, name)]) for hdr, idx in mi: pkg = self._makePackageObject(hdr, idx) result.setdefault(pkg.pkgid, pkg) fileresults = self.searchFiles(name) for pkg in fileresults: result.setdefault(pkg.pkgid, pkg) return result.values() def searchFiles(self, name): """search the filelists in the rpms for anything matching name""" result = {} name = os.path.normpath(name) # Note that globs can't be done. As of 4.8.1: # mi.pattern('basenames', rpm.RPMMIRE_GLOB, name) # ...produces no results. for hdr, idx in self._get_packages('basenames', name): pkg = self._makePackageObject(hdr, idx) result.setdefault(pkg.pkgid, pkg) return result.values() def searchPrco(self, name, prcotype): result = self._cache[prcotype].get(name) if result is not None: return result (n,f,(e,v,r)) = misc.string_to_prco_tuple(name) glob = False if misc.re_glob(n): glob = True result = {} tag = self.DEP_TABLE[prcotype][0] for hdr, idx in self._get_packages(tag, misc.to_utf8(n)): po = self._makePackageObject(hdr, idx) if not glob: if po.checkPrco(prcotype, (n, f, (e,v,r))): result[po.pkgid] = po else: result[po.pkgid] = po # If it's not a provides or filename, we are done if prcotype == 'provides' and name[0] == '/': fileresults = self.searchFiles(name) for pkg in fileresults: result[pkg.pkgid] = pkg result = result.values() self._cache[prcotype][name] = result return result def searchProvides(self, name): 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 self.searchPrco(name, 'requires') def searchObsoletes(self, name): return self.searchPrco(name, 'obsoletes') def searchConflicts(self, name): return self.searchPrco(name, 'conflicts') def simplePkgList(self): return self.pkglist installed = PackageSackBase.contains def returnNewestByNameArch(self, naTup=None, patterns=None): #FIXME - should this (or any packagesack) be returning tuples? if not naTup: return (name, arch) = naTup allpkg = self._search(name=name, arch=arch) if not allpkg: raise Errors.PackageSackError, 'No Package Matching %s' % name return [ po.pkgtup for po in misc.newestInList(allpkg) ] def returnNewestByName(self, name=None): if not name: return allpkgs = self._search(name=name) if not allpkgs: raise Errors.PackageSackError, 'No Package Matching %s' % name return misc.newestInList(allpkgs) @staticmethod def _compile_patterns(patterns, ignore_case=False): if not patterns or len(patterns) > constants.PATTERNS_MAX: return None ret = [] for pat in patterns: if not pat: continue qpat = pat[0] if qpat in ('?', '*', '['): qpat = None if ignore_case: if qpat is not None: qpat = qpat.lower() ret.append((qpat, re.compile(fnmatch.translate(pat), re.I))) else: ret.append((qpat, re.compile(fnmatch.translate(pat)))) 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 for qpat, repat in repatterns: epoch = hdr['epoch'] if epoch is None: epoch = '0' else: epoch = str(epoch) qname = hdr['name'][0] if ignore_case: qname = qname.lower() if qpat is not None and qpat != qname and qpat != epoch[0]: continue if repat.match(hdr['name']): return True if repat.match("%(name)s-%(version)s-%(release)s.%(arch)s" % hdr): return True if repat.match("%(name)s.%(arch)s" % hdr): return True if repat.match("%(name)s-%(version)s" % hdr): return True if repat.match("%(name)s-%(version)s-%(release)s" % hdr): return True if repat.match(epoch + ":%(name)s-%(version)s-%(release)s.%(arch)s" % hdr): return True if repat.match("%(name)s-%(epoch)s:%(version)s-%(release)s.%(arch)s" % hdr): return True return False def returnPackages(self, repoid=None, patterns=None, ignore_case=False): """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._get_packages(): if self._match_repattern(rpats, hdr, ignore_case): self._makePackageObject(hdr, idx) self._completely_loaded = patterns is None pkgobjlist = self._idx2pkg.values() # Remove gpg-pubkeys, as no sane callers expects/likes them... if self._loaded_gpg_keys: pkgobjlist = [pkg for pkg in pkgobjlist if pkg.name != 'gpg-pubkey'] if patterns: pkgobjlist = parsePackages(pkgobjlist, patterns, not ignore_case) self._pkgmatch_fails.update(pkgobjlist[2]) if ret: pkgobjlist = pkgobjlist[0] + pkgobjlist[1] + ret 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): """ Load the packages which have conflicts from the rpmdb, newer versions of rpm have an index here so this is as fast as cached (we test rpm version at cache write time). """ if self._cached_conflicts_data is None: result = {} for hdr, idx in self._get_packages('conflictname'): if not hdr[rpm.RPMTAG_CONFLICTNAME]: # Pre. rpm-4.9.x the above dbMatch() does nothing. continue po = self._makePackageObject(hdr, idx) result[po.pkgid] = po if po._has_hdr: continue # Unlikely, but, meh... po.hdr = hdr po._has_hdr = True po.conflicts po._has_hdr = False del po.hdr self._cached_conflicts_data = result.values() return self._cached_conflicts_data def _write_conflicts_new(self, pkgs, rpmdbv): if not os.access(self._cachedir, os.W_OK): return conflicts_fname = self._cachedir + '/conflicts' fo = _open_no_umask(conflicts_fname + '.tmp', 'w') fo.write("%s\n" % rpmdbv) fo.write("%u\n" % len(pkgs)) for pkg in sorted(pkgs): for var in pkg.pkgtup: fo.write("%s\n" % var) fo.close() os.rename(conflicts_fname + '.tmp', conflicts_fname) def _write_conflicts(self, pkgs): 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 + '/pkgtups-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 def _read_str(fo): return fo.readline()[:-1] conflict_fname = self._cachedir + '/conflicts' fo, e = _iopen(conflict_fname) if fo is None: return None frpmdbv = fo.readline() rpmdbv = self.simpleVersion(main_only=True)[0] if not frpmdbv or rpmdbv != frpmdbv[:-1]: return None ret = [] try: # Read the conflicts... pkgtups_num = int(_read_str(fo)) while pkgtups_num > 0: pkgtups_num -= 1 # n, a, e, v, r pkgtup = (_read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo)) int(pkgtup[2]) # Check epoch is valid ret.extend(self.searchPkgTuple(pkgtup)) if fo.readline() != '': # Should be EOF return None except ValueError: self._deal_with_bad_rpmdbcache("conflicts") return None self._cached_conflicts_data = ret return self._cached_conflicts_data def transactionCacheConflictPackages(self, pkgs): if self.__cache_rpmdb__: self._trans_cache_store['conflicts'] = pkgs def returnConflictPackages(self): """ Return a list of packages that have conflicts. """ pkgs = self._read_conflicts() if pkgs is None: pkgs = self._uncached_returnConflictPackages() if self.__cache_rpmdb__: self._write_conflicts(pkgs) return pkgs def transactionResultVersion(self, rpmdbv): """ We are going to do a transaction, and the parameter will be the rpmdb version when we finish. The idea being we can update all our rpmdb caches for that rpmdb version. """ if not self.__cache_rpmdb__: self._trans_cache_store = {} return if 'conflicts' in self._trans_cache_store: pkgs = self._trans_cache_store['conflicts'] self._write_conflicts_new(pkgs, rpmdbv) if 'file-requires' in self._trans_cache_store: data = self._trans_cache_store['file-requires'] self._write_file_requires(rpmdbv, data) if 'pkgtups-checksums' in self._trans_cache_store: data = self._trans_cache_store['pkgtups-checksums'] self._write_package_checksums(rpmdbv, data) self._trans_cache_store = {} def transactionReset(self): """ We are going to reset the transaction, because the data we've added already might now be invalid (Eg. skip-broken, or splitting a transaction). """ self._trans_cache_store = {} def returnGPGPubkeyPackages(self): """ Return packages of the gpg-pubkeys ... hacky. """ ts = self.readOnlyTS() mi = ts.dbMatch('name', 'gpg-pubkey') ret = [] for hdr in mi: self._loaded_gpg_keys = True ret.append(self._makePackageObject(hdr, mi.instance())) return ret def _read_file_requires(self): def _read_str(fo): return fo.readline()[:-1] assert self.__cache_rpmdb__ fo, e = _iopen(self._cachedir + '/file-requires') if fo is None: return None, None rpmdbv = self.simpleVersion(main_only=True)[0] frpmdbv = fo.readline() if not frpmdbv or rpmdbv != frpmdbv[:-1]: return None, None iFR = {} iFP = {} try: # Read the requires... pkgtups_num = int(_read_str(fo)) while pkgtups_num > 0: pkgtups_num -= 1 # n, a, e, v, r pkgtup = (_read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo)) int(pkgtup[2]) # Check epoch is valid files_num = int(_read_str(fo)) while files_num > 0: files_num -= 1 fname = _read_str(fo) iFR.setdefault(pkgtup, []).append(fname) # Read the provides... files_num = int(_read_str(fo)) while files_num > 0: files_num -= 1 fname = _read_str(fo) pkgtups_num = int(_read_str(fo)) while pkgtups_num > 0: pkgtups_num -= 1 # n, a, e, v, r pkgtup = (_read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo)) int(pkgtup[2]) # Check epoch is valid iFP.setdefault(fname, []).append(pkgtup) if fo.readline() != '': # Should be EOF return None, None except ValueError: self._deal_with_bad_rpmdbcache("file requires") return None, None return iFR, iFP def fileRequiresData(self): """ Get a cached copy of the fileRequiresData for depsolving/checkFileRequires, note the giant comment in that function about how we don't keep this perfect for the providers of the requires. """ if self.__cache_rpmdb__: iFR, iFP = self._read_file_requires() if iFR is not None: return iFR, set(), iFP installedFileRequires = {} installedUnresolvedFileRequires = set() resolved = set() for pkg in self.returnPackages(): for name, flag, evr in pkg.requires: if not name.startswith('/'): continue installedFileRequires.setdefault(pkg.pkgtup, []).append(name) if name not in resolved: dep = self.getProvides(name, flag, evr) resolved.add(name) if not dep: installedUnresolvedFileRequires.add(name) fileRequires = set() for fnames in installedFileRequires.itervalues(): fileRequires.update(fnames) installedFileProviders = {} for fname in fileRequires: pkgtups = [pkg.pkgtup for pkg in self.getProvides(fname)] installedFileProviders[fname] = pkgtups ret = (installedFileRequires, installedUnresolvedFileRequires, installedFileProviders) if self.__cache_rpmdb__: rpmdbv = self.simpleVersion(main_only=True)[0] self._write_file_requires(rpmdbv, ret) return ret def transactionCacheFileRequires(self, installedFileRequires, installedUnresolvedFileRequires, installedFileProvides, problems): if not self.__cache_rpmdb__: return if installedUnresolvedFileRequires or problems: return data = (installedFileRequires, installedUnresolvedFileRequires, installedFileProvides) self._trans_cache_store['file-requires'] = data def _write_file_requires(self, rpmdbversion, data): if not os.access(self._cachedir, os.W_OK): return (installedFileRequires, installedUnresolvedFileRequires, installedFileProvides) = data # Have to do this here, as well as in transactionCacheFileRequires, # because fileRequiresData() calls us directly. if installedUnresolvedFileRequires: return fo = _open_no_umask(self._cachedir + '/file-requires.tmp', 'w') fo.write("%s\n" % rpmdbversion) fo.write("%u\n" % len(installedFileRequires)) for pkgtup in sorted(installedFileRequires): for var in pkgtup: fo.write("%s\n" % var) filenames = set(installedFileRequires[pkgtup]) fo.write("%u\n" % len(filenames)) for fname in sorted(filenames): fo.write("%s\n" % fname) fo.write("%u\n" % len(installedFileProvides)) for fname in sorted(installedFileProvides): fo.write("%s\n" % fname) pkgtups = set(installedFileProvides[fname]) fo.write("%u\n" % len(pkgtups)) for pkgtup in sorted(pkgtups): for var in pkgtup: fo.write("%s\n" % var) fo.close() os.rename(self._cachedir + '/file-requires.tmp', self._cachedir + '/file-requires') def preloadPackageChecksums(self, load_packages=True): """ As simpleVersion() et. al. requires it, we "cache" this yumdb data as part of our rpmdb cache. We cache it with rpmdb data, even though someone _could_ use yumdb to alter it without changing the rpmdb ... don't do that. NOTE: This is also used as a cache of pkgtups in the rpmdb. """ if not self.__cache_rpmdb__: return def _read_str(fo): return fo.readline()[:-1] fo, e = _iopen(self._cachedir + '/pkgtups-checksums') if fo is None: return rpmdbv = self.simpleVersion(main_only=True)[0] frpmdbv = fo.readline() if not frpmdbv or rpmdbv != frpmdbv[:-1]: return checksum_data = {} try: # Read the checksums... pkgtups_num = int(_read_str(fo)) while pkgtups_num > 0: pkgtups_num -= 1 # n, a, e, v, r pkgtup = (_read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo), _read_str(fo)) int(pkgtup[2]) # Check epoch is valid T = _read_str(fo) D = _read_str(fo) if T == '-': checksum_data[pkgtup] = None else: checksum_data[pkgtup] = (T, D) if fo.readline() != '': # Should be EOF return except ValueError: self._deal_with_bad_rpmdbcache("pkg checksums") return if not load_packages: return checksum_data for pkgtup in checksum_data: if checksum_data[pkgtup] is None: continue (n, a, e, v, r) = pkgtup 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): continue pkg.yumdb_info._read_cached_data['checksum_type'] = T pkg.yumdb_info._read_cached_data['checksum_data'] = D def transactionCachePackageChecksums(self, pkg_checksum_tups): if not self.__cache_rpmdb__: return self._trans_cache_store['pkgtups-checksums'] = pkg_checksum_tups def _write_package_checksums(self, rpmdbversion, data): if not os.access(self._cachedir, os.W_OK): return pkg_checksum_tups = data fo = _open_no_umask(self._cachedir + '/pkgtups-checksums.tmp', 'w') fo.write("%s\n" % rpmdbversion) fo.write("%u\n" % len(pkg_checksum_tups)) for pkgtup, TD in sorted(pkg_checksum_tups): for var in pkgtup: fo.write("%s\n" % var) if TD is None: TD = ('-', '-') for var in TD: fo.write("%s\n" % var) fo.close() os.rename(self._cachedir + '/pkgtups-checksums.tmp', self._cachedir + '/pkgtups-checksums') def _get_cached_simpleVersion_main(self): """ Return the cached string of the main rpmdbv. """ if self._have_cached_rpmdbv_data is not None: return self._have_cached_rpmdbv_data if not self.__cache_rpmdb__: return None # This test is "obvious" and the only thing to come out of: # http://lists.rpm.org/pipermail/rpm-maint/2007-November/001719.html # ...if anything gets implemented, we should change. rpmdbvfname = self._cachedir + "/version" rpmdbfname = self.root + "/var/lib/rpm/Packages" if os.path.exists(rpmdbvfname) and os.path.exists(rpmdbfname): # See if rpmdb has "changed" ... nmtime = os.path.getmtime(rpmdbvfname) omtime = os.path.getmtime(rpmdbfname) if omtime <= nmtime: fo, e = _iopen(rpmdbvfname) if fo is None: return None rpmdbv = fo.readline()[:-1] self._have_cached_rpmdbv_data = rpmdbv return self._have_cached_rpmdbv_data def _put_cached_simpleVersion_main(self, rpmdbv): self._have_cached_rpmdbv_data = str(rpmdbv) 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): return try: os.makedirs(self._cachedir) except (IOError, OSError), e: return fo = _open_no_umask(rpmdbvfname + ".tmp", "w") fo.write(self._have_cached_rpmdbv_data) fo.write('\n') fo.close() os.rename(rpmdbvfname + ".tmp", rpmdbvfname) def simpleVersion(self, main_only=False, groups={}): """ Return a simple version for all installed packages. """ def _up_revs(irepos, repoid, rev, pkg, csum): irevs = irepos.setdefault(repoid, {}) rpsv = irevs.setdefault(None, PackageSackVersion()) rpsv.update(pkg, csum) if rev is not None: rpsv = irevs.setdefault(rev, PackageSackVersion()) rpsv.update(pkg, csum) if main_only and not groups: rpmdbv = self._get_cached_simpleVersion_main() if rpmdbv is not None: return [rpmdbv, {}] main = PackageSackVersion() irepos = {} main_grps = {} irepos_grps = {} for pkg in sorted(self.returnPackages()): ydbi = pkg.yumdb_info csum = None if 'checksum_type' in ydbi and 'checksum_data' in ydbi: csum = (ydbi.checksum_type, ydbi.checksum_data) main.update(pkg, csum) for group in groups: if pkg.name in groups[group]: if group not in main_grps: main_grps[group] = PackageSackVersion() irepos_grps[group] = {} main_grps[group].update(pkg, csum) if main_only: continue repoid = 'installed' rev = None if 'from_repo' in pkg.yumdb_info: repoid = '@' + pkg.yumdb_info.from_repo if 'from_repo_revision' in pkg.yumdb_info: rev = pkg.yumdb_info.from_repo_revision _up_revs(irepos, repoid, rev, pkg, csum) for group in groups: if pkg.name in groups[group]: _up_revs(irepos_grps[group], repoid, rev, pkg, csum) if self._have_cached_rpmdbv_data is None: self._put_cached_simpleVersion_main(main) if groups: return [main, irepos, main_grps, irepos_grps] return [main, irepos] @staticmethod def _find_search_fields(fields, searchstrings, hdr): count = 0 for s in searchstrings: for field in fields: value = to_unicode(hdr[field]) if value and value.lower().find(s) != -1: count += 1 break return count def searchPrimaryFieldsMultipleStrings(self, fields, searchstrings, lowered=False): if not lowered: searchstrings = map(lambda x: x.lower(), searchstrings) ret = [] for hdr, idx in self._get_packages(): n = self._find_search_fields(fields, searchstrings, hdr) if n > 0: ret.append((self._makePackageObject(hdr, idx), n)) return ret def searchNames(self, names=[]): returnList = [] for name in names: returnList.extend(self._search(name=name)) return returnList def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None): return self._search(name, epoch, ver, rel, arch) def excludeArchs(self, archlist): pass def returnLeafNodes(self, repoid=None): ts = self.readOnlyTS() return [ self._makePackageObject(h, mi) for (h, mi) in ts.returnLeafNodes(headers=True) ] # Helper functions def _get_packages(self, *args, **kwds): '''dbMatch() wrapper generator that yields (header, index) for matches ''' ts = self.readOnlyTS() mi = ts.dbMatch(*args, **kwds) for h in mi: if h['name'] != 'gpg-pubkey': yield (h, mi.instance()) del mi if self.auto_close: self.ts.close() 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]] loc = locals() ret = [] 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: for tag in ('arch', 'rel', 'ver', 'epoch'): if loc[tag] is not None and loc[tag] != getattr(po, tag): break else: ret.append(po) return ret ts = self.readOnlyTS() if name is not None: mi = self._get_packages('name', name) elif arch is not None: mi = self._get_packages('arch', arch) else: mi = self._get_packages() self._completely_loaded = True done = False for hdr, idx in mi: po = self._makePackageObject(hdr, idx) # 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 else: ret.append(po) if not done and name is not None: self._pkgname_fails.add(name) return ret def _makePackageObject(self, hdr, index): if index in self._idx2pkg: return self._idx2pkg[index] po = RPMInstalledPackage(hdr, index, self) 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): name = misc.share_data(hdr['name']) arch = misc.share_data(hdr['arch']) # convert these to strings to be sure ver = misc.share_data(str(hdr['version'])) rel = misc.share_data(str(hdr['release'])) epoch = hdr['epoch'] if epoch is None: epoch = '0' else: epoch = str(epoch) epoch = misc.share_data(epoch) return misc.share_data((name, arch, epoch, ver, rel)) # deprecated options for compat only - remove once rpmdb is converted: def getPkgList(self): warnings.warn('getPkgList() will go away in a future version of Yum.\n' 'Please access this via the pkglist attribute.', DeprecationWarning, stacklevel=2) return self.pkglist def getHdrList(self): warnings.warn('getHdrList() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) return [ hdr for hdr, idx in self._get_packages() ] def getNameArchPkgList(self): warnings.warn('getNameArchPkgList() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) lst = [] for (name, arch, epoch, ver, rel) in self.pkglist: lst.append((name, arch)) return miscutils.unique(lst) def getNamePkgList(self): warnings.warn('getNamePkgList() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) lst = [] for (name, arch, epoch, ver, rel) in self.pkglist: lst.append(name) return miscutils.unique(lst) def returnTupleByKeyword(self, name=None, arch=None, epoch=None, ver=None, rel=None): warnings.warn('returnTuplebyKeyword() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) return [po.pkgtup for po in self._search(name=name, arch=arch, epoch=epoch, ver=ver, rel=rel)] def returnHeaderByTuple(self, pkgtuple): warnings.warn('returnHeaderByTuple() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) """returns a list of header(s) based on the pkgtuple provided""" (n, a, e, v, r) = pkgtuple lst = self.searchNevra(name=n, arch=a, epoch=e, ver=v, rel=r) if len(lst) > 0: item = lst[0] return [item.hdr] else: return [] def returnIndexByTuple(self, pkgtuple): """returns a list of header indexes based on the pkgtuple provided""" warnings.warn('returnIndexbyTuple() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) name, arch, epoch, version, release = pkgtuple # Normalise epoch if epoch in (None, 0, '(none)', ''): epoch = '0' return [po.idx for po in self._search(name, epoch, version, release, arch)] def addDB(self, ts): # Can't support this now raise NotImplementedError @staticmethod def _genDeptup(name, flags, version): """ Given random stuff, generate a usable dep tuple. """ if flags == 0: flags = None if type(version) is types.StringType: (r_e, r_v, r_r) = miscutils.stringToVersion(version) # would this ever be a ListType? elif type(version) in (types.TupleType, types.ListType): (r_e, r_v, r_r) = version else: # FIXME: This isn't always type(version) is types.NoneType: # ...not sure what it is though, come back to this r_e = r_v = r_r = None deptup = (name, misc.share_data(flags), (misc.share_data(r_e), misc.share_data(r_v), misc.share_data(r_r))) return misc.share_data(deptup) def getProvides(self, name, flags=None, version=(None, None, None)): """searches the rpmdb for what provides the arguments returns a list of pkg objects of providing packages, possibly empty""" name = misc.share_data(name) deptup = self._genDeptup(name, flags, version) if deptup in self._get_pro_cache: return self._get_pro_cache[deptup] r_v = deptup[2][1] pkgs = self.searchProvides(name) result = { } for po in pkgs: if name[0] == '/' and r_v is None: result[po] = [(name, None, (None, None, None))] continue hits = po.matchingPrcos('provides', deptup) if hits: result[po] = hits self._get_pro_cache[deptup] = result return result def whatProvides(self, name, flags, version): # XXX deprecate? return [po.pkgtup for po in self.getProvides(name, flags, version)] def getRequires(self, name, flags=None, version=(None, None, None)): """searches the rpmdb for what provides the arguments returns a list of pkgtuples of providing packages, possibly empty""" name = misc.share_data(name) deptup = self._genDeptup(name, flags, version) if deptup in self._get_req_cache: return self._get_req_cache[deptup] r_v = deptup[2][1] pkgs = self.searchRequires(name) result = { } for po in pkgs: if name[0] == '/' and r_v is None: # file dep add all matches to the defSack result[po] = [(name, None, (None, None, None))] continue hits = po.matchingPrcos('requires', deptup) if hits: result[po] = hits self._get_req_cache[deptup] = result return result def whatRequires(self, name, flags, version): # XXX deprecate? return [po.pkgtup for po in self.getRequires(name, flags, version)] def return_running_packages(self): """returns a list of yum installed package objects which own a file that are currently running or in use.""" pkgs = {} for pid in misc.return_running_pids(): for fn in misc.get_open_files(pid): for pkg in self.searchFiles(fn): pkgs[pkg] = 1 return sorted(pkgs.keys()) def check_dependencies(self, pkgs=None): """ Checks for any missing dependencies. """ if pkgs is None: pkgs = self.returnPackages() providers = set() # Speedup, as usual :) problems = [] for pkg in sorted(pkgs): # The sort here is mainly for "UI" for rreq in pkg.requires: if rreq[0].startswith('rpmlib'): continue if rreq in providers: continue (req, flags, ver) = rreq if self.getProvides(req, flags, ver): providers.add(rreq) continue flags = yum.depsolve.flags.get(flags, flags) missing = miscutils.formatRequire(req, ver, flags) prob = RPMDBProblemDependency(pkg, "requires", missing=missing) problems.append(prob) for creq in pkg.conflicts: if creq[0].startswith('rpmlib'): continue (req, flags, ver) = creq res = self.getProvides(req, flags, ver) if not res: continue flags = yum.depsolve.flags.get(flags, flags) found = miscutils.formatRequire(req, ver, flags) prob = RPMDBProblemDependency(pkg, "conflicts", found=found, conflicts=res) problems.append(prob) return problems def _iter_two_pkgs(self, ignore_provides): last = None for pkg in sorted(self.returnPackages()): if pkg.name in ignore_provides: continue if ignore_provides.intersection(set(pkg.provides_names)): continue if last is None: last = pkg continue yield last, pkg last = pkg def check_duplicates(self, ignore_provides=[]): """ Checks for any "duplicate packages" (those with multiple versions installed), we ignore any packages with a provide in the passed provide list (this is how installonlyworks, so we do the same). """ ignore_provides = set(ignore_provides) problems = [] for last, pkg in self._iter_two_pkgs(ignore_provides): if pkg.name != last.name: continue if pkg.verEQ(last) and pkg != last: if arch.isMultiLibArch(pkg.arch) and last.arch != 'noarch': continue if arch.isMultiLibArch(last.arch) and pkg.arch != 'noarch': continue # More than one pkg, they aren't version equal, or aren't multiarch 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('~', '') class RPMDBAdditionalData(object): """class for access to the additional data not able to be stored in the rpmdb""" # dir: /var/lib/yum/yumdb/ # pkgs stored in name[0]/name[1]/pkgid-name-ver-rel-arch dirs # dirs have files per piece of info we're keeping # repoid, install reason, status, blah, (group installed for?), notes? def __init__(self, db_path='/var/lib/yum/yumdb', version_path=None): self.conf = misc.GenericHolder() self.conf.db_path = db_path self.conf.version_path = version_path self.conf.writable = False self._packages = {} # pkgid = dir if not os.path.exists(self.conf.db_path): try: os.makedirs(self.conf.db_path) except (IOError, OSError), e: # some sort of useful thing here? A warning? return self.conf.writable = True else: if os.access(self.conf.db_path, os.W_OK): 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 pkgdirs = glob.glob(glb) for d in pkgdirs: pkgid = os.path.basename(d).split('-')[0] self._packages[pkgid] = d def _get_dir_name(self, pkgtup, pkgid): if pkgid in self._packages: return self._packages[pkgid] (n, a, e, v,r) = pkgtup n = _sanitize(n) # Please die in a fire rpmbuild thisdir = '%s/%s/%s-%s-%s-%s-%s' % (self.conf.db_path, n[0], pkgid, n, v, r, a) self._packages[pkgid] = thisdir return thisdir def get_package(self, po=None, pkgtup=None, pkgid=None): """Return an RPMDBAdditionalDataPackage Object for this package""" if po: thisdir = self._get_dir_name(po.pkgtup, po.pkgid) elif pkgtup and pkgid: thisdir = self._get_dir_name(pkgtup, pkgid) else: raise ValueError,"Pass something to RPMDBAdditionalData.get_package" 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 and/or populate various bits to the currently installed version""" # TODO: # get list of all items in the yumdb # remove any no longer in the rpmdb/andor migrate them up to the currently # installed version # add entries for items in the rpmdb if they don't exist in the yumdb pass class RPMDBAdditionalDataPackage(object): # 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 self._read_cached_data = {} # '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] 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 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): os.makedirs(self._mydir) attr = _sanitize(attr) if attr in self._read_cached_data: del self._read_cached_data[attr] fn = self._attr2fn(attr) if attr.endswith('.tmp'): raise AttributeError, "Cannot set attribute %s on %s" % (attr, self) # These two are special, as they have an index and are used as our # cache-breaker. if attr in ('checksum_type', 'checksum_data'): misc.unlink_f(self._conf.version_path) # 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_no_umask(fn + '.tmp', 'w') try: fo.write(value) except (OSError, IOError), e: raise AttributeError, "Cannot set attribute %s on %s" % (attr, self) fo.flush() fo.close() del fo os.rename(fn + '.tmp', fn) # even works on ext4 now!:o self._auto_cache(attr, value, fn) def _read(self, attr): attr = _sanitize(attr) if attr in self._read_cached_data: return self._read_cached_data[attr] fn = self._attr2fn(attr) 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, e = _iopen(fn) if fo is None: # This really sucks, don't do that. return '' % e.errno value = fo.read() fo.close() del fo 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._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 %s " % (attr, self) def __getattr__(self, attr): return self._read(attr) def __setattr__(self, attr, value): if not attr.startswith('_'): self._write(attr, value) else: object.__setattr__(self, attr, value) def __delattr__(self, attr): if not attr.startswith('_'): self._delete(attr) 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 for item in glob.glob(self._mydir + '/*'): item = item[(len(self._mydir) + 1):] if item in self._read_cached_data: continue if not show_hidden and item.endswith('.tmp'): continue yield item def clean(self): # purge out everything for item in self.__iter__(show_hidden=True): self._delete(item) try: os.rmdir(self._mydir) except OSError: pass # def __dir__(self): # for 2.6 and beyond, apparently # return list(self.__iter__()) + self.__dict__.keys() def get(self, attr, default=None): """retrieve an add'l data obj""" try: res = self._read(attr) except AttributeError: return default return res def main(): sack = RPMDBPackageSack('/') for p in sack.simplePkgList(): print p if __name__ == '__main__': main() yum-3.4.3/yum/mdparser.py0000664000076400007640000001441011602434452014327 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University import gzip try: from xml.etree import cElementTree except ImportError: import cElementTree iterparse = cElementTree.iterparse from cStringIO import StringIO import warnings import Errors #TODO: document everything here class MDParser: def __init__(self, filename): # Set up mapping of meta types to handler classes handlers = { '{http://linux.duke.edu/metadata/common}metadata': PrimaryEntry, '{http://linux.duke.edu/metadata/filelists}filelists': FilelistsEntry, '{http://linux.duke.edu/metadata/other}otherdata': OtherEntry, } self.total = None self.count = 0 self._handlercls = None # Read in type, set package node handler and get total number of # packages if filename[-3:] == '.gz': fh = gzip.open(filename, 'r') else: fh = open(filename, 'r') parser = iterparse(fh, events=('start', 'end')) self.reader = parser.__iter__() event, elem = self.reader.next() self._handlercls = handlers.get(elem.tag, None) if not self._handlercls: raise ValueError('Unknown repodata type "%s" in %s' % ( elem.tag, filename)) # Get the total number of packages self.total = int(elem.get('packages', 0)) def __iter__(self): return self def next(self): for event, elem in self.reader: if event == 'end' and elem.tag[-7:] == 'package': self.count += 1 return self._handlercls(elem) raise StopIteration class BaseEntry: def __init__(self, elem): self._p = {} def __getitem__(self, k): return self._p[k] def keys(self): return self._p.keys() def values(self): return self._p.values() def has_key(self, k): warnings.warn('has_key() will go away in a future version of Yum.\n', Errors.YumFutureDeprecationWarning, stacklevel=2) return k in self._p def __iter__(self): return iter(self._p) def __str__(self): out = StringIO() keys = self.keys() keys.sort() for k in keys: line = u'%s=%s\n' % (k, self[k]) out.write(line.encode('utf8')) return out.getvalue() def _bn(self, qn): if qn.find('}') == -1: return qn return qn.split('}')[1] def _prefixprops(self, elem, prefix): ret = {} for key in elem.attrib: ret[prefix + '_' + self._bn(key)] = elem.attrib[key] return ret class PrimaryEntry(BaseEntry): def __init__(self, elem): BaseEntry.__init__(self, elem) # Avoid excess typing :) p = self._p self.prco = {} self.files = {} for child in elem: name = self._bn(child.tag) if name in ('name', 'arch', 'summary', 'description', 'url', 'packager'): p[name] = child.text elif name == 'version': p.update(child.attrib) elif name in ('time', 'size'): p.update(self._prefixprops(child, name)) elif name in ('checksum', 'location'): p.update(self._prefixprops(child, name)) p[name + '_value'] = child.text if name == 'location' and "location_base" not in p: p["location_base"] = None elif name == 'format': self.setFormat(child) p['pkgId'] = p['checksum_value'] elem.clear() def setFormat(self, elem): # Avoid excessive typing :) p = self._p for child in elem: name = self._bn(child.tag) if name in ('license', 'vendor', 'group', 'buildhost', 'sourcerpm'): p[name] = child.text elif name in ('provides', 'requires', 'conflicts', 'obsoletes'): self.prco[name] = self.getPrco(child) elif name == 'header-range': p.update(self._prefixprops(child, 'rpm_header')) elif name == 'file': file_type = child.get('type', 'file') path = child.text self.files[path] = file_type def getPrco(self, elem): members = [] for child in elem: members.append(child.attrib) return members class FilelistsEntry(BaseEntry): def __init__(self, elem): BaseEntry.__init__(self, elem) self._p['pkgId'] = elem.attrib['pkgid'] self.files = {} for child in elem: name = self._bn(child.tag) if name == 'file': file_type = child.get('type', 'file') path = child.text self.files[path] = file_type elem.clear() class OtherEntry(BaseEntry): def __init__(self, elem): BaseEntry.__init__(self, elem) self._p['pkgId'] = elem.attrib['pkgid'] self._p['changelog'] = [] for child in elem: name = self._bn(child.tag) if name == 'changelog': entry = child.attrib entry['value'] = child.text self._p['changelog'].append(entry) elem.clear() def test(): import sys parser = MDParser(sys.argv[1]) for pkg in parser: print '-' * 40 print pkg print 'read: %s packages (%s suggested)' % (parser.count, parser.total) if __name__ == '__main__': test() yum-3.4.3/yum/failover.py0000664000076400007640000000645411602434452014332 0ustar jamesjames#!/usr/bin/python # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2003 Jack Neely, NC State University # Here we define a base class for failover methods. The idea here is that each # failover method uses a class derived from the base class so yum only has to # worry about calling get_serverurl() and server_failed() and these classes will # figure out which URL to cough up based on the failover method. import random class baseFailOverMethod: def __init__(self, repo): self.repo = repo self.failures = 0 def get_serverurl(self, i=None): """Returns a serverurl based on this failover method or None if complete failure. If i is given it is a direct index to pull a server URL from instead of using the failures counter.""" return None def server_failed(self): "Tells the failover method that the current server is failed." self.failures = self.failures + 1 def reset(self, i=0): "Reset the failures counter to a given index." self.failures = i def get_index(self): """Returns the current number of failures which is also the index into the list this object represents. ger_serverurl() should always be used to translate an index into a URL as this object may change how indexs map. (See RoundRobin)""" return self.failures def len(self): """Returns the how many URLs we've got to cycle through.""" return len(self.repo.urls) class priority(baseFailOverMethod): """Chooses server based on the first success in the list.""" def get_serverurl(self, i=None): "Returns a serverurl based on this failover method or None if complete failure." if i == None: index = self.failures else: index = i if index >= len(self.repo.urls): return None return self.repo.urls[index] class roundRobin(baseFailOverMethod): """Chooses server based on a round robin.""" def __init__(self, repo): baseFailOverMethod.__init__(self, repo) random.seed() self.offset = random.randint(0, 37) def get_serverurl(self, i=None): "Returns a serverurl based on this failover method or None if complete failure." if i == None: index = self.failures else: index = i if index >= len(self.repo.urls): return None rr = (index + self.offset) % len(self.repo.urls) return self.repo.urls[rr] # SDG yum-3.4.3/yum/metalink.py0000775000076400007640000002244211602434452014325 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Copyright 2008 Red Hat # # James Antill # Parse the new MirrorManager metalink output: import sys import os import time from urlgrabber.progress import format_number import Errors from yum.misc import cElementTree_xmlparse as xmlparse class MetaLinkRepoErrorParseFail(Errors.RepoError): """ An exception thrown for an unparsable MetaLinkRepoMD file. """ pass __XML_NS_ML__ = 'http://www.metalinker.org/' __XML_NS_MM__ = 'http://fedorahosted.org/mirrormanager' __XML_FMT__ = {'ml' : __XML_NS_ML__, 'mm' : __XML_NS_MM__} __ML_FILE_ELEMENT__ = """\ {%(ml)s}files/{%(ml)s}file\ """ % __XML_FMT__ __ML_OLD_FILE_ELEMENTS__ = """\ {%(mm)s}alternates/{%(mm)s}alternate\ """ % __XML_FMT__ __ML_RESOURCES__ = """\ {%(ml)s}resources\ """ % __XML_FMT__ class MetaLinkFile: """ Parse the file metadata out of a metalink file. """ def __init__(self, elem): # We aren't "using" any of these, just storing them. chksums = set(["md5", 'sha1', 'sha256', 'sha512']) for celem in elem: if False: pass elif celem.tag == "{%s}timestamp" % __XML_NS_MM__: self.timestamp = int(celem.text) elif celem.tag == "{%s}size" % __XML_NS_ML__: self.size = int(celem.text) elif celem.tag == "{%s}verification" % __XML_NS_ML__: self.chksums = {} for helem in celem: if (helem.tag == "{%s}hash" % __XML_NS_ML__ and helem.get("type") in chksums): self.chksums[helem.get("type").lower()] = helem.text if not hasattr(self, 'timestamp'): raise MetaLinkRepoErrorParseFail, "No timestamp for file" if not hasattr(self, 'size'): raise MetaLinkRepoErrorParseFail, "No size for file" if not hasattr(self, 'chksums'): raise MetaLinkRepoErrorParseFail, "No verifications for file" def __str__(self): return """\ Timestamp: %s Size: %5s (%d) MD5: %s SHA1: %s SHA256: %s SHA512: %s """ % (time.ctime(self.timestamp), format_number(self.size), self.size, self.md5, self.sha1, self.sha256, self.sha512) def _get_md5(self): return self.chksums.get('md5', '') md5 = property(_get_md5) def _get_sha1(self): return self.chksums.get('sha1', '') sha1 = property(_get_sha1) def _get_sha256(self): return self.chksums.get('sha256', '') sha256 = property(_get_sha256) def _get_sha512(self): return self.chksums.get('sha512', '') sha512 = property(_get_sha512) def __cmp__(self, other): if other is None: return 1 ret = cmp(self.timestamp, other.timestamp) if ret: return -ret ret = cmp(self.size, other.size) if ret: return ret ret = cmp(self.md5, other.md5) if ret: return ret ret = cmp(self.sha1, other.sha1) if ret: return ret ret = cmp(self.sha256, other.sha256) if ret: return ret ret = cmp(self.sha512, other.sha512) if ret: return ret return 0 class MetaLinkURL: """ Parse the URL metadata out of a metalink file. """ def __init__(self, elem, max_connections): assert elem.tag == '{%s}url' % __XML_NS_ML__ self.max_connections = max_connections self.url = elem.text 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") def __str__(self): return """\ URL: %s Preference: %d Max-Connections: %d Protocol: %s Location: %s Private: %s """ % (self.url, self.preference, self.max_connections, self.protocol, self.location, self.private) def __cmp__(self, other): if other is None: return 1 ret = cmp(self.preference, other.preference) if ret: return -ret ret = cmp(self.protocol == "https", other.protocol == "https") if ret: return -ret ret = cmp(self.protocol == "http", other.protocol == "http") if ret: return -ret return cmp(self.url, other.url) def usable(self): if self.protocol is None: return False if not self.url: return False return True class MetaLinkRepoMD: """ Parse a metalink file for repomd.xml. """ def __init__(self, filename): self.name = None self.repomd = None self.old_repomds = [] self.mirrors = [] if not os.path.exists(filename): raise MetaLinkRepoErrorParseFail, "File %s does not exist" %filename try: root = xmlparse(filename) except SyntaxError: raise MetaLinkRepoErrorParseFail, "File %s is not XML" % filename for elem in root.findall(__ML_FILE_ELEMENT__): name = elem.get('name') if os.path.basename(name) != 'repomd.xml': continue if self.name is not None and self.name != name: raise MetaLinkRepoErrorParseFail, "Different paths for repomd file" self.name = name repomd = MetaLinkFile(elem) if self.repomd is not None and self.repomd != repomd: raise MetaLinkRepoErrorParseFail, "Different data for repomd file" self.repomd = repomd for celem in elem.findall(__ML_OLD_FILE_ELEMENTS__): self.old_repomds.append(MetaLinkFile(celem)) for celem in elem.findall(__ML_RESOURCES__): max_connections = int(celem.get("maxconnections")) for uelem in celem: if uelem.tag == "{%s}url" % __XML_NS_ML__: self.mirrors.append(MetaLinkURL(uelem, max_connections)) self.old_repomds.sort() self.mirrors.sort() if self.repomd is None: raise MetaLinkRepoErrorParseFail, "No repomd file" if len(self.mirrors) < 1: raise MetaLinkRepoErrorParseFail, "No mirror" def urls(self): """ Iterate plain urls for the mirrors, like the old mirrorlist. """ # Get the hostname from a url, stripping away any usernames/passwords # Borrowd from fastestmirror url2host = lambda url: url.split('/')[2].split('@')[-1] hosts = set() # Don't want multiple urls for one host in plain mode # The list of URLs is sorted, so http is before ftp for mirror in self.mirrors: url = mirror.url # This is what yum supports atm. ... no rsync etc. if url.startswith("file:"): pass elif (url.startswith("http:") or url.startswith("ftp:") or url.startswith("https:")): host = url2host(url) if host in hosts: continue hosts.add(host) else: continue # The mirror urls in the metalink file are for repomd.xml so it # gives a list of mirrors for that one file, but we want the list # of mirror baseurls. Joy of reusing other people's stds. :) if not url.endswith("/repodata/repomd.xml"): continue yield url[:-len("/repodata/repomd.xml")] def __str__(self): ret = str(self.repomd) done = False for orepomd in self.old_repomds: if not done: ret += "%s\n" % ("-" * 79) if done: ret += "\n" done = True ret += str(orepomd) done = False for url in self.mirrors: if not done: ret += "%s\n" % ("-" * 79) if done: ret += "\n" done = True ret += str(url) return ret def main(): """ MetaLinkRepoMD test function. """ def usage(): print >> sys.stderr, "Usage: %s ..." % sys.argv[0] sys.exit(1) if len(sys.argv) < 2: usage() for filename in sys.argv[1:]: if not os.path.exists(filename): print "No such file:", filename continue print "File:", filename print MetaLinkRepoMD(filename) print '' if __name__ == '__main__': main() yum-3.4.3/yum/i18n.py0000775000076400007640000004663211602434452013307 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. def dummy_wrapper(str): ''' Dummy Translation wrapper, just returning the same string. ''' return to_unicode(str) def dummyP_wrapper(str1, str2, n): ''' Dummy Plural Translation wrapper, just returning the singular or plural string. ''' if n == 1: return str1 else: return str2 # This is ported from ustr_utf8_* which I got from: # http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c # I've tried to leave it close to the original C (same names etc.) so that # it is easy to read/compare both versions... # ----------------------------- BEG utf8 ----------------------------- # This is an implementation of wcwidth() and wcswidth() (defined in # IEEE Std 1002.1-2001) for Unicode. # # http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html # http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html # # In fixed-width output devices, Latin characters all occupy a single # "cell" position of equal width, whereas ideographic CJK characters # occupy two such cells. Interoperability between terminal-line # applications and (teletype-style) character terminals using the # UTF-8 encoding requires agreement on which character should advance # the cursor by how many cell positions. No established formal # standards exist at present on which Unicode character shall occupy # how many cell positions on character terminals. These routines are # a first attempt of defining such behavior based on simple rules # applied to data provided by the Unicode Consortium. # # [...] # # Markus Kuhn -- 2007-05-26 (Unicode 5.0) # # Permission to use, copy, modify, and distribute this software # for any purpose and without fee is hereby granted. The author # disclaims all warranties with regard to this software. # # Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c def __utf8_bisearch(ucs, table): """ auxiliary function for binary search in interval table. """ min = 0 max = len(table) - 1 if ucs < table[min][0] or ucs > table[max][1]: return False while max >= min: mid = (min + max) / 2 if ucs > table[mid][1]: min = mid + 1 elif ucs < table[mid][0]: max = mid - 1 else: return True return False # sorted list of non-overlapping intervals of non-spacing characters # generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" __combining = ( ( 0x0300, 0x036F ), ( 0x0483, 0x0486 ), ( 0x0488, 0x0489 ), ( 0x0591, 0x05BD ), ( 0x05BF, 0x05BF ), ( 0x05C1, 0x05C2 ), ( 0x05C4, 0x05C5 ), ( 0x05C7, 0x05C7 ), ( 0x0600, 0x0603 ), ( 0x0610, 0x0615 ), ( 0x064B, 0x065E ), ( 0x0670, 0x0670 ), ( 0x06D6, 0x06E4 ), ( 0x06E7, 0x06E8 ), ( 0x06EA, 0x06ED ), ( 0x070F, 0x070F ), ( 0x0711, 0x0711 ), ( 0x0730, 0x074A ), ( 0x07A6, 0x07B0 ), ( 0x07EB, 0x07F3 ), ( 0x0901, 0x0902 ), ( 0x093C, 0x093C ), ( 0x0941, 0x0948 ), ( 0x094D, 0x094D ), ( 0x0951, 0x0954 ), ( 0x0962, 0x0963 ), ( 0x0981, 0x0981 ), ( 0x09BC, 0x09BC ), ( 0x09C1, 0x09C4 ), ( 0x09CD, 0x09CD ), ( 0x09E2, 0x09E3 ), ( 0x0A01, 0x0A02 ), ( 0x0A3C, 0x0A3C ), ( 0x0A41, 0x0A42 ), ( 0x0A47, 0x0A48 ), ( 0x0A4B, 0x0A4D ), ( 0x0A70, 0x0A71 ), ( 0x0A81, 0x0A82 ), ( 0x0ABC, 0x0ABC ), ( 0x0AC1, 0x0AC5 ), ( 0x0AC7, 0x0AC8 ), ( 0x0ACD, 0x0ACD ), ( 0x0AE2, 0x0AE3 ), ( 0x0B01, 0x0B01 ), ( 0x0B3C, 0x0B3C ), ( 0x0B3F, 0x0B3F ), ( 0x0B41, 0x0B43 ), ( 0x0B4D, 0x0B4D ), ( 0x0B56, 0x0B56 ), ( 0x0B82, 0x0B82 ), ( 0x0BC0, 0x0BC0 ), ( 0x0BCD, 0x0BCD ), ( 0x0C3E, 0x0C40 ), ( 0x0C46, 0x0C48 ), ( 0x0C4A, 0x0C4D ), ( 0x0C55, 0x0C56 ), ( 0x0CBC, 0x0CBC ), ( 0x0CBF, 0x0CBF ), ( 0x0CC6, 0x0CC6 ), ( 0x0CCC, 0x0CCD ), ( 0x0CE2, 0x0CE3 ), ( 0x0D41, 0x0D43 ), ( 0x0D4D, 0x0D4D ), ( 0x0DCA, 0x0DCA ), ( 0x0DD2, 0x0DD4 ), ( 0x0DD6, 0x0DD6 ), ( 0x0E31, 0x0E31 ), ( 0x0E34, 0x0E3A ), ( 0x0E47, 0x0E4E ), ( 0x0EB1, 0x0EB1 ), ( 0x0EB4, 0x0EB9 ), ( 0x0EBB, 0x0EBC ), ( 0x0EC8, 0x0ECD ), ( 0x0F18, 0x0F19 ), ( 0x0F35, 0x0F35 ), ( 0x0F37, 0x0F37 ), ( 0x0F39, 0x0F39 ), ( 0x0F71, 0x0F7E ), ( 0x0F80, 0x0F84 ), ( 0x0F86, 0x0F87 ), ( 0x0F90, 0x0F97 ), ( 0x0F99, 0x0FBC ), ( 0x0FC6, 0x0FC6 ), ( 0x102D, 0x1030 ), ( 0x1032, 0x1032 ), ( 0x1036, 0x1037 ), ( 0x1039, 0x1039 ), ( 0x1058, 0x1059 ), ( 0x1160, 0x11FF ), ( 0x135F, 0x135F ), ( 0x1712, 0x1714 ), ( 0x1732, 0x1734 ), ( 0x1752, 0x1753 ), ( 0x1772, 0x1773 ), ( 0x17B4, 0x17B5 ), ( 0x17B7, 0x17BD ), ( 0x17C6, 0x17C6 ), ( 0x17C9, 0x17D3 ), ( 0x17DD, 0x17DD ), ( 0x180B, 0x180D ), ( 0x18A9, 0x18A9 ), ( 0x1920, 0x1922 ), ( 0x1927, 0x1928 ), ( 0x1932, 0x1932 ), ( 0x1939, 0x193B ), ( 0x1A17, 0x1A18 ), ( 0x1B00, 0x1B03 ), ( 0x1B34, 0x1B34 ), ( 0x1B36, 0x1B3A ), ( 0x1B3C, 0x1B3C ), ( 0x1B42, 0x1B42 ), ( 0x1B6B, 0x1B73 ), ( 0x1DC0, 0x1DCA ), ( 0x1DFE, 0x1DFF ), ( 0x200B, 0x200F ), ( 0x202A, 0x202E ), ( 0x2060, 0x2063 ), ( 0x206A, 0x206F ), ( 0x20D0, 0x20EF ), ( 0x302A, 0x302F ), ( 0x3099, 0x309A ), ( 0xA806, 0xA806 ), ( 0xA80B, 0xA80B ), ( 0xA825, 0xA826 ), ( 0xFB1E, 0xFB1E ), ( 0xFE00, 0xFE0F ), ( 0xFE20, 0xFE23 ), ( 0xFEFF, 0xFEFF ), ( 0xFFF9, 0xFFFB ), ( 0x10A01, 0x10A03 ), ( 0x10A05, 0x10A06 ), ( 0x10A0C, 0x10A0F ), ( 0x10A38, 0x10A3A ), ( 0x10A3F, 0x10A3F ), ( 0x1D167, 0x1D169 ), ( 0x1D173, 0x1D182 ), ( 0x1D185, 0x1D18B ), ( 0x1D1AA, 0x1D1AD ), ( 0x1D242, 0x1D244 ), ( 0xE0001, 0xE0001 ), ( 0xE0020, 0xE007F ), ( 0xE0100, 0xE01EF )) def __utf8_ucp_width(ucs): """ Get the textual width of a ucs character. """ # test for 8-bit control characters if ucs == 0: return 0 if ucs < 32 or (ucs >= 0x7f and ucs < 0xa0): return (-1) if __utf8_bisearch(ucs, __combining): return 0 # if we arrive here, ucs is not a combining or C0/C1 control character return (1 + (ucs >= 0x1100 and (ucs <= 0x115f or # Hangul Jamo init. consonants ucs == 0x2329 or ucs == 0x232a or (ucs >= 0x2e80 and ucs <= 0xa4cf and ucs != 0x303f) or # CJK ... Yi (ucs >= 0xac00 and ucs <= 0xd7a3) or # Hangul Syllables (ucs >= 0xf900 and ucs <= 0xfaff) or # CJK Compatibility Ideographs (ucs >= 0xfe10 and ucs <= 0xfe19) or # Vertical forms (ucs >= 0xfe30 and ucs <= 0xfe6f) or # CJK Compatibility Forms (ucs >= 0xff00 and ucs <= 0xff60) or # Fullwidth Forms (ucs >= 0xffe0 and ucs <= 0xffe6) or (ucs >= 0x20000 and ucs <= 0x2fffd) or (ucs >= 0x30000 and ucs <= 0x3fffd)))) def __utf8_iter_ints(msg): for byte in to_utf8(msg): yield ord(byte) def __utf8_iter_ucs(msg): uiter = __utf8_iter_ints(msg) for byte0 in uiter: if byte0 < 0x80: # 0xxxxxxx yield (byte0, 1) elif (byte0 & 0xe0) == 0xc0: # 110XXXXx 10xxxxxx byte1 = uiter.next() if (((byte1 & 0xc0) != 0x80) or ((byte0 & 0xfe) == 0xc0)): # overlong? yield (None, 2) return yield ((((byte0 & 0x1f) << 6) | (byte1 & 0x3f)), 2) elif (byte0 & 0xf0) == 0xe0: # 1110XXXX 10Xxxxxx 10xxxxxx byte1 = uiter.next() byte2 = uiter.next() if (((byte1 & 0xc0) != 0x80) or ((byte2 & 0xc0) != 0x80) or ((byte0 == 0xe0) and ((byte1 & 0xe0) == 0x80)) or # overlong? ((byte0 == 0xed) and ((byte1 & 0xe0) == 0xa0)) or # surrogate? ((byte0 == 0xef) and (byte1 == 0xbf) and ((byte2 & 0xfe) == 0xbe))): # U+FFFE or U+FFFF? yield (None, 3) return yield ((((byte0 & 0x0f) << 12) | ((byte1 & 0x3f) << 6) | (byte2 & 0x3f)), 3) elif (byte0 & 0xf8) == 0xf0: # 11110XXX 10XXxxxx 10xxxxxx 10xxxxxx byte1 = uiter.next() byte2 = uiter.next() byte3 = uiter.next() if (((byte1 & 0xc0) != 0x80) or ((byte2 & 0xc0) != 0x80) or ((byte3 & 0xc0) != 0x80) or ((byte0 == 0xf0) and ((byte1 & 0xf0) == 0x80)) or # overlong? ((byte0 == 0xf4) and (byte1 > 0x8f)) or # > U+10FFFF? (byte0 > 0xf4)): # > U+10FFFF? yield (None, 4) return yield ((((byte0 & 0x07) << 18) | ((byte1 & 0x3f) << 12) | ((byte2 & 0x3f) << 6) | (byte3 & 0x3f)), 4) else: yield (None, 1) return def utf8_width(msg): """ Get the textual width of a utf8 string. """ ret = 0 for (ucs, bytes) in __utf8_iter_ucs(msg): if ucs is None: ret += bytes # Ugly ... should not feed bad utf8 else: ret += __utf8_ucp_width(ucs) return ret def utf8_width_chop(msg, chop=None): """ Return the textual width of a utf8 string, chopping it to a specified value. This is what you want to use instead of %.*s, as it does the "right" thing with regard to utf-8 sequences. Eg. "%.*s" % (10, msg) <= becomes => "%s" % (utf8_width_chop(msg, 10)) """ if chop is None or utf8_width(msg) <= chop: return utf8_width(msg), msg ret = 0 passed_unicode = isinstance(msg, unicode) msg_bytes = 0 msg = to_utf8(msg) for (ucs, bytes) in __utf8_iter_ucs(msg): if ucs is None: width = bytes # Ugly ... should not feed bad utf8 else: width = __utf8_ucp_width(ucs) if chop is not None and (ret + width) > chop: msg = msg[:msg_bytes] break ret += width msg_bytes += bytes if passed_unicode: msg = to_unicode(msg) return ret, msg def utf8_width_fill(msg, fill, chop=None, left=True, prefix='', suffix=''): """ Expand a utf8 msg to a specified "width" or chop to same. Expansion can be left or right. This is what you want to use instead of %*.*s, as it does the "right" thing with regard to utf-8 sequences. prefix and suffix should be used for "invisible" bytes, like highlighting. Eg. "%-*.*s" % (10, 20, msg) <= becomes => "%s" % (utf8_width_fill(msg, 10, 20)). "%20.10s" % (msg) <= becomes => "%s" % (utf8_width_fill(msg, 20, 10, left=False)). "%s%.10s%s" % (prefix, msg, suffix) <= becomes => "%s" % (utf8_width_fill(msg, 0, 10, prefix=prefix, suffix=suffix)). """ passed_msg = msg width, msg = utf8_width_chop(msg, chop) if width >= fill: if prefix or suffix: msg = ''.join([prefix, msg, suffix]) else: extra = " " * (fill - width) if left: msg = ''.join([prefix, msg, suffix, extra]) else: msg = ''.join([extra, prefix, msg, suffix]) if isinstance(passed_msg, unicode): return to_unicode(msg) return msg def utf8_valid(msg): """ Return True/False is the text is valid utf8. """ for (ucs, bytes) in __utf8_iter_ucs(msg): if ucs is None: return False return True def _utf8_width_le(width, *args): """ Minor speed hack, we often want to know "does X fit in Y". It takes "a while" to work out a utf8_width() (see above), and we know that a utf8 character is always <= byte. So given: assert bytes >= characters characters <= width? ...we can change to: bytes <= width or characters <= width ...and bytes are much faster. """ # This assumes that all args. are utf8. ret = 0 for arg in args: ret += len(arg) if ret <= width: return True ret = 0 for arg in args: ret += utf8_width(arg) return ret <= width def utf8_text_wrap(text, width=70, initial_indent='', subsequent_indent=''): """ Works like we want textwrap.wrap() to work, uses utf-8 data and doesn't screw up lists/blocks/etc. """ # Tested with: # yum info robodoc gpicview php-pear-Net-Socket wmctrl ustr moreutils # mediawiki-HNP ocspd insight yum mousepad # ...at 120, 80 and 40 chars. # Also, notable among lots of others, searching for "\n ": # exim-clamav, jpackage-utils, tcldom, synaptics, "quake3", # perl-Class-Container, ez-ipupdate, perl-Net-XMPP, "kipi-plugins", # perl-Apache-DBI, netcdf, python-configobj, "translate-toolkit", alpine, # "udunits", "conntrack-tools" # # Note that, we "fail" on: # alsa-plugins-jack, setools*, dblatex, uisp, "perl-Getopt-GUI-Long", # suitesparse, "synce-serial", writer2latex, xenwatch, ltsp-utils passed_unicode = isinstance(text, unicode) def _indent_at_beg(line): count = 0 byte = 'X' for byte in line: if byte != ' ': break count += 1 if byte not in ("-", "*", ".", "o", '\xe2'): return count, 0 list_chr = utf8_width_chop(line[count:], 1)[1] if list_chr in ("-", "*", ".", "o", "\xe2\x80\xa2", "\xe2\x80\xa3", "\xe2\x88\x98"): nxt = _indent_at_beg(line[count+len(list_chr):]) nxt = nxt[1] or nxt[0] if nxt: return count, count + 1 + nxt return count, 0 initial_indent = to_utf8(initial_indent) subsequent_indent = to_utf8(subsequent_indent) text = to_utf8(text).rstrip('\n') lines = to_utf8(text).replace('\t', ' ' * 8).split('\n') ret = [] indent = initial_indent wrap_last = False csab = 0 cspc_indent = 0 for line in lines: line = line.rstrip(' ') (lsab, lspc_indent) = (csab, cspc_indent) (csab, cspc_indent) = _indent_at_beg(line) force_nl = False # We want to stop wrapping under "certain" conditions: if wrap_last and cspc_indent: # if line starts a list or force_nl = True if wrap_last and csab == len(line):# is empty line force_nl = True if wrap_last and not lspc_indent: # if line doesn't continue a list and if csab >= 4 and csab != lsab: # is "block indented" force_nl = True if force_nl: ret.append(indent.rstrip(' ')) indent = subsequent_indent wrap_last = False if csab == len(line): # empty line, remove spaces to make it easier. line = '' if wrap_last: line = line.lstrip(' ') cspc_indent = lspc_indent if _utf8_width_le(width, indent, line): wrap_last = False ret.append(indent + line) indent = subsequent_indent continue wrap_last = True words = line.split(' ') line = indent spcs = cspc_indent if not spcs and csab >= 4: spcs = csab for word in words: if (not _utf8_width_le(width, line, word) and utf8_width(line) > utf8_width(subsequent_indent)): ret.append(line.rstrip(' ')) line = subsequent_indent + ' ' * spcs line += word line += ' ' indent = line.rstrip(' ') + ' ' if wrap_last: ret.append(indent.rstrip(' ')) if passed_unicode: return map(to_unicode, ret) return ret def utf8_text_fill(text, *args, **kwargs): """ Works like we want textwrap.fill() to work, uses utf-8 data and doesn't screw up lists/blocks/etc. """ return '\n'.join(utf8_text_wrap(text, *args, **kwargs)) # ----------------------------- END utf8 ----------------------------- def to_unicode(obj, encoding='utf-8', errors='replace'): ''' convert a 'str' to 'unicode' ''' if isinstance(obj, basestring): if not isinstance(obj, unicode): obj = unicode(obj, encoding, errors) return obj def to_utf8(obj, errors='replace'): '''convert 'unicode' to an encoded utf-8 byte string ''' if isinstance(obj, unicode): obj = obj.encode('utf-8', errors) return obj # Don't use this, to_unicode should just work now def to_unicode_maybe(obj, encoding='utf-8', errors='replace'): ''' Don't ask don't tell, only use when you must ''' try: return to_unicode(obj, encoding, errors) except UnicodeEncodeError: return obj def to_str(obj): """ Convert something to a string, if it isn't one. """ # NOTE: unicode counts as a string just fine. We just want objects to call # their __str__ methods. if not isinstance(obj, basestring): obj = str(obj) return obj def str_eq(a, b): """ convert between unicode and not and compare them, w/o warning or being annoying""" if isinstance(a, unicode) == isinstance(b, unicode): if a == b: # stupid python... return True elif to_utf8(a) == to_utf8(b): return True return False try: ''' Setup the yum translation domain and make _() and P_() translation wrappers available. using ugettext to make sure translated strings are in Unicode. ''' import gettext t = gettext.translation('yum', fallback=True) _ = t.ugettext P_ = t.ungettext except: ''' Something went wrong so we make a dummy _() wrapper there is just returning the same text ''' _ = dummy_wrapper P_ = dummyP_wrapper if __name__ == "__main__": import sys def out(arg): arg = to_utf8(arg) print "UTF8 :", arg print "len :", len(arg) arg = to_unicode(arg) print "USC :", arg print "len :", len(arg) print "valid:", utf8_valid(arg) print "width:", utf8_width(arg) print "4.8 :", "%s%s%s" % ('<', utf8_width_fill(arg, 4, 8), '>') print "4.3 :", "%s%s%s" % ('<', utf8_width_fill(arg, 4, 3), '>') print "4.2 :", "%s%s%s" % ('<', utf8_width_fill(arg, 4, 2), '>') print "4.1 :", "%s%s%s" % ('<', utf8_width_fill(arg, 4, 1), '>') print "3.3 :", "%s%s%s" % ('<', utf8_width_fill(arg, 3, 3), '>') print "3.2 :", "%s%s%s" % ('<', utf8_width_fill(arg, 3, 2), '>') print "3.1 :", "%s%s%s" % ('<', utf8_width_fill(arg, 3, 1), '>') print "40.79:", "%s%s%s" % ('<', utf8_width_fill(arg, 40, 79), '>') print "40.20:", "%s%s%s" % ('<', utf8_width_fill(arg, 40, 20), '>') print '' print " ---- Arguments/str ---- " for arg in sys.argv[1:]: out(arg) print " ---- Arguments/gettext ---- " for arg in sys.argv[1:]: try: arg = _(arg) except UnicodeDecodeError: continue out(arg) if len(sys.argv) > 2: print " ---- Arguments/str/all ---- " out(sys.argv[1] % sys.argv[2:]) print " ---- Arguments/gettext/all ---- " try: arg = _(sys.argv[1]) % map(_, sys.argv[2:]) except UnicodeDecodeError: sys.exit(0) out(arg) yum-3.4.3/yum/sqlitesack.py0000664000076400007640000021111011602434452014651 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University # # Implementation of the YumPackageSack class that uses an sqlite backend # import os import os.path import fnmatch import yumRepo from packages import PackageObject, RpmBase, YumAvailablePackage, parsePackages import Errors import misc from sqlutils import executeSQL, sql_esc, sql_esc_glob import rpmUtils.miscutils import sqlutils import constants import operator from yum.misc import seq_max_split from yum.i18n import to_utf8, to_unicode import sys import re import warnings def catchSqliteException(func): """This decorator converts sqlite exceptions into RepoError""" def newFunc(*args, **kwargs): try: return func(*args, **kwargs) except sqlutils.sqlite.Error, e: # 2.4.x requires this, but 2.6.x complains about even hasattr() # of e.message ... *sigh* if sys.hexversion < 0x02050000: if hasattr(e,'message'): raise Errors.RepoError, str(e.message) else: raise Errors.RepoError, str(e) raise Errors.RepoError, str(e) newFunc.__name__ = func.__name__ newFunc.__doc__ = func.__doc__ newFunc.__dict__.update(func.__dict__) return newFunc def _share_data(value): return misc.share_data(value) # FIXME: parsePackages() def _parse_pkg_n(match, regexp_match, n): if match == n: return True if not regexp_match: return False if (match and n and match[0] not in ('?', '*') and match[0] != n[0]): return False if regexp_match(n): return True return False def _parse_pkg(match, regexp_match, data, e,v,r,a): n = data['n'] assert e, 'Nothing in epoch' # Worthless speed hacks? if match == n: return True if (match and n and match[0] not in ('?', '*') and match[0] != n[0] and match[0] != e[0]): return False if 'nameArch' not in data: data['nameArch'] = '%s.%s' % (n, a) data['nameVerRelArch'] = '%s-%s-%s.%s' % (n, v, r, a) data['nameVer'] = '%s-%s' % (n, v) data['nameVerRel'] = '%s-%s-%s' % (n, v, r) data['envra'] = '%s:%s-%s-%s.%s' % (e, n, v, r, a) data['nevra'] = '%s-%s:%s-%s.%s' % (n, e, v, r, a) data = set([n, data['nameArch'], data['nameVerRelArch'], data['nameVer'], data['nameVerRel'], data['envra'], data['nevra']]) if match in data: return True if not regexp_match: return False for item in data: if regexp_match(item): return True return False def _excluder_match(excluder, match, regexp_match, data, e,v,r,a): if False: pass elif excluder in ('eq', 'match'): if _parse_pkg(match, regexp_match, data, e,v,r,a): return True elif excluder in ('name.eq', 'name.match'): if _parse_pkg_n(match, regexp_match, data['n']): return True elif excluder in ('arch.eq', 'arch.match'): if _parse_pkg_n(match, regexp_match, a): return True elif excluder == 'nevr.eq': if 'nevr' not in data: data['nevr'] = '%s-%s:%s-%s' % (data['n'], e, v, r) if match == data['nevr']: return True elif excluder in ('nevra.eq', 'nevra.match'): if 'nevra' not in data: data['nevra'] = '%s-%s:%s-%s.%s' % (data['n'], e, v, r, a) if _parse_pkg_n(match, regexp_match, data['nevra']): return True elif excluder == 'name.in': if data['n'] in match: return True elif excluder == 'nevr.in': if 'nevr' not in data: data['nevr'] = '%s-%s:%s-%s' % (data['n'], e, v, r) if data['nevr'] in match: return True elif excluder == 'nevra.in': if 'nevra' not in data: data['nevra'] = '%s-%s:%s-%s.%s' % (data['n'], e, v, r, a) if data['nevra'] in match: return True elif excluder == 'pkgtup.eq': if match == data['pkgtup']: return True elif excluder == 'pkgtup.in': if data['pkgtup'] in match: return True elif excluder == 'marked': if data['marked']: return True elif excluder == 'washed': if not data['marked']: return True elif excluder == '*': return True else: assert False, 'Bad excluder: ' + excluder return None return False class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase): def __init__(self, repo, db_obj): self.prco = { 'obsoletes': (), 'conflicts': (), 'requires': (), 'provides': () } self.sack = repo.sack self.repoid = repo.id self.repo = repo self.state = None self._loadedfiles = False self._files = None self._read_db_obj(db_obj) # for stupid metadata created without epochs listed in the version tag # die die if self.epoch is None: self.epoch = '0' self.id = self.pkgId self.ver = self.version self.rel = self.release self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release) self._changelog = None self._hash = None files = property(fget=lambda self: self._loadFiles()) def _read_db_obj(self, db_obj, item=None): """read the db obj. If asked for a specific item, return it. otherwise populate out into the object what exists""" if item: try: return db_obj[item] except (IndexError, KeyError): return None for item in ['name', 'arch', 'epoch', 'version', 'release', 'pkgKey']: try: setattr(self, item, _share_data(db_obj[item])) except (IndexError, KeyError): pass try: self.pkgId = db_obj['pkgId'] checksum_type = _share_data(db_obj['checksum_type']) check_sum = (checksum_type, db_obj['pkgId'], True) self._checksums = [ check_sum ] except (IndexError, KeyError): pass @catchSqliteException def _sql_MD(self, MD, sql, *args): """ Exec SQL against an MD of the repo, return a cursor. """ cache = getattr(self.sack, MD + 'db')[self.repo] cur = cache.cursor() executeSQL(cur, sql, *args) return cur def __getattr__(self, varname): db2simplemap = { 'packagesize' : 'size_package', 'archivesize' : 'size_archive', 'installedsize' : 'size_installed', 'buildtime' : 'time_build', 'hdrstart' : 'rpm_header_start', 'hdrend' : 'rpm_header_end', 'basepath' : 'location_base', 'relativepath': 'location_href', 'filetime' : 'time_file', 'packager' : 'rpm_packager', 'group' : 'rpm_group', 'buildhost' : 'rpm_buildhost', 'sourcerpm' : 'rpm_sourcerpm', 'vendor' : 'rpm_vendor', 'license' : 'rpm_license', 'checksum_value' : 'pkgId', } # If these existed, then we wouldn't get here ... and nothing in the DB # starts and ends with __'s. So these are missing. if varname.startswith('__') and varname.endswith('__'): raise AttributeError, varname dbname = db2simplemap.get(varname, varname) try: r = self._sql_MD('primary', "SELECT %s FROM packages WHERE pkgId = ?" % dbname, (self.pkgId,)).fetchone() except Errors.RepoError, e: if str(e).startswith('no such column'): #FIXME - after API break make this an AttributeError Raise raise KeyError, str(e) raise value = r[0] if varname == 'epoch' and value is None: value = '0' if varname in ('summary', 'description') and value is None: # Maybe others here? ... location_base is a bad NONO though. value = '' # Description for picasa, probably among others *sigh* if varname in {'vendor' : 1, 'packager' : 1, 'buildhost' : 1, 'license' : 1, 'group' : 1, 'summary' : 1, 'description' : 1, 'sourcerpm' : 1, 'url' : 1}: value = _share_data(value) setattr(self, varname, value) return value def _loadFiles(self): if self._loadedfiles: return self._files result = {} #FIXME - this should be try, excepting self.sack.populate(self.repo, mdtype='filelists') cur = self._sql_MD('filelists', "SELECT dirname, filetypes, filenames " \ "FROM filelist JOIN packages USING(pkgKey) " \ "WHERE packages.pkgId = ?", (self.pkgId,)) for ob in cur: dirname = ob['dirname'] filetypes = decodefiletypelist(ob['filetypes']) filenames = decodefilenamelist(ob['filenames']) while(filetypes): if dirname: filename = dirname+'/'+filenames.pop() else: filename = filenames.pop() filetype = _share_data(filetypes.pop()) result.setdefault(filetype,[]).append(filename) self._loadedfiles = True self._files = result return self._files def _loadChangelog(self): result = [] if not self._changelog: if self.repo not in self.sack.otherdb: try: self.sack.populate(self.repo, mdtype='otherdata') except Errors.RepoError: self._changelog = result return cur = self._sql_MD('other', "SELECT date, author, changelog " \ "FROM changelog JOIN packages USING(pkgKey) " \ "WHERE pkgId = ? ORDER BY date DESC", (self.pkgId,)) # Check count(pkgId) here, the same way we do in searchFiles()? # Failure mode is much less of a problem. for ob in cur: # Note: Atm. rpm only does days, where (60 * 60 * 24) == 86400 # and we have the hack in _dump_changelog() to keep the # order the same, so this is a quick way to get rid of # any extra "seconds". # We still leak the seconds if there are 100 updates in # a day ... but don't do that. It also breaks if rpm ever # gets fixed (but that is unlikely). c_date = 100 * (ob['date'] / 100) c_author = to_utf8(ob['author']) c_log = to_utf8(ob['changelog']) result.append((c_date, _share_data(c_author), c_log)) self._changelog = result return def returnIdSum(self): return (self.checksum_type, self.pkgId) def returnChangelog(self): self._loadChangelog() 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)) return map(lambda x: x['fname'], cur) self._loadFiles() return RpmBase.returnFileEntries(self,ftype,primary_only) 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) def simpleFiles(self, ftype='file'): warnings.warn('simpleFiles() will go away in a future version of Yum.' 'Use returnFileEntries(primary_only=True)\n', Errors.YumDeprecationWarning, stacklevel=2) sql = "SELECT name as fname FROM files WHERE pkgKey = ? and type = ?" cur = self._sql_MD('primary', sql, (self.pkgKey, ftype)) return map(lambda x: x['fname'], cur) def returnPrco(self, prcotype, printable=False): prcotype = _share_data(prcotype) if isinstance(self.prco[prcotype], tuple): sql = "SELECT name, version, release, epoch, flags " \ "FROM %s WHERE pkgKey = ?" % prcotype 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']), _share_data(ob['release']))) self.prco[prcotype].append(_share_data(prco_set)) return RpmBase.returnPrco(self, prcotype, printable) def _requires_with_pre(self): """returns requires with pre-require bit""" sql = "SELECT name, version, release, epoch, flags,pre " \ "FROM requires WHERE pkgKey = ?" cur = self._sql_MD('primary', sql, (self.pkgKey,)) requires = [] for ob in cur: pre = "0" if ob['pre'].lower() in ['TRUE', 1]: pre = "1" prco_set = (_share_data(ob['name']), _share_data(ob['flags']), (_share_data(ob['epoch']), _share_data(ob['version']), _share_data(ob['release'])), pre) requires.append(prco_set) return requires class YumSqlitePackageSack(yumRepo.YumPackageSack): """ Implementation of a PackageSack that uses sqlite cache instead of fully expanded metadata objects to provide information """ def __init__(self, packageClass): # Just init as usual and create a dict to hold the databases yumRepo.YumPackageSack.__init__(self, packageClass) self.primarydb = {} self.filelistsdb = {} self.otherdb = {} self.excludes = {} # of [repo] => {} of pkgId's => 1 self._excludes = set() # of (repo, pkgKey) self._exclude_whitelist = set() # of (repo, pkgKey) self._all_excludes = {} self._search_cache = { 'provides' : { }, 'requires' : { }, } self._key2pkg = {} self._pkgname2pkgkeys = {} self._pkgtup2pkgs = {} self._pkgnames_loaded = set() self._pkgmatch_fails = set() self._provmatch_fails = set() self._arch_allowed = None self._pkgExcluder = [] self._pkgExcludeIds = {} self._pkgobjlist_dirty = False @catchSqliteException def _sql_MD(self, MD, repo, sql, *args): """ Exec SQL against an MD of the repo, return a cursor. """ cache = getattr(self, MD + 'db')[repo] cur = cache.cursor() executeSQL(cur, sql, *args) return cur def _sql_MD_pkg_num(self, MD, repo): """ Give a count of pkgIds in the given repo DB """ sql = "SELECT count(pkgId) FROM packages" return self._sql_MD('primary', repo, sql).fetchone()[0] def _clean_pkgobjlist(self): """ If the pkgobjlist is dirty (possible pkgs on it which are excluded) then clean it, and return the clean list. """ assert hasattr(self, 'pkgobjlist') if self._pkgobjlist_dirty: pol = filter(lambda x: not self._pkgExcluded(x), self.pkgobjlist) self.pkgobjlist = pol self._pkgobjlist_dirty = False return self.pkgobjlist def __len__(self): # First check if everything is excluded all_excluded = True for (repo, cache) in self.primarydb.items(): if repo not in self._all_excludes: all_excluded = False break if all_excluded: return 0 if hasattr(self, 'pkgobjlist'): return len(self._clean_pkgobjlist()) exclude_num = 0 for repo in self.excludes: exclude_num += len(self.excludes[repo]) pkg_num = 0 for repo in self.primarydb: pkg_num += self._sql_MD_pkg_num('primary', repo) return pkg_num - exclude_num def dropCachedData(self): if hasattr(self, '_memoize_requires'): del self._memoize_requires if hasattr(self, '_memoize_provides'): del self._memoize_provides if hasattr(self, 'pkgobjlist'): del self.pkgobjlist self._pkgobjlist_dirty = False self._key2pkg = {} self._pkgname2pkgkeys = {} self._pkgnames_loaded = set() self._pkgmatch_fails = set() self._provmatch_fails = set() self._pkgtup2pkgs = {} self._search_cache = { 'provides' : { }, 'requires' : { }, } misc.unshare_data() @catchSqliteException def close(self): self.dropCachedData() for dataobj in self.primarydb.values() + \ self.filelistsdb.values() + \ self.otherdb.values(): dataobj.close() self.primarydb = {} self.filelistsdb = {} self.otherdb = {} self.excludes = {} self._excludes = set() self._exclude_whitelist = set() self._all_excludes = {} self._pkgExcluder = [] self._pkgExcludeIds = {} self._pkgobjlist_dirty = False yumRepo.YumPackageSack.close(self) def buildIndexes(self): # We don't need to play with returnPackages() caching as it handles # additions to excludes after the cache is built. pass def _checkIndexes(self, failure='error'): return def _delPackageRK(self, repo, pkgKey): ''' Exclude a package so that _pkgExcluded*() knows it's gone. Note that this doesn't update self.exclude. ''' self._excludes.add((repo, pkgKey)) # Don't keep references around, just wastes memory. if repo in self._key2pkg: po = self._key2pkg[repo].pop(pkgKey, None) if po is not None: # Will also be in the pkgtup2pkgs cache... pos = self._pkgtup2pkgs[po.pkgtup] pos = filter(lambda x: id(x) == id(po), pos) self._pkgtup2pkgs[po.pkgtup] = pos # Remove a package # 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 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: self._exclude_whitelist.discard((obj.repo, obj.pkgKey)) self._delPackageRK(obj.repo, obj.pkgKey) self._pkgobjlist_dirty = True def _delAllPackages(self, repo): """ Exclude all packages from the repo. """ self._all_excludes[repo] = True if repo in self.excludes: del self.excludes[repo] if repo in self._key2pkg: del self._key2pkg[repo] if repo in self._pkgname2pkgkeys: del self._pkgname2pkgkeys[repo] def _excluded(self, repo, pkgId): if repo in self._all_excludes: return True if repo in self.excludes and pkgId in self.excludes[repo]: return True return False def _pkgKeyExcluded(self, repo, pkgKey): if self._all_excludes and repo in self._all_excludes: return True return self._excludes and (repo, pkgKey) in self._excludes def _pkgExcludedRKNEVRA(self, repo,pkgKey, n,e,v,r,a): ''' Main function to use for "can we use this package" question. . Tests repo against allowed repos. . Tests pkgKey against allowed packages. . Tests arch against allowed arches. . Tests addPackageExcluder() calls. ''' if self._exclude_whitelist and (repo,pkgKey) in self._exclude_whitelist: return False if self._pkgKeyExcluded(repo, pkgKey): return True if self._arch_allowed is not None and a not in self._arch_allowed: self._delPackageRK(repo, pkgKey) return True if not self._pkgExcluder: return False data = {'n' : n.lower(), 'pkgtup' : (n, a, e, v, r), 'marked' : False} e = e.lower() v = v.lower() r = r.lower() a = a.lower() for repoid, excluder, match, regexp_match in self._pkgExcluder: if repoid is not None and repoid != repo.id: continue exSPLIT = excluder.split('.', 1) if len(exSPLIT) != 2: assert False, 'Bad excluder: ' + excluder continue exT, exM = exSPLIT if False: pass elif exT == 'exclude': if _excluder_match(exM, match, regexp_match, data, e,v,r,a): self._delPackageRK(repo, pkgKey) return True elif exT == 'include': if _excluder_match(exM, match, regexp_match, data, e,v,r,a): break elif exT == 'mark': if data['marked']: pass # Speed opt. don't do matches we don't need to do. elif _excluder_match(exM, match, regexp_match, data, e,v,r,a): data['marked'] = True elif exT == 'wash': if not data['marked']: pass # Speed opt. don't do matches we don't need to do. elif _excluder_match(exM, match, regexp_match, data, e,v,r,a): data['marked'] = False else: assert False, 'Bad excluder: ' + excluder self._exclude_whitelist.add((repo, pkgKey)) return False def _pkgExcludedRKT(self, repo,pkgKey, pkgtup): ''' Helper function to call _pkgExcludedRKNEVRA. Takes a repo, pkgKey and a package tuple''' (n,a,e,v,r) = pkgtup return self._pkgExcludedRKNEVRA(repo, pkgKey, n,e,v,r,a) def _pkgExcludedRKD(self, repo,pkgKey, data): ''' Helper function to call _pkgExcludedRKNEVRA. Takes a repo, pkgKey and a dict of package data''' (n,a,e,v,r) = (data['name'], data['arch'], data['epoch'], data['version'], data['release']) return self._pkgExcludedRKNEVRA(repo, pkgKey, n,e,v,r,a) def _pkgExcluded(self, po): ''' Helper function to call _pkgExcludedRKNEVRA. Takes a package object. ''' return self._pkgExcludedRKT(po.repo, po.pkgKey, po.pkgtup) def addPackageExcluder(self, repoid, excluderid, excluder, *args): """ Add an "excluder" for all packages in the repo/sack. Can basically do anything based on nevra, changes lots of exclude decisions from "preload package; test; delPackage" into "load excluder". Excluderid is used so the caller doesn't have to track "have I loaded the excluder for this repo.", it's probably only useful when repoid is None ... if it turns out utterly worthless then it's still not a huge wart. """ if excluderid is not None and excluderid in self._pkgExcludeIds: return match = None regexp_match = None if False: pass elif excluder.endswith('.eq'): assert len(args) == 1 match = args[0].lower() elif excluder.endswith('.in'): assert len(args) == 1 match = args[0] elif excluder.endswith('.match'): assert len(args) == 1 match = args[0].lower() if misc.re_glob(match): regexp_match = re.compile(fnmatch.translate(match)).match elif excluder.endswith('.*'): assert len(args) == 0 elif excluder.endswith('.marked'): assert len(args) == 0 elif excluder.endswith('.washed'): assert len(args) == 0 # Really need to do this, need to cleanup pkgExcluder first though # or it does nothing. # self._pkgobjlist_dirty = True self._pkgExcluder.append((repoid, excluder, match, regexp_match)) if excluderid is not None: self._pkgExcludeIds[excluderid] = len(self._pkgExcluder) 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 if repo not in self._key2pkg: self._key2pkg[repo] = {} self._pkgname2pkgkeys[repo] = {} if pkgKey not in self._key2pkg[repo]: sql = "SELECT pkgKey, pkgId, name, epoch, version, release, arch " \ "FROM packages WHERE pkgKey = ?" data = self._sql_MD('primary', repo, sql, (pkgKey,)).fetchone() if data is None: msg = "pkgKey %s doesn't exist in repo %s" % (pkgKey, repo) raise Errors.RepoError, msg if exclude and self._pkgExcludedRKD(repo, pkgKey, data): return None po = self.pc(repo, data) self._key2pkg[repo][pkgKey] = po 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): return None if repo not in self._key2pkg: self._key2pkg[repo] = {} self._pkgname2pkgkeys[repo] = {} if data['pkgKey'] not in self._key2pkg.get(repo, {}): po = self.pc(repo, data) self._key2pkg[repo][pkgKey] = po self._pkgtup2pkgs.setdefault(po.pkgtup, []).append(po) pkgkeys = self._pkgname2pkgkeys[repo].setdefault(data['name'], []) pkgkeys.append(pkgKey) return self._key2pkg[repo][data['pkgKey']] def _pkgtupByKeyData(self, repo, pkgKey, data): """ Like _packageByKeyData() but we don't create the package, we just return the pkgtup. """ if self._pkgExcludedRKD(repo, pkgKey, data): return None prepo = self._key2pkg.get(repo) if prepo is None: self._key2pkg[repo] = {} self._pkgname2pkgkeys[repo] = {} elif data['pkgKey'] in prepo: return prepo[data['pkgKey']].pkgtup return (data['name'], data['arch'], data['epoch'], data['version'], data['release']) def _packagesByName(self, pkgname): """ Load all pkgnames from cache, with a given name. """ ret = [] for repo in self.primarydb: pkgkeys = self._pkgname2pkgkeys.get(repo, {}).get(pkgname, []) if not pkgkeys: continue for pkgkey in pkgkeys: pkg = self._packageByKey(repo, pkgkey) if pkg is None: continue ret.append(pkg) return ret def addDict(self, repo, datatype, dataobj, callback=None): if repo in self.added: if datatype in self.added[repo]: return else: self.added[repo] = [] if repo not in self.excludes: self.excludes[repo] = {} if dataobj is None: raise Errors.RepoError, "Tried to add None %s to %s" % (datatype, repo) if datatype == 'metadata': self.primarydb[repo] = dataobj elif datatype == 'filelists': self.filelistsdb[repo] = dataobj elif datatype == 'otherdata': self.otherdb[repo] = dataobj else: # We can not handle this yet... raise Errors.RepoError, "Sorry sqlite does not support %s in %s" % (datatype, repo) self.added[repo].append(datatype) # Get all files for a certain pkgId from the filelists.xml metadata # Search packages that either provide something containing name # or provide a file containing name def searchAll(self,name, query_type='like'): # this function is just silly and it reduces down to just this return self.searchPrco(name, 'provides') def _sql_pkgKey2po(self, repo, cur, pkgs=None, have_data=False): """ Takes a cursor and maps the pkgKey rows into a list of packages. """ if pkgs is None: pkgs = [] for ob in cur: if have_data: pkg = self._packageByKeyData(repo, ob['pkgKey'], ob) else: pkg = self._packageByKey(repo, ob['pkgKey']) if pkg is None: continue pkgs.append(pkg) return pkgs def _skip_all(self): """ Are we going to skip every package in all our repos? """ skip_all = True for repo in self.added: if repo not in self._all_excludes: skip_all = False break return skip_all @catchSqliteException def _search_primary_files(self, name): querytype = 'glob' name = os.path.normpath(name) if not misc.re_glob(name): querytype = '=' results = [] for (rep,cache) in self.primarydb.items(): if rep in self._all_excludes: continue cur = cache.cursor() executeSQL(cur, "select DISTINCT pkgKey from files where name %s ?" % querytype, (name,)) self._sql_pkgKey2po(rep, cur, results) 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""" if self._skip_all(): return [] # optimizations: # if it is not glob, then see if it is in the primary.xml filelists, # if so, just use those for the lookup glob = True file_glob = True querytype = 'glob' name = os.path.normpath(name) dirname = os.path.dirname(name) filename = os.path.basename(name) if strict or not misc.re_glob(name): glob = False file_glob = False querytype = '=' elif not misc.re_glob(filename): file_glob = False # Take off the trailing slash to act like rpm if name[-1] == '/': name = name[:-1] pkgs = [] # ultra simple optimization if misc.re_primary_filename(name): if not misc.re_glob(dirname): # is the dirname a glob? return self._search_primary_files(name) if len(self.filelistsdb) == 0: # grab repo object from primarydb and force filelists population in this sack using repo # sack.populate(repo, mdtype, callback, cacheonly) for (repo,cache) in self.primarydb.items(): if repo in self._all_excludes: continue self.populate(repo, mdtype='filelists') # Check to make sure the DB data matches, this should always pass but # we've had weird errors. So check it for a bit. for repo in self.filelistsdb: # Only check each repo. once ... the libguestfs check :). if hasattr(repo, '_checked_filelists_pkgs'): continue pri_pkgs = self._sql_MD_pkg_num('primary', repo) fil_pkgs = self._sql_MD_pkg_num('filelists', repo) if pri_pkgs != fil_pkgs: raise Errors.RepoError repo._checked_filelists_pkgs = True sql_params = [] dirname_check = "" if not glob: (pattern, esc) = sql_esc(filename) dirname_check = "dirname = ? and filenames LIKE ? %s and " % esc sql_params.append(dirname) sql_params.append('%' + pattern + '%') elif not file_glob: (pattern, esc) = sql_esc(filename) dirname_check = "dirname GLOB ? and filenames LIKE ? %s and " % esc sql_params.append(dirname) sql_params.append('%' + pattern + '%') elif filename == '*': # We only care about matching on dirname... for (rep,cache) in self.filelistsdb.items(): if rep in self._all_excludes: continue cur = cache.cursor() sql_params.append(dirname) executeSQL(cur, """SELECT pkgKey FROM filelist WHERE dirname %s ?""" % (querytype,), sql_params) self._sql_pkgKey2po(rep, cur, pkgs) return misc.unique(pkgs) for (rep,cache) in self.filelistsdb.items(): if rep in self._all_excludes: continue cur = cache.cursor() # grab the entries that are a single file in the # filenames section, use sqlites globbing if it is a glob executeSQL(cur, "select pkgKey from filelist where \ %s length(filetypes) = 1 and \ dirname || ? || filenames \ %s ?" % (dirname_check, querytype), sql_params + ['/',name]) self._sql_pkgKey2po(rep, cur, pkgs) if file_glob: name_re = re.compile(fnmatch.translate(name)) def filelist_globber(sql_dirname, sql_filenames): # Note: Can't return bool, because sqlite doesn't like it in # weird ways. Test: # install '*bin/autoheader' # provides /lib/security/pam_loginuid.so files = sql_filenames.split('/') if not file_glob: return int(filename in files) fns = map(lambda f: '%s/%s' % (sql_dirname, f), files) for match in fns: if name_re.match(match): return 1 return 0 cache.create_function("filelist_globber", 2, filelist_globber) # for all the ones where filenames is multiple files, # make the files up whole and use python's globbing method executeSQL(cur, "select pkgKey from filelist where \ %s length(filetypes) > 1 \ and filelist_globber(dirname,filenames)" % dirname_check, sql_params) self._sql_pkgKey2po(rep, cur, pkgs) pkgs = misc.unique(pkgs) return pkgs @catchSqliteException def searchPrimaryFields(self, fields, searchstring): """search arbitrary fields from the primarydb for a string""" if self._skip_all(): return [] result = [] if len(fields) < 1: return result searchstring = searchstring.replace("'", "''") (searchstring, esc) = sql_esc(searchstring) sql = "select DISTINCT pkgKey from packages where %s like '%%%s%%'%s " % (fields[0], searchstring, esc) for f in fields[1:]: sql = "%s or %s like '%%%s%%'%s " % (sql, f, searchstring, esc) for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, sql) self._sql_pkgKey2po(rep, cur, result) return result @catchSqliteException def searchPrimaryFieldsMultipleStrings(self, fields, searchstrings): """search arbitrary fields from the primarydb for a multiple strings return packages, number of items it matched as a list of tuples""" if self._skip_all(): return [] result = [] # (pkg, num matches) if not fields or not searchstrings: return result # NOTE: I can't see any reason not to use this all the time, speed # comparison shows them as basically equal. if len(searchstrings) > (constants.PATTERNS_MAX / len(fields)): tot = {} for searchstring in searchstrings: matches = self.searchPrimaryFields(fields, searchstring) for po in matches: tot[po] = tot.get(po, 0) + 1 for po in sorted(tot, key=operator.itemgetter, reverse=True): result.append((po, tot[po])) return result unionstring = "select pkgKey, SUM(cumul) AS total from ( " endunionstring = ")GROUP BY pkgKey ORDER BY total DESC" #SELECT pkgkey, SUM(cumul) AS total FROM (SELECT pkgkey, 1 #AS cumul FROM packages WHERE description LIKE '%foo%' UNION ... ) #GROUP BY pkgkey ORDER BY total DESC; selects = [] for s in searchstrings: s = s.replace("'", "''") (s, esc) = sql_esc(s) sql="select pkgKey,1 AS cumul from packages where %s like '%%%s%%'%s " % (fields[0], s, esc) for f in fields[1:]: sql = "%s or %s like '%%%s%%'%s " % (sql, f, s, esc) selects.append(sql) totalstring = unionstring + " UNION ALL ".join(selects) + endunionstring for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, totalstring) for ob in cur: pkg = self._packageByKey(rep, ob['pkgKey']) if pkg is None: continue result.append((pkg, ob['total'])) return result @catchSqliteException def returnObsoletes(self, newest=False): if self._skip_all(): return {} if newest: raise NotImplementedError() obsoletes = {} for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, "select packages.name as name,\ packages.pkgKey as pkgKey,\ packages.arch as arch, packages.epoch as epoch,\ packages.release as release, packages.version as version,\ obsoletes.name as oname, obsoletes.epoch as oepoch,\ obsoletes.release as orelease, obsoletes.version as oversion,\ obsoletes.flags as oflags\ from obsoletes,packages where obsoletes.pkgKey = packages.pkgKey") for ob in cur: key = ( _share_data(ob['name']), _share_data(ob['arch']), _share_data(ob['epoch']), _share_data(ob['version']), _share_data(ob['release'])) if self._pkgExcludedRKT(rep, ob['pkgKey'], key): continue (n,f,e,v,r) = ( _share_data(ob['oname']), _share_data(ob['oflags']), _share_data(ob['oepoch']), _share_data(ob['oversion']), _share_data(ob['orelease'])) key = _share_data(key) val = _share_data((n,f,(e,v,r))) obsoletes.setdefault(key,[]).append(val) return obsoletes @catchSqliteException def getPackageDetails(self,pkgId): for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, "select * from packages where pkgId = ?", (pkgId,)) for ob in cur: return ob @catchSqliteException def _getListofPackageDetails(self, pkgId_list): pkgs = [] if len(pkgId_list) == 0: return pkgs pkgid_query = str(tuple(pkgId_list)) for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, "select * from packages where pkgId in %s" %(pkgid_query,)) for ob in cur: pkgs.append(ob) return pkgs @catchSqliteException def _search_get_memoize(self, prcotype): if not hasattr(self, '_memoize_' + prcotype): memoize = {} for (rep,cache) in self.primarydb.items(): if rep in self._all_excludes: continue cur = cache.cursor() executeSQL(cur, "select * from %s" % prcotype) for x in cur: val = (_share_data(x['name']), _share_data(x['flags']), (_share_data(x['epoch']), _share_data(x['version']), _share_data(x['release']))) val = _share_data(val) key = (rep, val[0]) pkgkey = _share_data(x['pkgKey']) val = (pkgkey, val) memoize.setdefault(key, []).append(val) setattr(self, '_memoize_' + prcotype, memoize) return getattr(self, '_memoize_' + prcotype) @catchSqliteException def _search(self, prcotype, name, flags, version): if self._skip_all(): return {} name = to_unicode(name) if flags == 0: flags = None if type(version) in (str, type(None), unicode): req = (name, flags, rpmUtils.miscutils.stringToVersion( version)) elif type(version) in (tuple, list): # would this ever be a list? req = (name, flags, version) prcotype = _share_data(prcotype) req = _share_data(req) if req in self._search_cache[prcotype]: return self._search_cache[prcotype][req] result = { } # Requires is the biggest hit, pre-loading provides actually hurts # NOTE: Disabling atm. ... small install/updates get a significant hit. # And even large updates take a hit with the memoize path, maybe we # fixed something with later change? ... maybe I was on crack? # Speed seems to depend on _search_cache. if True: # prcotype != 'requires': primarydb_items = self.primarydb.items() preload = False else: primarydb_items = [] preload = True memoize = self._search_get_memoize(prcotype) for (rep,cache) in self.primarydb.items(): if rep in self._all_excludes: continue tmp = {} for x in memoize.get((rep, name), []): pkgkey, val = x if rpmUtils.miscutils.rangeCompare(req, val): tmp.setdefault(pkgkey, []).append(val) for pkgKey, hits in tmp.iteritems(): pkg = self._packageByKey(rep, pkgKey) if pkg is None: continue result[pkg] = hits for (rep,cache) in primarydb_items: if rep in self._all_excludes: continue cur = cache.cursor() executeSQL(cur, "select * from %s where name=?" % prcotype, (name,)) tmp = { } for x in cur: val = (_share_data(x['name']), _share_data(x['flags']), (_share_data(x['epoch']), _share_data(x['version']), _share_data(x['release']))) val = _share_data(val) if rpmUtils.miscutils.rangeCompare(req, val): tmp.setdefault(x['pkgKey'], []).append(val) for pkgKey, hits in tmp.iteritems(): pkg = self._packageByKey(rep, pkgKey) if pkg is None: continue result[pkg] = hits if prcotype != 'provides' or name[0] != '/': if not preload: self._search_cache[prcotype][req] = result return result if not misc.re_primary_filename(name): # 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)] if not preload: self._search_cache[prcotype][req] = result return result # If it is a filename, search the primary.xml file info for pkg in self._search_primary_files(name): result[pkg] = [(name, None, None)] self._search_cache[prcotype][req] = result return result def getProvides(self, name, flags=None, version=(None, None, None)): return self._search("provides", name, flags, version) def getRequires(self, name, flags=None, version=(None, None, None)): return self._search("requires", name, flags, version) @catchSqliteException def searchNames(self, names=[], return_pkgtups=False): """return a list of packages matching any of the given names. This is only a match on package name, nothing else""" if self._skip_all(): return [] loaded_all_names = hasattr(self, 'pkgobjlist') returnList = [] 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: names.append(pkgname) if return_pkgtups: returnList = [pkg.pkgtup for pkg in returnList] if not names: return returnList max_entries = constants.PATTERNS_INDEXED_MAX if len(names) > max_entries: # Unique is done at user_names time, above. for names in seq_max_split(names, max_entries): returnList.extend(self.searchNames(names, return_pkgtups)) return returnList pat_sqls = [] qsql = """select pkgId,pkgKey,name,epoch,version,release,arch from packages where """ for name in names: pat_sqls.append("name = ?") qsql = qsql + " OR ".join(pat_sqls) for (repo, cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, qsql, names) if return_pkgtups: for ob in cur: pkgtup = self._pkgtupByKeyData(repo, ob['pkgKey'], ob) if pkgtup is None: continue returnList.append(pkgtup) continue self._sql_pkgKey2po(repo, cur, returnList, have_data=True) if not return_pkgtups: # Mark all the processed pkgnames as fully loaded self._pkgnames_loaded.update([name for name in names]) return returnList @catchSqliteException def searchPrco(self, name, prcotype): """return list of packages matching name and prcotype """ # we take name to be a string of some kind # we parse the string to see if it is a foo > 1.1 or if it is just 'foo' # or what - so we can answer correctly if self._skip_all(): return [] try: (n,f,(e,v,r)) = misc.string_to_prco_tuple(name) except Errors.MiscError, e: raise Errors.PackageSackError, to_unicode(e) # 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 glob = True querytype = 'glob' if not misc.re_glob(n): glob = False querytype = '=' basic_results = [] results = [] for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, "select DISTINCT pkgKey from %s where name %s ?" % (prcotype,querytype), (n,)) self._sql_pkgKey2po(rep, cur, basic_results) # now we have a list of items matching just the name - let's match them out for po in basic_results: if misc.re_filename(n) and v is None: # file dep add all matches to the results results.append(po) continue if not glob: 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 results.append(po) # If it's not a provides or a filename, we are done if prcotype != "provides": return results if not misc.re_filename(n): return results # If it is a filename, search the primary.xml file info results.extend(self._search_primary_files(n)) # 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) def searchProvides(self, name): """return list of packages providing name (any evr and flag)""" 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)""" return self.searchPrco(name, "requires") def searchObsoletes(self, name): """return list of packages obsoleting name (any evr and flag)""" return self.searchPrco(name, "obsoletes") def searchConflicts(self, name): """return list of packages conflicting with name (any evr and flag)""" return self.searchPrco(name, "conflicts") def db2class(self, db, nevra_only=False): print 'die die die die die db2class' class tmpObject: pass y = tmpObject() y.nevra = (db['name'],db['epoch'],db['version'],db['release'],db['arch']) y.sack = self y.pkgId = db['pkgId'] if nevra_only: return y y.hdrange = {'start': db['rpm_header_start'],'end': db['rpm_header_end']} y.location = {'href': db['location_href'],'value': '', 'base': db['location_base']} y.checksum = {'pkgid': 'YES','type': db['checksum_type'], 'value': db['pkgId'] } y.time = {'build': db['time_build'], 'file': db['time_file'] } y.size = {'package': db['size_package'], 'archive': db['size_archive'], 'installed': db['size_installed'] } y.info = {'summary': db['summary'], 'description': db['description'], 'packager': db['rpm_packager'], 'group': db['rpm_group'], 'buildhost': db['rpm_buildhost'], 'sourcerpm': db['rpm_sourcerpm'], 'url': db['url'], 'vendor': db['rpm_vendor'], 'license': db['rpm_license'] } return y @catchSqliteException def returnNewestByNameArch(self, naTup=None, patterns=None, ignore_case=False): # If naTup is set do it from the database otherwise use our parent's # returnNewestByNameArch if (not naTup): return yumRepo.YumPackageSack.returnNewestByNameArch(self, naTup, patterns, ignore_case) # First find all packages that fulfill naTup allpkg = [] for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, "select pkgId,pkgKey,name,epoch,version,release,arch from packages where name=? and arch=?", naTup) self._sql_pkgKey2po(rep, cur, allpkg, have_data=True) # if we've got zilch then raise if not allpkg: raise Errors.PackageSackError, 'No Package Matching %s.%s' % naTup return misc.newestInList(allpkg) @catchSqliteException 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. """ # If name is set do it from the database otherwise use our parent's # returnNewestByName if self._skip_all(): return [] if (not name): return yumRepo.YumPackageSack.returnNewestByName(self, name, patterns, ignore_case) # First find all packages that fulfill name allpkg = [] for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, "select pkgId,pkgKey,name,epoch,version,release,arch from packages where name=?", (name,)) self._sql_pkgKey2po(rep, cur, allpkg, have_data=True) # if we've got zilch then raise if not allpkg: raise Errors.PackageSackError, 'No Package Matching %s' % name return misc.newestInList(allpkg) # Do what packages.matchPackageNames does, but query the DB directly @catchSqliteException def matchPackageNames(self, pkgspecs): if self._skip_all(): return [], [], [] matched = [] exactmatch = [] unmatched = list(pkgspecs) for p in pkgspecs: if misc.re_glob(p): query = PARSE_QUERY % ({ "op": "glob", "q": p }) matchres = matched else: query = PARSE_QUERY % ({ "op": "=", "q": p }) matchres = exactmatch for (rep, db) in self.primarydb.items(): cur = db.cursor() executeSQL(cur, query) pmatches = self._sql_pkgKey2po(rep, cur) if len(pmatches): unmatched.remove(p) matchres.extend(pmatches) exactmatch = misc.unique(exactmatch) matched = misc.unique(matched) unmatched = misc.unique(unmatched) return exactmatch, matched, unmatched def _setupPkgObjList(self, repoid=None, patterns=None, ignore_case=False): """Setup need_full and patterns for _yieldSQLDataList, also see if we can get away with just using searchNames(). """ if patterns is None: patterns = [] fields = ['name', 'sql_nameArch', 'sql_nameVerRelArch', 'sql_nameVer', 'sql_nameVerRel', 'sql_envra', 'sql_nevra'] need_full = False for pat in patterns: if (misc.re_full_search_needed(pat) and (ignore_case or pat not in self._pkgnames_loaded)): need_full = True break pat_max = constants.PATTERNS_MAX if not need_full: fields = ['name'] pat_max = constants.PATTERNS_INDEXED_MAX if len(patterns) > pat_max: patterns = [] if ignore_case: patterns = sql_esc_glob(patterns) else: tmp = [] need_glob = False for pat in patterns: if misc.re_glob(pat): tmp.append((pat, 'glob')) need_glob = True else: tmp.append((pat, '=')) if not need_full and not need_glob and patterns: return (need_full, patterns, fields, True) patterns = tmp return (need_full, patterns, fields, False) @catchSqliteException def _yieldSQLDataList(self, repoid, patterns, fields, ignore_case): """Yields all the package data for the given params. Excludes are done at this stage. """ pat_sqls = [] pat_data = [] for (pattern, rest) in patterns: if not ignore_case and pattern in self._pkgmatch_fails: continue 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: return if pat_sqls: qsql = _FULL_PARSE_QUERY_BEG + " OR ".join(pat_sqls) else: qsql = """select pkgId, pkgKey, name,epoch,version,release,arch from packages""" for (repo,cache) in self.primarydb.items(): if (repoid == None or repoid == repo.id): cur = cache.cursor() executeSQL(cur, qsql, pat_data) for x in cur: yield (repo, x) def _buildPkgObjList(self, repoid=None, patterns=None, ignore_case=False): """Builds a list of packages, only containing nevra information. Excludes are done at this stage. """ returnList = [] data = self._setupPkgObjList(repoid, patterns, ignore_case) (need_full, patterns, fields, names) = data if names: return self.searchNames(patterns) 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 returnList.append(po) if not patterns and repoid is None: self.pkgobjlist = returnList self._pkgnames_loaded = set() # Save memory 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 def returnPackages(self, repoid=None, patterns=None, ignore_case=False): """Returns a list of packages, only containing nevra information. The packages are processed for excludes. Note that the packages are always filtered to those matching the patterns/case. """ if self._skip_all(): return [] internal_pkgoblist = hasattr(self, 'pkgobjlist') if internal_pkgoblist: pkgobjlist = self._clean_pkgobjlist() else: pkgobjlist = self._buildPkgObjList(repoid, patterns, ignore_case) internal_pkgoblist = hasattr(self, 'pkgobjlist') if internal_pkgoblist and patterns: internal_pkgoblist = False pkgobjlist = parsePackages(pkgobjlist, patterns, not ignore_case, unique='repo-pkgkey') pkgobjlist = pkgobjlist[0] + pkgobjlist[1] # Can't unexclude things, and new excludes are done above... if repoid is None: if internal_pkgoblist: pkgobjlist = pkgobjlist[:] return pkgobjlist returnList = [] for po in pkgobjlist: if repoid != po.repoid: continue returnList.append(po) return returnList def simplePkgList(self, patterns=None, ignore_case=False): """Returns a list of pkg tuples (n, a, e, v, r), optionally from a single repoid. Note that the packages are always filtered to those matching the patterns/case. """ if self._skip_all(): return [] internal_pkgoblist = hasattr(self, 'pkgobjlist') if internal_pkgoblist: return yumRepo.YumPackageSack.simplePkgList(self, patterns, ignore_case) repoid = None returnList = [] # Haven't loaded everything, so _just_ get the pkgtups... data = self._setupPkgObjList(repoid, patterns, ignore_case) (need_full, patterns, fields, names) = data if names: return [pkg.pkgtup for pkg in self.searchNames(patterns)] for (repo, x) in self._yieldSQLDataList(repoid, patterns, fields, ignore_case): # NOTE: Can't unexclude things... pkgtup = self._pkgtupByKeyData(repo, x['pkgKey'], x) if pkgtup is None: continue returnList.append(pkgtup) return returnList @catchSqliteException def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None): """return list of pkgobjects matching the nevra requested""" if self._skip_all(): return [] returnList = [] if name: # Almost always true... for pkg in self.searchNames(names=[name]): match = True for (col, var) in [('epoch', epoch), ('version', ver), ('arch', arch), ('release', rel)]: if var and getattr(pkg, col) != var: match = False break if match: returnList.append(pkg) return returnList # make sure some dumbass didn't pass us NOTHING to search on empty = True for arg in (name, epoch, ver, rel, arch): if arg: empty = False if empty: return returnList # make up our execute string q = "select pkgId,pkgKey,name,epoch,version,release,arch from packages WHERE" for (col, var) in [('name', name), ('epoch', epoch), ('version', ver), ('arch', arch), ('release', rel)]: if var: if q[-5:] != 'WHERE': q = q + ' AND %s = "%s"' % (col, var) else: q = q + ' %s = "%s"' % (col, var) # Search all repositories for (rep,cache) in self.primarydb.items(): cur = cache.cursor() executeSQL(cur, q) self._sql_pkgKey2po(rep, cur, returnList, have_data=True) return returnList @catchSqliteException def excludeArchs(self, archlist): """excludes incompatible arches - archlist is a list of compat arches""" if self._arch_allowed is None: self._arch_allowed = set(archlist) else: self._arch_allowed = self._arch_allowed.intersection(archlist) sarchlist = map(lambda x: "'%s'" % x , archlist) arch_query = ",".join(sarchlist) for (rep, cache) in self.primarydb.items(): cur = cache.cursor() # This is a minor hack opt. for source repos. ... if they are # enabled normally, we don't want to exclude each package so we # check it and exclude the entire thing. if not rep.id.endswith("-source") or 'src' in self._arch_allowed: continue has_arch = False executeSQL(cur, "SELECT DISTINCT arch FROM packages") for row in cur: if row[0] in archlist: has_arch = True break if not has_arch: self._delAllPackages(rep) return # Simple helper functions # Return a string representing filenamelist (filenames can not contain /) def encodefilenamelist(filenamelist): return '/'.join(filenamelist) # Return a list representing filestring (filenames can not contain /) def decodefilenamelist(filenamestring): filenamestring = filenamestring.replace('//', '/') return filenamestring.split('/') # Return a string representing filetypeslist # filetypes should be file, dir or ghost def encodefiletypelist(filetypelist): result = '' ft2string = {'file': 'f','dir': 'd','ghost': 'g'} for x in filetypelist: result += ft2string[x] return result # Return a list representing filetypestring # filetypes should be file, dir or ghost def decodefiletypelist(filetypestring): string2ft = {'f':'file','d': 'dir','g': 'ghost'} return [string2ft[x] for x in filetypestring] # Query used by matchPackageNames # op is either '=' or 'like', q is the search term # Check against name, nameArch, nameVerRelArch, nameVer, nameVerRel, # envra, nevra PARSE_QUERY = """ select pkgKey from packages where name %(op)s '%(q)s' or name || '.' || arch %(op)s '%(q)s' or name || '-' || version %(op)s '%(q)s' or name || '-' || version || '-' || release %(op)s '%(q)s' or name || '-' || version || '-' || release || '.' || arch %(op)s '%(q)s' or epoch || ':' || name || '-' || version || '-' || release || '.' || arch %(op)s '%(q)s' or name || '-' || epoch || ':' || version || '-' || release || '.' || arch %(op)s '%(q)s' """ # This is roughly the same as above, and used by _buildPkgObjList(). # Use " to quote because we using ? ... and sqlutils.QmarkToPyformat gets # confused. _FULL_PARSE_QUERY_BEG = """ SELECT pkgId,pkgKey,name,epoch,version,release,arch, name || "." || arch AS sql_nameArch, name || "-" || version || "-" || release || "." || arch AS sql_nameVerRelArch, name || "-" || version AS sql_nameVer, name || "-" || version || "-" || release AS sql_nameVerRel, epoch || ":" || name || "-" || version || "-" || release || "." || arch AS sql_envra, name || "-" || epoch || ":" || version || "-" || release || "." || arch AS sql_nevra FROM packages WHERE """ yum-3.4.3/yum/config.py0000664000076400007640000011050411602434452013760 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2002 Duke University """ Configuration parser and default values for yum. """ _use_iniparse = True import os import sys import warnings import rpm import copy import urlparse import shlex from parser import ConfigPreProcessor, varReplace try: from iniparse import INIConfig from iniparse.compat import NoSectionError, NoOptionError, ParsingError from iniparse.compat import RawConfigParser as ConfigParser except ImportError: _use_iniparse = False if not _use_iniparse: from ConfigParser import NoSectionError, NoOptionError, ParsingError from ConfigParser import ConfigParser import rpmUtils.transaction import Errors import types from misc import get_uuid, read_in_items_from_dot_dir # Alter/patch these to change the default checking... __pkgs_gpgcheck_default__ = False __repo_gpgcheck_default__ = False class Option(object): ''' This class handles a single Yum configuration file option. Create subclasses for each type of supported configuration option. Python descriptor foo (__get__ and __set__) is used to make option definition easy and consise. ''' 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): '''Calculate the internal attribute name used to store option state in configuration instances. ''' self._attrname = '__opt%d' % id(self) def __get__(self, obj, objtype): '''Called when the option is read (via the descriptor protocol). @param obj: The configuration instance to modify. @param objtype: The type of the config instance (not used). @return: The parsed option value or the default value if the value wasn't set in the configuration file. ''' # xemacs highlighting hack: ' if obj is None: return self return getattr(obj, self._attrname, None) def __set__(self, obj, value): '''Called when the option is set (via the descriptor protocol). @param obj: The configuration instance to modify. @param value: The value to set the option to. @return: Nothing. ''' # Only try to parse if it's a string if isinstance(value, basestring): try: value = self.parse(value) except ValueError, e: # Add the field name onto the error raise ValueError('Error parsing "%s = %r": %s' % (self._optname, value, str(e))) setattr(obj, self._attrname, value) def setup(self, obj, name): '''Initialise the option for a config instance. This must be called before the option can be set or retrieved. @param obj: BaseConfig (or subclass) instance. @param name: Name of the option. ''' self._optname = name setattr(obj, self._attrname, copy.copy(self.default)) def clone(self): '''Return a safe copy of this Option instance ''' new = copy.copy(self) new._setattrname() return new def parse(self, s): '''Parse the string value to the Option's native value. @param s: Raw string value to parse. @return: Validated native value. Will raise ValueError if there was a problem parsing the string. Subclasses should override this. ''' return s def tostring(self, value): '''Convert the Option's native value to a string value. @param value: Native option value. @return: String representation of input. This does the opposite of the parse() method above. Subclasses should override this. ''' return str(value) def Inherit(option_obj): '''Clone an Option instance for the purposes of inheritance. The returned instance has all the same properties as the input Option and shares items such as the default value. Use this to avoid redefinition of reused options. @param option_obj: Option instance to inherit. @return: New Option instance inherited from the input. ''' new_option = option_obj.clone() new_option.inherit = True return new_option class ListOption(Option): """ An option containing a list of strings. """ def __init__(self, default=None, parse_default=False): if default is None: default = [] super(ListOption, self).__init__(default, parse_default) def parse(self, s): """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 """ # we need to allow for the '\n[whitespace]' continuation - easier # to sub the \n with a space and then read the lines s = s.replace('\n', ' ') s = s.replace(',', ' ') 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) class UrlOption(Option): ''' This option handles lists of URLs with validation of the URL scheme. ''' def __init__(self, default=None, schemes=('http', 'ftp', 'file', 'https'), allow_none=False): super(UrlOption, self).__init__(default) self.schemes = schemes self.allow_none = allow_none def parse(self, url): url = url.strip() # Handle the "_none_" special case if url.lower() == '_none_': if self.allow_none: return None else: raise ValueError('"_none_" is not a valid value') # Check that scheme is valid (s,b,p,q,f,o) = urlparse.urlparse(url) if s not in self.schemes: raise ValueError('URL must be %s not "%s"' % (self._schemelist(), s)) return url def _schemelist(self): '''Return a user friendly list of the allowed schemes ''' if len(self.schemes) < 1: return 'empty' elif len(self.schemes) == 1: return self.schemes[0] else: return '%s or %s' % (', '.join(self.schemes[:-1]), self.schemes[-1]) 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'), parse_default=False): super(UrlListOption, self).__init__(default, parse_default) # Hold a UrlOption instance to assist with parsing self._urloption = UrlOption(schemes=schemes) def parse(self, s): out = [] s = s.replace('\n', ' ') s = s.replace(',', ' ') items = [ item.replace(' ', '%20') for item in shlex.split(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 class IntOption(Option): """ An option representing an integer value. """ def __init__(self, default=None, range_min=None, range_max=None): super(IntOption, self).__init__(default) self._range_min = range_min self._range_max = range_max def parse(self, s): try: val = int(s) except (ValueError, TypeError), e: raise ValueError('invalid integer value') if self._range_max is not None and val > self._range_max: raise ValueError('out of range integer value') if self._range_min is not None and val < self._range_min: raise ValueError('out of range integer value') return val class PositiveIntOption(IntOption): """ An option representing a positive integer value, where 0 can have a special represention. """ def __init__(self, default=None, range_min=0, range_max=None, names_of_0=None): super(PositiveIntOption, self).__init__(default, range_min, range_max) self._names0 = names_of_0 def parse(self, s): if s in self._names0: return 0 return super(PositiveIntOption, self).parse(s) class SecondsOption(Option): """ An option representing an integer value of seconds, or a human readable variation specifying days, hours, minutes or seconds until something happens. Works like BytesOption. Note that due to historical president -1 means "never", so this accepts that and allows the word never too. Valid inputs: 100, 1.5m, 90s, 1.2d, 1d, 0xF, 0.1, -1, never Invalid inputs: -10, -0.1, 45.6Z, 1d6h, 1day, 1y Return value will always be an integer """ MULTS = {'d': 60 * 60 * 24, 'h' : 60 * 60, 'm' : 60, 's': 1} def parse(self, s): if len(s) < 1: raise ValueError("no value specified") if s == "-1" or s == "never": # Special cache timeout, meaning never return -1 if s[-1].isalpha(): n = s[:-1] unit = s[-1].lower() mult = self.MULTS.get(unit, None) if not mult: raise ValueError("unknown unit '%s'" % unit) else: n = s mult = 1 try: n = float(n) except (ValueError, TypeError), e: raise ValueError('invalid value') if n < 0: raise ValueError("seconds value may not be negative") return int(n * mult) class BoolOption(Option): """ An option representing a boolean value. The value can be one of 0, 1, yes, no, true, or false. """ def parse(self, s): s = s.lower() if s in ('0', 'no', 'false'): return False elif s in ('1', 'yes', 'true'): return True else: raise ValueError('invalid boolean value') def tostring(self, value): if value: return "1" else: return "0" class FloatOption(Option): """ An option representing a numeric float value. """ def parse(self, s): try: return float(s.strip()) except (ValueError, TypeError): raise ValueError('invalid float value') class SelectionOption(Option): '''Handles string values where only specific values are allowed ''' def __init__(self, default=None, allowed=(), mapper={}): super(SelectionOption, self).__init__(default) self._allowed = allowed self._mapper = mapper def parse(self, s): if s in self._mapper: s = self._mapper[s] if s not in self._allowed: raise ValueError('"%s" is not an allowed value' % s) return s class CaselessSelectionOption(SelectionOption): ''' Mainly for compat. with BoolOption, works like SelectionOption but lowers input case. ''' def parse(self, s): return super(CaselessSelectionOption, self).parse(s.lower()) class BytesOption(Option): """ An option representing a value in bytes. The value may be given in bytes, kilobytes, megabytes, or gigabytes. """ # Multipliers for unit symbols MULTS = { 'k': 1024, 'm': 1024*1024, 'g': 1024*1024*1024, } def parse(self, s): """Parse a friendly bandwidth option to bytes The input should be a string containing a (possibly floating point) number followed by an optional single character unit. Valid units are 'k', 'M', 'G'. Case is ignored. Valid inputs: 100, 123M, 45.6k, 12.4G, 100K, 786.3, 0 Invalid inputs: -10, -0.1, 45.6L, 123Mb Return value will always be an integer 1k = 1024 bytes. ValueError will be raised if the option couldn't be parsed. """ if len(s) < 1: raise ValueError("no value specified") if s[-1].isalpha(): n = s[:-1] unit = s[-1].lower() mult = self.MULTS.get(unit, None) if not mult: raise ValueError("unknown unit '%s'" % unit) else: n = s mult = 1 try: n = float(n) except ValueError: raise ValueError("couldn't convert '%s' to number" % n) if n < 0: raise ValueError("bytes value may not be negative") return int(n * mult) class ThrottleOption(BytesOption): """ An option representing a bandwidth throttle value. See ThrottleOption.parse for acceptable input values. """ def parse(self, s): """Get a throttle option. Input may either be a percentage or a "friendly bandwidth value" as accepted by the BytesOption. Valid inputs: 100, 50%, 80.5%, 123M, 45.6k, 12.4G, 100K, 786.0, 0 Invalid inputs: 100.1%, -4%, -500 Return value will be a int if a bandwidth value was specified or a float if a percentage was given. ValueError will be raised if input couldn't be parsed. """ if len(s) < 1: raise ValueError("no value specified") if s[-1] == '%': n = s[:-1] try: n = float(n) except ValueError: raise ValueError("couldn't convert '%s' to number" % n) if n < 0 or n > 100: raise ValueError("percentage is out of range") return n / 100.0 else: return BytesOption.parse(self, s) class BaseConfig(object): ''' Base class for storing configuration definitions. Subclass when creating your own definitons. ''' def __init__(self): self._section = None for name in self.iterkeys(): option = self.optionobj(name) option.setup(self, name) def __str__(self): out = [] out.append('[%s]' % self._section) for name, value in self.iteritems(): out.append('%s: %r' % (name, value)) return '\n'.join(out) def populate(self, parser, section, parent=None): '''Set option values from a INI file section. @param parser: ConfParser instance (or subclass) @param section: INI file section to read use. @param parent: Optional parent BaseConfig (or subclass) instance to use when doing option value inheritance. ''' self.cfg = parser self._section = section if parser.has_section(section): opts = set(parser.options(section)) else: opts = set() for name in self.iterkeys(): option = self.optionobj(name) value = None if name in opts: value = parser.get(section, name) else: # No matching option in this section, try inheriting if parent and option.inherit: value = getattr(parent, name) if value is not None: setattr(self, name, value) def optionobj(cls, name, exceptions=True): '''Return the Option instance for the given name ''' obj = getattr(cls, name, None) if isinstance(obj, Option): return obj elif exceptions: raise KeyError else: return None optionobj = classmethod(optionobj) def isoption(cls, name): '''Return True if the given name refers to a defined option ''' return cls.optionobj(name, exceptions=False) is not None isoption = classmethod(isoption) def iterkeys(self): '''Yield the names of all defined options in the instance. ''' for name in dir(self): if self.isoption(name): yield name def iteritems(self): '''Yield (name, value) pairs for every option in the instance. The value returned is the parsed, validated option value. ''' # Use dir() so that we see inherited options too for name in self.iterkeys(): yield (name, getattr(self, name)) def write(self, fileobj, section=None, always=()): '''Write out the configuration to a file-like object @param fileobj: File-like object to write to @param section: Section name to use. If not-specified the section name used during parsing will be used. @param always: A sequence of option names to always write out. Options not listed here will only be written out if they are at non-default values. Set to None to dump out all options. ''' # Write section heading if section is None: if self._section is None: raise ValueError("not populated, don't know section") section = self._section # Updated the ConfigParser with the changed values cfgOptions = self.cfg.options(section) for name,value in self.iteritems(): option = self.optionobj(name) if always is None or name in always or option.default != value or name in cfgOptions : self.cfg.set(section,name, option.tostring(value)) # write the updated ConfigParser to the fileobj. self.cfg.write(fileobj) def getConfigOption(self, option, default=None): warnings.warn('getConfigOption() will go away in a future version of Yum.\n' 'Please access option values as attributes or using getattr().', DeprecationWarning) if hasattr(self, option): return getattr(self, option) return default def setConfigOption(self, option, value): warnings.warn('setConfigOption() will go away in a future version of Yum.\n' 'Please set option values as attributes or using setattr().', DeprecationWarning) if hasattr(self, option): setattr(self, option, value) else: raise Errors.ConfigError, 'No such option %s' % option class StartupConf(BaseConfig): ''' Configuration option definitions for yum.conf's [main] section that are required early in the initialisation process or before the other [main] options can be parsed. ''' # xemacs highlighting hack: ' debuglevel = IntOption(2, 0, 10) errorlevel = IntOption(2, 0, 10) distroverpkg = Option('redhat-release') installroot = Option('/') config_file_path = Option('/etc/yum/yum.conf') plugins = BoolOption(False) pluginpath = ListOption(['/usr/share/yum-plugins', '/usr/lib/yum-plugins']) pluginconfpath = ListOption(['/etc/yum/pluginconf.d']) gaftonmode = BoolOption(False) syslog_ident = Option() syslog_facility = Option('LOG_USER') syslog_device = Option('/dev/log') persistdir = Option('/var/lib/yum') class YumConf(StartupConf): ''' Configuration option definitions for yum.conf\'s [main] section. Note: see also options inherited from StartupConf ''' retries = PositiveIntOption(10, names_of_0=[""]) recent = IntOption(7, range_min=0) cachedir = Option('/var/cache/yum') keepcache = BoolOption(True) logfile = Option('/var/log/yum.log') reposdir = ListOption(['/etc/yum/repos.d', '/etc/yum.repos.d']) commands = ListOption() exclude = ListOption() failovermethod = Option('roundrobin') proxy = UrlOption(schemes=('http', 'ftp', 'https'), allow_none=True) proxy_username = Option() proxy_password = Option() username = Option() password = Option() installonlypkgs = ListOption(['kernel', 'kernel-bigmem', 'kernel-enterprise','kernel-smp', 'kernel-modules', 'kernel-debug', 'kernel-unsupported', 'kernel-source', 'kernel-devel', 'kernel-PAE', 'kernel-PAE-debug']) # NOTE: If you set this to 2, then because it keeps the current kernel it # means if you ever install an "old" kernel it'll get rid of the newest one # so you probably want to use 3 as a minimum ... if you turn it on. installonly_limit = PositiveIntOption(0, range_min=2, names_of_0=["0", ""]) kernelpkgnames = ListOption(['kernel','kernel-smp', 'kernel-enterprise', 'kernel-bigmem', 'kernel-BOOT', 'kernel-PAE', 'kernel-PAE-debug']) exactarchlist = ListOption(['kernel', 'kernel-smp', 'kernel-hugemem', 'kernel-enterprise', 'kernel-bigmem', 'kernel-devel', 'kernel-PAE', 'kernel-PAE-debug']) tsflags = ListOption() assumeyes = BoolOption(False) alwaysprompt = BoolOption(True) exactarch = BoolOption(True) tolerant = BoolOption(True) diskspacecheck = BoolOption(True) overwrite_groups = BoolOption(False) keepalive = BoolOption(True) # FIXME: rename gpgcheck to pkgs_gpgcheck gpgcheck = BoolOption(__pkgs_gpgcheck_default__) repo_gpgcheck = BoolOption(__repo_gpgcheck_default__) localpkg_gpgcheck = BoolOption(__pkgs_gpgcheck_default__) obsoletes = BoolOption(True) showdupesfromrepos = BoolOption(False) 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 bandwidth = BytesOption(0) throttle = ThrottleOption(0) http_caching = SelectionOption('all', ('none', 'packages', 'all')) metadata_expire = SecondsOption(60 * 60 * 6) # Time in seconds (6h). # Time in seconds (1 day). NOTE: This isn't used when using metalinks mirrorlist_expire = SecondsOption(60 * 60 * 24) # XXX rpm_check_debug is unused, left around for API compatibility for now rpm_check_debug = BoolOption(True) disable_excludes = ListOption() skip_broken = BoolOption(False) # Note that "instant" is the old behaviour, but group:primary is very # similar but better :). mdpolicy = ListOption(['group:primary']) # ('instant', 'group:all', 'group:main', 'group:small', 'group:primary')) multilib_policy = SelectionOption('all',('best', 'all')) # all == install any/all arches you can # best == use the 'best arch' for the system bugtracker_url = Option('http://yum.baseurl.org/report') color = SelectionOption('auto', ('auto', 'never', 'always'), mapper={'on' : 'always', 'yes' : 'always', '1' : 'always', 'true' : 'always', 'off' : 'never', 'no' : 'never', '0' : 'never', 'false' : 'never', 'tty' : 'auto', 'if-tty' : 'auto'}) color_list_installed_older = Option('bold') color_list_installed_newer = Option('bold,yellow') color_list_installed_reinstall = Option('normal') color_list_installed_extra = Option('bold,red') color_list_available_upgrade = Option('bold,blue') color_list_available_downgrade = Option('dim,cyan') color_list_available_reinstall = Option('bold,underline,green') color_list_available_install = Option('normal') color_update_installed = Option('normal') color_update_local = Option('bold') color_update_remote = Option('normal') color_search_match = Option('bold') sslcacert = Option() sslverify = BoolOption(True) sslclientcert = Option() sslclientkey = Option() history_record = BoolOption(True) history_record_packages = ListOption(['yum', 'rpm']) rpmverbosity = Option('info') protected_packages = ListOption("yum, glob:/etc/yum/protected.d/*.conf", parse_default=True) protected_multilib = BoolOption(True) exit_on_lock = BoolOption(False) loadts_ignoremissing = BoolOption(False) loadts_ignorerpm = BoolOption(False) clean_requirements_on_remove = BoolOption(False) history_list_view = SelectionOption('single-user-commands', ('single-user-commands', 'users', 'commands'), mapper={'cmds' : 'commands', 'default' :'single-user-commands'}) _reposlist = [] def dump(self): output = '[main]\n' # we exclude all vars which start with _ or are in this list: excluded_vars = ('cfg', 'uid', 'yumvar', 'progress_obj', 'failure_obj', 'disable_excludes', 'config_file_age', 'config_file_path', ) for attr in dir(self): if attr.startswith('_'): continue if attr in excluded_vars: continue if isinstance(getattr(self, attr), types.MethodType): continue res = getattr(self, attr) if not res and type(res) not in (type(False), type(0)): res = '' if type(res) == types.ListType: res = ',\n '.join(res) output = output + '%s = %s\n' % (attr, res) return output class RepoConf(BaseConfig): ''' Option definitions for repository INI file sections. ''' __cached_keys = set() def iterkeys(self): '''Yield the names of all defined options in the instance. ''' ck = self.__cached_keys if not isinstance(self, RepoConf): ck = set() if not ck: ck.update(list(BaseConfig.iterkeys(self))) for name in self.__cached_keys: yield name name = Option() enabled = Inherit(YumConf.enabled) baseurl = UrlListOption() mirrorlist = UrlOption() metalink = UrlOption() mediaid = Option() gpgkey = UrlListOption() gpgcakey = UrlListOption() exclude = ListOption() includepkgs = ListOption() proxy = Inherit(YumConf.proxy) proxy_username = Inherit(YumConf.proxy_username) proxy_password = Inherit(YumConf.proxy_password) retries = Inherit(YumConf.retries) failovermethod = Inherit(YumConf.failovermethod) username = Inherit(YumConf.username) password = Inherit(YumConf.password) # FIXME: rename gpgcheck to pkgs_gpgcheck gpgcheck = Inherit(YumConf.gpgcheck) repo_gpgcheck = Inherit(YumConf.repo_gpgcheck) keepalive = Inherit(YumConf.keepalive) enablegroups = Inherit(YumConf.enablegroups) bandwidth = Inherit(YumConf.bandwidth) throttle = Inherit(YumConf.throttle) timeout = Inherit(YumConf.timeout) http_caching = Inherit(YumConf.http_caching) metadata_expire = Inherit(YumConf.metadata_expire) mirrorlist_expire = Inherit(YumConf.mirrorlist_expire) # NOTE: metalink expire _must_ be the same as metadata_expire, due to the # checksumming of the repomd.xml. mdpolicy = Inherit(YumConf.mdpolicy) cost = IntOption(1000) sslcacert = Inherit(YumConf.sslcacert) sslverify = Inherit(YumConf.sslverify) sslclientcert = Inherit(YumConf.sslclientcert) sslclientkey = Inherit(YumConf.sslclientkey) skip_if_unavailable = BoolOption(False) class VersionGroupConf(BaseConfig): pkglist = ListOption() run_with_packages = BoolOption(False) def readStartupConfig(configfile, root): ''' Parse Yum's main configuration file and return a StartupConf instance. This is required in order to access configuration settings required as Yum starts up. @param configfile: The path to yum.conf. @param root: The base path to use for installation (typically '/') @return: A StartupConf instance. May raise Errors.ConfigError if a problem is detected with while parsing. ''' # ' xemacs syntax hack StartupConf.installroot.default = root startupconf = StartupConf() startupconf.config_file_path = configfile parser = ConfigParser() confpp_obj = ConfigPreProcessor(configfile) try: parser.readfp(confpp_obj) except ParsingError, e: raise Errors.ConfigError("Parsing file failed: %s" % e) startupconf.populate(parser, 'main') # Check that plugin paths are all absolute for path in startupconf.pluginpath: if not path[0] == '/': raise Errors.ConfigError("All plugin search paths must be absolute") # Stuff this here to avoid later re-parsing startupconf._parser = parser # setup the release ver here startupconf.releasever = _getsysver(startupconf.installroot, startupconf.distroverpkg) uuidfile = '%s/%s/uuid' % (startupconf.installroot, startupconf.persistdir) startupconf.uuid = get_uuid(uuidfile) return startupconf def readMainConfig(startupconf): ''' Parse Yum's main configuration file @param startupconf: StartupConf instance as returned by readStartupConfig() @return: Populated YumConf instance. ''' # ' xemacs syntax hack # Set up substitution vars yumvars = _getEnvVar() yumvars['basearch'] = startupconf.basearch 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 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 # it annoys me 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 yumconf.cache = 0 yumconf.progess_obj = None # items related to the originating config file yumconf.config_file_path = startupconf.config_file_path if os.path.exists(startupconf.config_file_path): yumconf.config_file_age = os.stat(startupconf.config_file_path)[8] else: yumconf.config_file_age = 0 # propagate the debuglevel and errorlevel values: yumconf.debuglevel = startupconf.debuglevel yumconf.errorlevel = startupconf.errorlevel return yumconf def readVersionGroupsConfig(configfile="/etc/yum/version-groups.conf"): parser = ConfigParser() confpp_obj = ConfigPreProcessor(configfile) try: parser.readfp(confpp_obj) except ParsingError, e: raise Errors.ConfigError("Parsing file failed: %s" % e) ret = {} for section in parser.sections(): ret[section] = VersionGroupConf() ret[section].populate(parser, section) return ret def getOption(conf, section, name, option): '''Convenience function to retrieve a parsed and converted value from a ConfigParser. @param conf: ConfigParser instance or similar @param section: Section name @param name: Option name @param option: Option instance to use for conversion. @return: The parsed value or default if value was not present. Will raise ValueError if the option could not be parsed. ''' try: val = conf.get(section, name) except (NoSectionError, NoOptionError): return option.default return option.parse(val) def _getEnvVar(): '''Return variable replacements from the environment variables YUM0 to YUM9 The result is intended to be used with parser.varReplace() ''' yumvar = {} for num in range(0, 10): env = 'YUM%d' % num val = os.environ.get(env, '') if val: yumvar[env.lower()] = val return yumvar def _getsysver(installroot, distroverpkg): '''Calculate the release version for the system. @param installroot: The value of the installroot option. @param distroverpkg: The value of the distroverpkg option. @return: The release version as a string (eg. '4' for FC4) ''' ts = rpmUtils.transaction.initReadOnlyTransaction(root=installroot) ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) try: idx = ts.dbMatch('provides', distroverpkg) except TypeError, e: # This is code for "cannot open rpmdb" # this is for pep 352 compliance on python 2.6 and above :( if sys.hexversion < 0x02050000: if hasattr(e,'message'): raise Errors.YumBaseError("Error: " + str(e.message)) 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: releasever = '$releasever' else: hdr = idx.next() releasever = hdr['version'] del hdr del idx del ts return releasever def writeRawRepoFile(repo,only=None): """ Writes changes in a repo object back to a .repo file. @param repo: Repo Object @param only: List of attributes to work on (None = All) It work by reading the repo file, changes the values there shall be changed and write it back to disk. """ if not _use_iniparse: 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(): if value is None: # Proxy continue if only is not None and name not in only: continue option = repo.optionobj(name) ovalue = option.tostring(value) # If the value is the same, but just interpreted ... when we don't want # to keep the interpreted values. if (name in ini[section_id] and ovalue == varReplace(ini[section_id][name], yumvar)): ovalue = ini[section_id][name] if name not in cfgOptions and option.default == value: continue ini[section_id][name] = ovalue fp =file(repo.repofile,"w") fp.write(str(ini)) fp.close() #def main(): # mainconf = readMainConfig(readStartupConfig('/etc/yum/yum.conf', '/')) # print mainconf.cachedir # #if __name__ == '__main__': # main() yum-3.4.3/yum/transactioninfo.py0000664000076400007640000007515011602434452015723 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University # Written by Seth Vidal # TODOS: make all the package relationships deal with package objects # search by package object for TransactionData, etc. # provide a real TransactionData.remove(txmbr) method, It should # remove the given txmbr and iterate to remove all those in depedent relationships # with the given txmbr. """ Classes and functions for manipulating a transaction to be passed to rpm. """ from constants import * from packageSack import PackageSack, PackageSackVersion from packages import YumInstalledPackage from sqlitesack import YumAvailablePackageSqlite import Errors import warnings import misc class GetProvReqOnlyPackageSack(PackageSack): def __init__(self, need_files=False): PackageSack.__init__(self) self._need_index_files = need_files def __addPackageToIndex_primary_files(self, obj): 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): for ftype in obj.returnFileTypes(): for file in obj.returnFileEntries(ftype): self._addToDictAsList(self.filenames, file, obj) def _addPackageToIndex(self, obj): for (n, fl, (e,v,r)) in obj.returnPrco('provides'): self._addToDictAsList(self.provides, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('requires'): self._addToDictAsList(self.requires, n, obj) if self._need_index_files: self.__addPackageToIndex_files(obj) else: self.__addPackageToIndex_primary_files(obj) def __buildFileIndexes(self): for repoid in self.pkgsByRepo: for obj in self.pkgsByRepo[repoid]: self.__addPackageToIndex_files(obj) def searchFiles(self, name): if not self._need_index_files and not misc.re_primary_filename(name): self._need_index_files = True if self.indexesBuilt: self.filenames = {} self.__buildFileIndexes() return PackageSack.searchFiles(self, name) class TransactionData: """Data Structure designed to hold information on a yum Transaction Set""" def __init__(self): self.flags = [] self.vsflags = [] self.probFilterFlags = [] self.root = '/' self.pkgdict = {} # key = pkgtup, val = list of TransactionMember obj self._namedict = {} # name -> list of TransactionMember obj self._unresolvedMembers = set() self.debug = 0 self.changed = False self.installonlypkgs = [] self.state_counter = 0 self.conditionals = {} # key = pkgname, val = list of pos to add self.rpmdb = None self.pkgSack = None self.pkgSackPackages = 0 self.localSack = PackageSack() self._inSack = GetProvReqOnlyPackageSack() # lists of txmbrs in their states - just placeholders self.instgroups = [] self.removedgroups = [] self.removed = [] self.installed = [] self.updated = [] self.obsoleted = [] self.depremoved = [] self.depinstalled = [] self.depupdated = [] self.reinstalled = [] self.downgraded = [] self.failed = [] def __len__(self): return len(self.pkgdict) def __iter__(self): if hasattr(self.getMembers(), '__iter__'): return self.getMembers().__iter__() else: return iter(self.getMembers()) def debugprint(self, msg): if self.debug: print msg def getMembersWithState(self, pkgtup=None, output_states=None): return filter(lambda p: p.output_state in output_states, self.getMembers(pkgtup)) def getMembers(self, pkgtup=None): """takes an optional package tuple and returns all transaction members matching, no pkgtup means it returns all transaction members""" returnlist = [] if pkgtup is None: for members in self.pkgdict.itervalues(): returnlist.extend(members) elif pkgtup in self.pkgdict: returnlist.extend(self.pkgdict[pkgtup]) return returnlist # The order we resolve things in _matters_, so for sanity sort the list # otherwise .i386 can be different to .x86_64 etc. def getUnresolvedMembers(self): return list(sorted(self._unresolvedMembers)) def markAsResolved(self, txmbr): self._unresolvedMembers.discard(txmbr) def resetResolved(self, hard=False): if hard or len(self) < len(self._unresolvedMembers): self._unresolvedMembers.clear() self._unresolvedMembers.update(self.getMembers()) return True return False def getMode(self, name=None, arch=None, epoch=None, ver=None, rel=None): """returns the mode of the first match from the transaction set, otherwise, returns None""" txmbrs = self.matchNaevr(name=name, arch=arch, epoch=epoch, ver=ver, rel=rel) if not len(txmbrs): return None states = [] for txmbr in txmbrs: states.append(txmbr.ts_state) if 'u' in states: return 'u' elif 'i' in states: return 'i' else: return states[0] def matchNaevr(self, name=None, arch=None, epoch=None, ver=None, rel=None): """returns the list of packages matching the args above""" if name is None: txmbrs = self.getMembers() else: txmbrs = self._namedict.get(name, []) if arch is None and epoch is None and ver is None and rel is None: return txmbrs[:] result = [] for txmbr in txmbrs: (n, a, e, v, r) = txmbr.pkgtup # Name is done above if arch is not None and arch != a: continue if epoch is not None and epoch != e: continue if ver is not None and ver != v: continue if rel is not None and rel != r: continue result.append(txmbr) 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 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 # special pkgsack before this point ... so that "yum up ./*.rpm" works. # Also FakePackage() sets it off ... which is confusing and not what # happens IRL. return txmember.ts_state in ('u', 'i') and not isinstance(txmember.po, (YumInstalledPackage, YumAvailablePackageSqlite)) def _allowedMultipleInstalls(self, po): """takes a packageObject, returns 1 or 0 depending on if the package should/can be installed multiple times with different vers like kernels and kernel modules, for example""" if po.name in self.installonlypkgs: return True provides = po.provides_names if filter (lambda prov: prov in self.installonlypkgs, provides): return True return False def add(self, txmember): """add a package to the transaction""" for oldpo in txmember.updates: self.addUpdated(oldpo, txmember.po) if txmember.pkgtup not in self.pkgdict: self.pkgdict[txmember.pkgtup] = [] else: self.debugprint("Package: %s.%s - %s:%s-%s already in ts" % txmember.pkgtup) for member in self.pkgdict[txmember.pkgtup]: if member.ts_state == txmember.ts_state: self.debugprint("Package in same mode, skipping.") return self.pkgdict[txmember.pkgtup].append(txmember) self._namedict.setdefault(txmember.name, []).append(txmember) self.changed = True self.state_counter += 1 if self._isLocalPackage(txmember): self.localSack.addPackage(txmember.po) elif isinstance(txmember.po, YumAvailablePackageSqlite): self.pkgSackPackages += 1 if self._inSack is not None and txmember.output_state in TS_INSTALL_STATES: 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 txmember.name in self.conditionals: for pkg in self.conditionals[txmember.name]: if self.rpmdb.contains(po=pkg): continue for condtxmbr in self.install_method(po=pkg): condtxmbr.setAsDep(po=txmember.po) self._unresolvedMembers.add(txmember) def remove(self, pkgtup): """remove a package from the transaction""" if pkgtup not in self.pkgdict: self.debugprint("Package: %s not in ts" %(pkgtup,)) return for txmbr in self.pkgdict[pkgtup]: txmbr.po.state = None if self._isLocalPackage(txmbr): self.localSack.delPackage(txmbr.po) elif isinstance(txmbr.po, YumAvailablePackageSqlite): self.pkgSackPackages -= 1 if self._inSack is not None and txmbr.output_state in TS_INSTALL_STATES: self._inSack.delPackage(txmbr.po) self._namedict[txmbr.name].remove(txmbr) self._unresolvedMembers.add(txmbr) del self.pkgdict[pkgtup] if not self._namedict[pkgtup[0]]: del self._namedict[pkgtup[0]] self.changed = True self.state_counter += 1 def exists(self, pkgtup): """tells if the pkg is in the class""" if pkgtup in self.pkgdict: if len(self.pkgdict[pkgtup]) != 0: return 1 return 0 def isObsoleted(self, pkgtup): """true if the pkgtup is marked to be obsoleted""" if self.exists(pkgtup): for txmbr in self.getMembers(pkgtup=pkgtup): if txmbr.output_state == TS_OBSOLETED: return True return False def makelists(self, include_reinstall=False, include_downgrade=False): """returns lists of transaction Member objects based on mode: updated, installed, erased, obsoleted, depupdated, depinstalled deperased""" self.instgroups = [] self.removedgroups = [] self.removed = [] self.installed = [] self.updated = [] self.obsoleted = [] self.depremoved = [] self.depinstalled = [] self.depupdated = [] self.reinstalled = [] self.downgraded = [] self.failed = [] for txmbr in self.getMembers(): if txmbr.output_state == TS_UPDATE: if txmbr.isDep: self.depupdated.append(txmbr) else: self.updated.append(txmbr) elif txmbr.output_state in (TS_INSTALL, TS_TRUEINSTALL): if include_reinstall and txmbr.reinstall: self.reinstalled.append(txmbr) continue if include_downgrade and txmbr.downgrades: self.downgraded.append(txmbr) continue if txmbr.groups: for g in txmbr.groups: if g not in self.instgroups: self.instgroups.append(g) if txmbr.isDep: self.depinstalled.append(txmbr) else: self.installed.append(txmbr) elif txmbr.output_state == TS_ERASE: if include_downgrade and txmbr.downgraded_by: continue for g in txmbr.groups: if g not in self.instgroups: self.removedgroups.append(g) if txmbr.isDep: self.depremoved.append(txmbr) else: self.removed.append(txmbr) elif txmbr.output_state == TS_OBSOLETED: self.obsoleted.append(txmbr) elif txmbr.output_state == TS_OBSOLETING: self.installed.append(txmbr) elif txmbr.output_state == TS_FAILED: self.failed.append(txmbr) else: pass self.updated.sort() self.installed.sort() self.removed.sort() self.obsoleted.sort() self.depupdated.sort() self.depinstalled.sort() self.depremoved.sort() self.instgroups.sort() self.removedgroups.sort() self.reinstalled.sort() self.downgraded.sort() self.failed.sort() 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""" if self._allowedMultipleInstalls(po): return self.addTrueInstall(po) txmbr = TransactionMember(po) txmbr.current_state = TS_AVAILABLE txmbr.output_state = TS_INSTALL txmbr.po.state = TS_INSTALL txmbr.ts_state = 'u' txmbr.reason = 'user' if self.rpmdb.contains(po=txmbr.po): txmbr.reinstall = True self.findObsoletedByThisMember(txmbr) self.add(txmbr) return txmbr def addTrueInstall(self, po): """adds a package as an install takes a packages object and returns a TransactionMember Object""" txmbr = TransactionMember(po) txmbr.current_state = TS_AVAILABLE txmbr.output_state = TS_TRUEINSTALL 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 addErase(self, po): """adds a package as an erasure takes a packages object and returns a TransactionMember Object""" txmbr = TransactionMember(po) txmbr.current_state = TS_INSTALL txmbr.output_state = TS_ERASE txmbr.po.state = TS_INSTALL txmbr.ts_state = 'e' self.add(txmbr) return txmbr def addUpdate(self, po, oldpo=None): """adds a package as an update takes a packages object and returns a TransactionMember Object""" if self._allowedMultipleInstalls(po): return self.addTrueInstall(po) txmbr = TransactionMember(po) txmbr.current_state = TS_AVAILABLE txmbr.output_state = TS_UPDATE txmbr.po.state = TS_UPDATE txmbr.ts_state = 'u' if oldpo: txmbr.relatedto.append((oldpo, 'updates')) txmbr.updates.append(oldpo) self.add(txmbr) self.findObsoletedByThisMember(txmbr) return txmbr def addDowngrade(self, po, oldpo): """adds a package as an downgrade takes a packages object and returns a pair of TransactionMember Objects""" itxmbr = self.addErase(oldpo) itxmbr.relatedto.append((po, 'downgradedby')) itxmbr.downgraded_by.append(po) atxmbr = self.addInstall(po) if not atxmbr: # Fail? self.remove(itxmbr.pkgtup) return None atxmbr.relatedto.append((oldpo, 'downgrades')) atxmbr.downgrades.append(oldpo) return (itxmbr, atxmbr) def addUpdated(self, po, updating_po): """adds a package as being updated by another pkg takes a packages object and returns a TransactionMember Object""" txmbr = TransactionMember(po) txmbr.current_state = TS_INSTALL txmbr.output_state = TS_UPDATED txmbr.po.state = TS_UPDATED txmbr.ts_state = 'ud' txmbr.relatedto.append((updating_po, 'updatedby')) txmbr.updated_by.append(updating_po) self.add(txmbr) return txmbr def addObsoleting(self, po, oldpo): """adds a package as an obsolete over another pkg takes a packages object and returns a TransactionMember Object""" txmbr = TransactionMember(po) txmbr.current_state = TS_AVAILABLE txmbr.output_state = TS_OBSOLETING txmbr.po.state = TS_OBSOLETING 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 def addObsoleted(self, po, obsoleting_po): """adds a package as being obsoleted by another pkg takes a packages object and returns a TransactionMember Object""" txmbr = TransactionMember(po) txmbr.current_state = TS_INSTALL txmbr.output_state = TS_OBSOLETED txmbr.po.state = TS_OBSOLETED txmbr.ts_state = 'od' txmbr.relatedto.append((obsoleting_po, 'obsoletedby')) txmbr.obsoleted_by.append(obsoleting_po) self.add(txmbr) for otxmbr in self.getMembersWithState(obsoleting_po.pkgtup, [TS_OBSOLETING]): if po in otxmbr.obsoletes: continue otxmbr.relatedto.append((po, 'obsoletes')) otxmbr.obsoletes.append(po) return txmbr def setDatabases(self, rpmdb, pkgSack): self.rpmdb = rpmdb self.pkgSack = pkgSack def getNewProvides(self, name, flag=None, version=(None, None, None)): """return dict { packages -> list of matching provides } searches in packages to be installed""" result = { } if not self.pkgSackPackages: pass elif self._inSack is None: for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems(): if self.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES): result[pkg] = hits else: for pkg, hits in self._inSack.getProvides(name, flag, version).iteritems(): result[pkg] = hits result.update(self.localSack.getProvides(name, flag, version)) return result def getOldProvides(self, name, flag=None, version=(None, None, None)): """return dict { packages -> list of matching provides } searches in packages already installed and not going to be removed""" result = { } for pkg, hits in self.rpmdb.getProvides(name, flag, version).iteritems(): if not self.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES): result[pkg] = hits return result def getProvides(self, name, flag=None, version=(None, None, None)): """return dict { packages -> list of matching provides }""" result = self.getOldProvides(name, flag, version) result.update(self.getNewProvides(name, flag, version)) return result def getNewRequires(self, name, flag=None, version=(None, None, None)): """return dict { packages -> list of matching provides } searches in packages to be installed""" result = { } if not self.pkgSackPackages: pass elif self._inSack is None: for pkg, hits in self.pkgSack.getRequires(name, flag, version).iteritems(): if self.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES): result[pkg] = hits else: for pkg, hits in self._inSack.getRequires(name, flag, version).iteritems(): result[pkg] = hits result.update(self.localSack.getRequires(name, flag, version)) return result def getOldRequires(self, name, flag=None, version=(None, None, None)): """return dict { packages -> list of matching provides } searches in packages already installed and not going to be removed""" result = { } for pkg, hits in self.rpmdb.getRequires(name, flag, version).iteritems(): if not self.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES): result[pkg] = hits return result def getRequires(self, name, flag=None, version=(None, None, None)): """return dict { packages -> list of matching provides }""" result = self.getOldRequires(name, flag, version) result.update(self.getNewRequires(name, flag, version)) return result def futureRpmDBVersion(self): """ Return a simple version for the future rpmdb. Works like rpmdb.simpleVersion(main_only=True)[0], but for the state the rpmdb will be in after the transaction. """ pkgs = self.rpmdb.returnPackages() _reinstalled_pkgtups = {} for txmbr in self.getMembersWithState(None, TS_INSTALL_STATES): # reinstalls have to use their "new" checksum data, in case it's # different. if txmbr.reinstall: _reinstalled_pkgtups[txmbr.po.pkgtup] = txmbr.po pkgs.append(txmbr.po) self.rpmdb.preloadPackageChecksums() main = PackageSackVersion() pkg_checksum_tups = [] for pkg in sorted(pkgs): if pkg.repoid != 'installed': # Paste from PackageSackBase.simpleVersion() csum = pkg.returnIdSum() main.update(pkg, csum) pkg_checksum_tups.append((pkg.pkgtup, csum)) continue # Installed pkg, see if it's about to die if self.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES): continue # ...or die and be risen again (Zombie!) if pkg.pkgtup in _reinstalled_pkgtups: continue # Paste from rpmdb.simpleVersion() ydbi = pkg.yumdb_info csum = None if 'checksum_type' in ydbi and 'checksum_data' in ydbi: csum = (ydbi.checksum_type, ydbi.checksum_data) # We need all the pkgtups, so we even save the ones without a # checksum. pkg_checksum_tups.append((pkg.pkgtup, csum)) main.update(pkg, csum) self.rpmdb.transactionCachePackageChecksums(pkg_checksum_tups) return main def findObsoletedByThisMember(self, txmbr): """addObsoleted() pkgs for anything that this txmbr will obsolete""" # this is mostly to keep us in-line with what will ACTUALLY happen # when rpm hits the obsoletes, whether we added them or not for obs_n in txmbr.po.obsoletes_names: for pkg in self.rpmdb.searchNevra(name=obs_n): if pkg.obsoletedBy([txmbr.po]): self.addObsoleted(pkg, txmbr.po) txmbr.output_state = TS_OBSOLETING txmbr.po.state = TS_OBSOLETING class ConditionalTransactionData(TransactionData): """A transaction data implementing conditional package addition""" def __init__(self): warnings.warn("ConditionalTransactionData will go away in a future " "version of Yum.", Errors.YumFutureDeprecationWarning) TransactionData.__init__(self) class SortableTransactionData(TransactionData): """A transaction data implementing topological sort on it's members""" def __init__(self): # Cache of sort self._sorted = [] # Current dependency path self.path = [] # List of loops self.loops = [] TransactionData.__init__(self) def _visit(self, txmbr): self.path.append(txmbr.name) txmbr.sortColour = TX_GREY for po in txmbr.depends_on: vertex = self.getMembers(pkgtup=po.pkgtup)[0] if vertex.sortColour == TX_GREY: self._doLoop(vertex.name) if vertex.sortColour == TX_WHITE: self._visit(vertex) txmbr.sortColour = TX_BLACK self._sorted.insert(0, txmbr.pkgtup) def _doLoop(self, name): self.path.append(name) loop = self.path[self.path.index(self.path[-1]):] if len(loop) > 2: self.loops.append(loop) def add(self, txmember): txmember.sortColour = TX_WHITE TransactionData.add(self, txmember) self._sorted = [] def remove(self, pkgtup): TransactionData.remove(self, pkgtup) self._sorted = [] def sort(self): if self._sorted: return self._sorted self._sorted = [] # loop over all members for txmbr in self.getMembers(): if txmbr.sortColour == TX_WHITE: self.path = [ ] self._visit(txmbr) self._sorted.reverse() return self._sorted class TransactionMember: """Class to describe a Transaction Member (a pkg to be installed/ updated/erased).""" def __init__(self, po): # holders for data self.po = po # package object self.current_state = None # where the package currently is (repo, installed) self.ts_state = None # what state to put it into in the transaction set self.output_state = None # what state to list if printing it self.isDep = 0 self.reason = 'user' # reason for it to be in the transaction set self.process = None # I think this is used nowhere by nothing - skv 2010/11/03 self.relatedto = [] # ([relatedpkg, relationship)] self.depends_on = [] self.obsoletes = [] self.obsoleted_by = [] self.updates = [] 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'] for attr in self._poattr: 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""" self.isDep = 1 if po: self.relatedto.append((po, 'dependson')) self.depends_on.append(po) def __cmp__(self, other): return cmp(self.po, other.po) def __hash__(self): return object.__hash__(self) def __str__(self): return "%s.%s %s:%s-%s - %s" % (self.name, self.arch, self.epoch, self.version, self.release, self.ts_state) def __repr__(self): return "<%s : %s (%s)>" % (self.__class__.__name__, str(self),hex(id(self))) def _dump(self): msg = "mbr: %s,%s,%s,%s,%s %s\n" % (self.name, self.arch, self.epoch, self.version, self.release, self.current_state) msg += " repo: %s\n" % self.po.repo.id msg += " ts_state: %s\n" % self.ts_state msg += " output_state: %s\n" % self.output_state msg += " isDep: %s\n" % bool(self.isDep) msg += " reason: %s\n" % self.reason #msg += " process: %s\n" % self.process msg += " reinstall: %s\n" % bool(self.reinstall) if self.relatedto: msg += " relatedto:" for (po, rel) in self.relatedto: pkgorigin = 'a' if isinstance(po, YumInstalledPackage): pkgorigin = 'i' msg += " %s,%s,%s,%s,%s@%s:%s" % (po.name, po.arch, po.epoch, po.version, po.release, pkgorigin, rel) msg += "\n" for lst in ['depends_on', 'obsoletes', 'obsoleted_by', 'downgrades', 'downgraded_by', 'updates', 'updated_by']: thislist = getattr(self, lst) if thislist: msg += " %s:" % lst for po in thislist: pkgorigin = 'a' if isinstance(po, YumInstalledPackage): pkgorigin = 'i' msg += " %s,%s,%s,%s,%s@%s" % (po.name, po.arch, po.epoch, po.version, po.release, pkgorigin) msg += "\n" if self.groups: msg += " groups: %s\n" % ' '.join(self.groups) return msg yum-3.4.3/yum/logginglevels.py0000664000076400007640000001746211602434452015365 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """ Custom logging levels for finer-grained logging using python's standard logging module. """ import os import socket import sys import logging import logging.handlers INFO_1 = 19 INFO_2 = 18 DEBUG_1 = 9 DEBUG_2 = 8 DEBUG_3 = 7 DEBUG_4 = 6 logging.addLevelName(INFO_1, "INFO_1") logging.addLevelName(INFO_2, "INFO_2") logging.addLevelName(DEBUG_1, "DEBUG_1") logging.addLevelName(DEBUG_2, "DEBUG_2") logging.addLevelName(DEBUG_3, "DEBUG_3") logging.addLevelName(DEBUG_4, "DEBUG_4") # High level to effectively turn off logging. # For compatability with the old logging system. __NO_LOGGING = 100 logging.raiseExceptions = False from logging.handlers import SysLogHandler as syslog_module syslog = None # Mostly borrowed from original yum-updated.py _syslog_facility_map = { "KERN" : syslog_module.LOG_KERN, "USER" : syslog_module.LOG_USER, "MAIL" : syslog_module.LOG_MAIL, "DAEMON" : syslog_module.LOG_DAEMON, "AUTH" : syslog_module.LOG_AUTH, "LPR" : syslog_module.LOG_LPR, "NEWS" : syslog_module.LOG_NEWS, "UUCP" : syslog_module.LOG_UUCP, "CRON" : syslog_module.LOG_CRON, "LOCAL0" : syslog_module.LOG_LOCAL0, "LOCAL1" : syslog_module.LOG_LOCAL1, "LOCAL2" : syslog_module.LOG_LOCAL2, "LOCAL3" : syslog_module.LOG_LOCAL3, "LOCAL4" : syslog_module.LOG_LOCAL4, "LOCAL5" : syslog_module.LOG_LOCAL5, "LOCAL6" : syslog_module.LOG_LOCAL6, "LOCAL7" : syslog_module.LOG_LOCAL7,} def syslogFacilityMap(facility): if type(facility) == int: return facility elif facility.upper() in _syslog_facility_map: return _syslog_facility_map[facility.upper()] elif (facility.upper().startswith("LOG_") and facility[4:].upper() in _syslog_facility_map): return _syslog_facility_map[facility[4:].upper()] return _syslog_facility_map["USER"] def logLevelFromErrorLevel(error_level): """ Convert an old-style error logging level to the new style. """ error_table = { -1 : __NO_LOGGING, 0 : logging.CRITICAL, 1 : logging.ERROR, 2 : logging.WARNING} return __convertLevel(error_level, error_table) def logLevelFromDebugLevel(debug_level): """ Convert an old-style debug logging level to the new style. """ debug_table = {-1 : __NO_LOGGING, 0 : logging.INFO, 1 : INFO_1, 2 : INFO_2, 3 : logging.DEBUG, 4 : DEBUG_1, 5 : DEBUG_2, 6 : DEBUG_3, 7 : DEBUG_4} return __convertLevel(debug_level, debug_table) def __convertLevel(level, table): """ Convert yum logging levels using a lookup table. """ # Look up level in the table. try: new_level = table[level] except KeyError: keys = table.keys() # We didn't find the level in the table, check if it's smaller # than the smallest level if level < keys[0]: new_level = table[keys[0]] # Nope. So it must be larger. else: new_level = table[keys[-2]] return new_level def setDebugLevel(level): converted_level = logLevelFromDebugLevel(level) logging.getLogger("yum.verbose").setLevel(converted_level) def setErrorLevel(level): converted_level = logLevelFromErrorLevel(level) logging.getLogger("yum").setLevel(converted_level) _added_handlers = False def doLoggingSetup(debuglevel, errorlevel, syslog_ident=None, syslog_facility=None, syslog_device='/dev/log'): """ Configure the python logger. errorlevel is optional. If provided, it will override the logging level provided in the logging config file for error messages. debuglevel is optional. If provided, it will override the logging level provided in the logging config file for debug messages. """ global _added_handlers #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: setDebugLevel(debuglevel) if errorlevel is not None: setErrorLevel(errorlevel) return plainformatter = logging.Formatter("%(message)s") console_stdout = logging.StreamHandler(sys.stdout) console_stdout.setFormatter(plainformatter) verbose = logging.getLogger("yum.verbose") verbose.propagate = False verbose.addHandler(console_stdout) console_stderr = logging.StreamHandler(sys.stderr) console_stderr.setFormatter(plainformatter) logger = logging.getLogger("yum") logger.propagate = False logger.addHandler(console_stderr) filelogger = logging.getLogger("yum.filelogging") filelogger.setLevel(logging.INFO) filelogger.propagate = False global syslog 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: setDebugLevel(debuglevel) if errorlevel is not None: setErrorLevel(errorlevel) def setFileLog(uid, logfile, cleanup=None): # TODO: When python's logging config parser doesn't blow up # when the user is non-root, put this in the config file. # syslog-style log if uid == 0: try: # For installroot etc. 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", "%b %d %H:%M:%S") filehandler.setFormatter(formatter) filelogger.addHandler(filehandler) if not cleanup is None: cleanup.append(lambda: filelogger.removeHandler(filehandler)) except IOError: logging.getLogger("yum").critical('Cannot open logfile %s', logfile) def setLoggingApp(app): if syslog: syslogformatter = logging.Formatter(app + "[%(process)d]: %(message)s") syslog.setFormatter(syslogformatter) yum-3.4.3/yum/parser.py0000664000076400007640000001750011602434452014011 0ustar jamesjames#! /usr/bin/python -tt import re import urlparse import urlgrabber import os.path import Errors _KEYCRE = re.compile(r"\$(\w+)") def varReplace(raw, vars): '''Perform variable replacement @param raw: String to perform substitution on. @param vars: Dictionary of variables to replace. Key is variable name (without $ prefix). Value is replacement string. @return: Input raw string with substituted values. ''' done = [] # Completed chunks to return while raw: m = _KEYCRE.search(raw) if not m: done.append(raw) break # Determine replacement value (if unknown variable then preserve # original) varname = m.group(1).lower() replacement = vars.get(varname, m.group()) start, end = m.span() done.append(raw[:start]) # Keep stuff leading up to token done.append(replacement) # Append replacement value raw = raw[end:] # Continue with remainder of string return ''.join(done) class ConfigPreProcessor: """ ConfigParser Include Pre-Processor File-like Object capable of pre-processing include= lines for a ConfigParser. The readline function expands lines matching include=(url) into lines from the url specified. Includes may occur in included files as well. Suggested Usage:: cfg = ConfigParser.ConfigParser() fileobj = confpp( fileorurl ) cfg.readfp(fileobj) """ def __init__(self, configfile, vars=None): # put the vars away in a helpful place self._vars = vars # used to track the current ini-section self._section = None # set some file-like object attributes for ConfigParser # these just make confpp look more like a real file object. self.mode = 'r' # first make configfile a url even if it points to # a local file scheme = urlparse.urlparse(configfile)[0] if scheme == '': # check it to make sure it's not a relative file url if configfile[0] != '/': configfile = os.getcwd() + '/' + configfile url = 'file://' + configfile else: url = configfile # these are used to maintain the include stack and check # for recursive/duplicate includes self._incstack = [] self._alreadyincluded = [] # _pushfile will return None if he couldn't open the file fo = self._pushfile( url ) if fo is None: raise Errors.ConfigError, 'Error accessing file: %s' % url def readline( self, size=0 ): """ Implementation of File-Like Object readline function. This should be the only function called by ConfigParser according to the python docs. We maintain a stack of real FLOs and delegate readline calls to the FLO on top of the stack. When EOF occurs on the topmost FLO, it is popped off the stack and the next FLO takes over. include= lines found anywhere cause a new FLO to be opened and pushed onto the top of the stack. Finally, we return EOF when the bottom-most (configfile arg to __init__) FLO returns EOF. Very Technical Pseudo Code:: def confpp.readline() [this is called by ConfigParser] open configfile, push on stack while stack has some stuff on it line = readline from file on top of stack pop and continue if line is EOF if line starts with 'include=' then error if file is recursive or duplicate otherwise open file, push on stack continue else return line return EOF """ # set line to EOF initially. line='' while len(self._incstack) > 0: # peek at the file like object on top of the stack fo = self._incstack[-1] line = fo.readline() if len(line) > 0: m = re.match( r'\s*include\s*=\s*(?P.*)', line ) if m: url = m.group('url') if len(url) == 0: raise Errors.ConfigError, \ 'Error parsing config %s: include must specify file to include.' % (self.name) else: # whooohoo a valid include line.. push it on the stack fo = self._pushfile( url ) else: # check if the current line starts a new section secmatch = re.match( r'\s*\[(?P
.*)\]', line ) if secmatch: self._section = secmatch.group('section') # line didn't match include=, just return it as is # for the ConfigParser break else: # the current file returned EOF, pop it off the stack. self._popfile() # if the section is prefixed by a space then it is breaks iniparser/configparser # so fix it broken_sec_match = re.match(r'\s+\[(?P
.*)\]', line) if broken_sec_match: line = line.lstrip() # at this point we have a line from the topmost file on the stack # or EOF if the stack is empty if self._vars: return varReplace(line, self._vars) return line def _absurl( self, url ): """ Returns an absolute url for the (possibly) relative url specified. The base url used to resolve the missing bits of url is the url of the file currently being included (i.e. the top of the stack). """ if len(self._incstack) == 0: # it's the initial config file. No base url to resolve against. return url else: return urlparse.urljoin( self.geturl(), url ) def _pushfile( self, url ): """ Opens the url specified, pushes it on the stack, and returns a file like object. Returns None if the url has previously been included. If the file can not be opened this function exits. """ # absolutize this url using the including files url # as a base url. absurl = self._absurl(url) # get the current section to add it to the included # url's name. includetuple = (absurl, self._section) # check if this has previously been included. if self._isalreadyincluded(includetuple): return None try: fo = urlgrabber.grabber.urlopen(absurl) except urlgrabber.grabber.URLGrabError, e: fo = None if fo is not None: self.name = absurl self._incstack.append( fo ) self._alreadyincluded.append(includetuple) else: raise Errors.ConfigError, \ 'Error accessing file for config %s' % (absurl) return fo def _popfile( self ): """ Pop a file off the stack signaling completion of including that file. """ fo = self._incstack.pop() fo.close() if len(self._incstack) > 0: self.name = self._incstack[-1].geturl() else: self.name = None def _isalreadyincluded( self, tuple ): """ Checks if the tuple describes an include that was already done. This does not necessarily have to be recursive """ for etuple in self._alreadyincluded: if etuple == tuple: return 1 return 0 def geturl(self): return self.name yum-3.4.3/yum/yumRepo.py0000664000076400007640000022146011602434452014157 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University # Copyright 2007 Red Hat import os import re import time import types import urlparse urlparse.uses_fragment.append("media") import Errors from urlgrabber.grabber import URLGrabber from urlgrabber.grabber import default_grabber import urlgrabber.mirror from urlgrabber.grabber import URLGrabError import repoMDObject import packageSack from repos import Repository import parser import sqlitecachec import sqlitesack from yum import config from yum import misc from yum import comps from constants import * import metalink import logging import logginglevels import warnings import glob import shutil import stat import errno import tempfile # If you want yum to _always_ check the MD .sqlite files then set this to # False (this doesn't affect .xml files or .sqilte files derived from them). # With this as True yum will only check when a new repomd.xml or # new MD is downloaded. # Note that with atomic MD, we can't have old MD lying around anymore so # the only way we need this check is if someone does something like: # cp primary.sqlite /var/cache/yum/blah # ...at which point you lose. skip_old_DBMD_check = True warnings.simplefilter("ignore", Errors.YumFutureDeprecationWarning) logger = logging.getLogger("yum.Repos") verbose_logger = logging.getLogger("yum.verbose.Repos") class YumPackageSack(packageSack.PackageSack): """imports/handles package objects from an mdcache dict object""" def __init__(self, packageClass): packageSack.PackageSack.__init__(self) self.pc = packageClass self.added = {} def __del__(self): self.close() def close(self): self.added = {} def addDict(self, repo, datatype, dataobj, callback=None): if repo in self.added: if datatype in self.added[repo]: return total = len(dataobj) if datatype == 'metadata': current = 0 for pkgid in dataobj: current += 1 if callback: callback.progressbar(current, total, repo) pkgdict = dataobj[pkgid] po = self.pc(repo, pkgdict) po.id = pkgid self._addToDictAsList(self.pkgsByID, pkgid, po) self.addPackage(po) 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 repo in self.added: if 'metadata' not in self.added[repo]: raise Errors.RepoError, '%s md for %s imported before primary' \ % (datatype, repo.id) current = 0 for pkgid in dataobj: current += 1 if callback: callback.progressbar(current, total, repo) pkgdict = dataobj[pkgid] if pkgid in self.pkgsByID: for po in self.pkgsByID[pkgid]: po.importFromDict(pkgdict) self.added[repo].append(datatype) # indexes will need to be rebuilt self.indexesBuilt = 0 else: # umm, wtf? pass def populate(self, repo, mdtype='metadata', callback=None, cacheonly=0): if mdtype == 'all': data = ['metadata', 'filelists', 'otherdata'] else: data = [ mdtype ] if not hasattr(repo, 'cacheHandler'): repo.cacheHandler = sqlitecachec.RepodataParserSqlite( storedir=repo.cachedir, repoid=repo.id, callback=callback, ) for item in data: if repo in self.added: if item in self.added[repo]: continue db_fn = None if item == 'metadata': mydbtype = 'primary_db' mymdtype = 'primary' repo_get_function = repo.getPrimaryXML repo_cache_function = repo.cacheHandler.getPrimary elif item == 'filelists': mydbtype = 'filelists_db' mymdtype = 'filelists' repo_get_function = repo.getFileListsXML repo_cache_function = repo.cacheHandler.getFilelists elif item == 'otherdata': mydbtype = 'other_db' mymdtype = 'other' repo_get_function = repo.getOtherXML repo_cache_function = repo.cacheHandler.getOtherdata else: continue 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 compressed file # decompress it # unlink it db_un_fn = self._check_uncompressed_db(repo, mydbtype) if not db_un_fn: db_fn = repo._retrieveMD(mydbtype) if db_fn: if not repo.cache: db_un_fn = misc.decompress(db_fn) misc.unlink_f(db_fn) db_un_fn = self._check_uncompressed_db(repo, mydbtype) dobj = repo.cacheHandler.open_database(db_un_fn) else: repo._xml2sqlite_local = True xml = repo_get_function() xmldata = repo.repoXML.getData(mymdtype) (ctype, csum) = xmldata.checksum dobj = repo_cache_function(xml, csum) if not cacheonly: self.addDict(repo, item, dobj, callback) del dobj # get rid of all this stuff we don't need now del repo.cacheHandler def _check_uncompressed_db(self, repo, mdtype): """return file name of uncompressed db is good, None if not""" mydbdata = repo.repoXML.getData(mdtype) (r_base, remote) = mydbdata.location fname = os.path.basename(remote) compressed_fn = repo.cachedir + '/' + fname db_un_fn = misc.decompress(compressed_fn, fn_only=True) result = None repo._preload_md_from_system_cache(os.path.basename(db_un_fn)) if os.path.exists(db_un_fn): if skip_old_DBMD_check and repo._using_old_MD: return db_un_fn try: repo.checkMD(db_un_fn, mdtype, openchecksum=True) except URLGrabError: if not repo.cache: misc.unlink_f(db_un_fn) else: result = db_un_fn return result def _check_db_version(self, repo, mdtype): return repo._check_db_version(mdtype) class YumRepository(Repository, config.RepoConf): """ This is an actual repository object Configuration attributes are pulled in from config.RepoConf. """ def __init__(self, repoid): config.RepoConf.__init__(self) Repository.__init__(self, repoid) self.repofile = None self.mirrorurls = [] self._urls = [] self.enablegroups = 0 self.groupsfilename = 'yumgroups.xml' # something some freaks might # eventually want self.repoMDFile = 'repodata/repomd.xml' self._repoXML = None self._using_old_MD = None self._oldRepoMDData = {} self.cache = 0 self.mirrorlistparsed = 0 self.yumvar = {} # empty dict of yumvariables for $string replacement self._proxy_dict = {} self.metadata_cookie_fn = 'cachecookie' self._metadataCurrent = None self._metalink = None self.groups_added = False self.http_headers = {} self.repo_config_age = 0 # if we're a repo not from a file then the # config is very, very old # throw in some stubs for things that will be set by the config class self.basecachedir = "" self.base_persistdir = "" self.cost = 1000 self.copy_local = 0 # holder for stuff we've grabbed self.retrieved = { 'primary':0, 'filelists':0, 'other':0, 'group':0, 'updateinfo':0, 'prestodelta' : 0} # callbacks self.callback = None # for the grabber self.failure_obj = None self.mirror_failure_obj = None self.interrupt_callback = None self._callbacks_changed = False # callback function for handling media self.mediafunc = None # callbacks for gpg key importing and confirmation self.gpg_import_func = None self.gpgca_import_func = None self.confirm_func = None # The reason we want to turn this off are things like repoids # called "tmp" in repoquery --repofrompath and/or new1/old1 in repodiff. self.timestamp_check = True self._sack = None self._grabfunc = None self._grab = None def __cmp__(self, other): """ Sort yum repos. by cost, and then by alphanumeric on their id. """ if other is None: return 1 if hasattr(other, 'cost'): ocost = other.cost else: ocost = 1000 ret = cmp(self.cost, ocost) if ret: return ret return cmp(self.id, other.id) def _getSack(self): # FIXME: Note that having the repo hold the sack, which holds "repos" # is not only confusing but creates a circular dep. # Atm. we don't leak memory because RepoStorage.close() is called, # which calls repo.close() which calls sack.close() which removes the # repos from the sack ... thus. breaking the cycle. if self._sack is None: self._sack = sqlitesack.YumSqlitePackageSack( sqlitesack.YumAvailablePackageSqlite) return self._sack sack = property(_getSack) def close(self): if self._sack is not None: self.sack.close() Repository.close(self) def _resetSack(self): self._sack = None def __getProxyDict(self): self.doProxyDict() if self._proxy_dict: return self._proxy_dict return None # consistent access to how proxy information should look (and ensuring # that it's actually determined for the repo) proxy_dict = property(__getProxyDict) def getPackageSack(self): """Returns the instance of this repository's package sack.""" return self.sack def ready(self): """Returns true if this repository is setup and ready for use.""" if hasattr(self, 'metadata_cookie'): return self.repoXML is not None return False def getGroupLocation(self): """Returns the location of the group.""" if 'group_gz' in self.repoXML.fileTypes(): thisdata = self.repoXML.getData('group_gz') else: thisdata = self.repoXML.getData('group') return thisdata.location def __str__(self): return self.id def _checksum(self, sumtype, file, CHUNK=2**16, checksum_can_fail=False, datasize=None): """takes filename, hand back Checksum of it sumtype = md5 or sha filename = /path/to/file CHUNK=65536 by default""" try: return misc.checksum(sumtype, file, CHUNK, datasize) except (Errors.MiscError, EnvironmentError), e: if checksum_can_fail: return None raise Errors.RepoError, 'Error opening file for checksum: %s' % e def dump(self): output = '[%s]\n' % self.id # we exclude all vars which start with _ or are in this list: excluded_vars = ('mediafunc', 'sack', 'metalink_data', 'grab', 'grabfunc', 'repoXML', 'cfg', 'retrieved', 'mirrorlistparsed', 'gpg_import_func', 'gpgca_import_func', 'failure_obj', 'callback', 'confirm_func', 'groups_added', 'interrupt_callback', 'id', 'mirror_failure_obj', 'repo_config_age', 'groupsfilename', 'copy_local', 'basecachedir', 'http_headers', 'metadata_cookie', 'metadata_cookie_fn', 'quick_enable_disable', 'repoMDFile', 'timestamp_check', 'urls', 'mirrorurls', 'yumvar', 'repofile') for attr in dir(self): if attr.startswith('_'): continue if attr in excluded_vars: continue if isinstance(getattr(self, attr), types.MethodType): continue res = getattr(self, attr) if not res and type(res) not in (type(False), type(0)): res = '' if type(res) == types.ListType: res = ',\n '.join(res) output = output + '%s = %s\n' % (attr, res) return output def enablePersistent(self): """Persistently enables this repository.""" self.enable() try: config.writeRawRepoFile(self,only=['enabled']) except IOError, e: if e.errno == errno.EACCES: logger.warning(e) else: raise IOError, str(e) def disablePersistent(self): """Persistently disables this repository.""" self.disable() try: config.writeRawRepoFile(self,only=['enabled']) except IOError, e: if e.errno == errno.EACCES: logger.warning(e) else: raise IOError, str(e) def check(self): """self-check the repo information - if we don't have enough to move on then raise a repo error""" if len(self._urls) < 1 and not self.mediaid: raise Errors.RepoError, \ 'Cannot find a valid baseurl for repo: %s' % self.id def doProxyDict(self): if self._proxy_dict: return self._proxy_dict = {} # zap it proxy_string = None empty = (None, '_none_', '') if self.proxy not in empty: proxy_string = '%s' % self.proxy if self.proxy_username not in empty: proxy_parsed = urlparse.urlsplit(self.proxy, allow_fragments=0) proxy_proto = proxy_parsed[0] proxy_host = proxy_parsed[1] # http://foo:123 == ('http', 'foo:123', '', '', '') # don't turn that into: http://foo:123? - bug#328121 if proxy_parsed[2] == '': proxy_rest = '' else: proxy_rest = proxy_parsed[2] + '?' + proxy_parsed[3] proxy_string = '%s://%s@%s%s' % (proxy_proto, self.proxy_username, proxy_host, proxy_rest) if self.proxy_password not in empty: proxy_string = '%s://%s:%s@%s%s' % (proxy_proto, self.proxy_username, self.proxy_password, proxy_host, proxy_rest) if proxy_string is not None: self._proxy_dict['http'] = proxy_string self._proxy_dict['https'] = proxy_string self._proxy_dict['ftp'] = proxy_string def __headersListFromDict(self, cache=True): """Convert our dict of headers to a list of 2-tuples for urlgrabber.""" headers = [] for key in self.http_headers: headers.append((key, self.http_headers[key])) if not (cache or 'Pragma' in self.http_headers): headers.append(('Pragma', 'no-cache')) return headers def setupGrab(self): warnings.warn('setupGrab() will go away in a future version of Yum.\n', Errors.YumFutureDeprecationWarning, stacklevel=2) self._setupGrab() def _setupGrab(self): """sets up the grabber functions with the already stocked in urls for the mirror groups""" if self.failovermethod == 'roundrobin': mgclass = urlgrabber.mirror.MGRandomOrder else: mgclass = urlgrabber.mirror.MirrorGroup ugopts = self._default_grabopts() self._grabfunc = URLGrabber(progress_obj=self.callback, failure_callback=self.failure_obj, interrupt_callback=self.interrupt_callback, copy_local=self.copy_local, reget='simple', **ugopts) self._grab = mgclass(self._grabfunc, self.urls, failure_callback=self.mirror_failure_obj) def _default_grabopts(self, cache=True): opts = { 'keepalive': self.keepalive, 'bandwidth': self.bandwidth, 'retry': self.retries, 'throttle': self.throttle, 'proxies': self.proxy_dict, 'timeout': self.timeout, 'http_headers': tuple(self.__headersListFromDict(cache=cache)), 'ssl_verify_peer': self.sslverify, 'ssl_verify_host': self.sslverify, 'ssl_ca_cert': self.sslcacert, 'ssl_cert': self.sslclientcert, 'ssl_key': self.sslclientkey, 'user_agent': default_grabber.opts.user_agent, 'username': self.username, 'password': self.password, } return opts def _getgrabfunc(self): if not self._grabfunc or self._callbacks_changed: self._setupGrab() self._callbacks_changed = False return self._grabfunc def _getgrab(self): if not self._grab or self._callbacks_changed: self._setupGrab() self._callbacks_changed = False return self._grab grabfunc = property(lambda self: self._getgrabfunc()) grab = property(lambda self: self._getgrab()) def _dirSetupMkdir_p(self, dpath): """make the necessary directory path, if possible, raise on failure""" if os.path.exists(dpath) and os.path.isdir(dpath): return if self.cache: raise Errors.RepoError, "Cannot access repository dir %s" % dpath try: os.makedirs(dpath, mode=0755) except OSError, e: msg = "%s: %s %s: %s" % ("Error making cache directory", dpath, "error was", e) raise Errors.RepoError, msg def dirSetup(self): """make the necessary dirs, if possible, raise on failure""" cachedir = os.path.join(self.basecachedir, self.id) persistdir = os.path.join(self.base_persistdir, self.id) pkgdir = os.path.join(cachedir, 'packages') hdrdir = os.path.join(cachedir, 'headers') self.setAttribute('_dir_setup_cachedir', cachedir) self.setAttribute('_dir_setup_pkgdir', pkgdir) self.setAttribute('_dir_setup_hdrdir', hdrdir) self.setAttribute('_dir_setup_persistdir', persistdir) ext='' if os.geteuid() != 0: ext = '-ro' self.setAttribute('_dir_setup_gpgdir', persistdir + '/gpgdir' + ext) self.setAttribute('_dir_setup_gpgcadir', persistdir + '/gpgcadir' + ext) cookie = self.cachedir + '/' + self.metadata_cookie_fn self.setAttribute('_dir_setup_metadata_cookie', cookie) for dir in [self.cachedir, self.pkgdir]: self._dirSetupMkdir_p(dir) # persistdir is really root-only but try the make anyway and just # catch the exception for dir in [self.persistdir]: try: self._dirSetupMkdir_p(dir) except Errors.RepoError, e: pass # if we're using a cachedir that's not the system one, copy over these # basic items from the system one self._preload_md_from_system_cache('repomd.xml') self._preload_md_from_system_cache('cachecookie') self._preload_md_from_system_cache('mirrorlist.txt') self._preload_md_from_system_cache('metalink.xml') def _dirGetAttr(self, attr): """ Make the directory attributes call .dirSetup() if needed. """ attr = '_dir_setup_' + attr if not hasattr(self, attr): self.dirSetup() return getattr(self, attr) def _dirSetAttr(self, attr, val): """ Make the directory attributes call .dirSetup() if needed. """ attr = '_dir_setup_' + attr if not hasattr(self, attr): self.dirSetup() if attr == '_dir_setup_pkgdir': if not hasattr(self, '_old_pkgdirs'): self._old_pkgdirs = [] self._old_pkgdirs.append(getattr(self, attr)) ret = setattr(self, attr, val) if attr in ('_dir_setup_pkgdir', ): self._dirSetupMkdir_p(val) return ret cachedir = property(lambda self: self._dirGetAttr('cachedir')) persistdir = property(lambda self: self._dirGetAttr('persistdir')) pkgdir = property(lambda self: self._dirGetAttr('pkgdir'), lambda self, x: self._dirSetAttr('pkgdir', x)) hdrdir = property(lambda self: self._dirGetAttr('hdrdir'), lambda self, x: self._dirSetAttr('hdrdir', x)) gpgdir = property(lambda self: self._dirGetAttr('gpgdir'), lambda self, x: self._dirSetAttr('gpgdir', x)) gpgcadir = property(lambda self: self._dirGetAttr('gpgcadir'), lambda self, x: self._dirSetAttr('gpgcadir', x)) metadata_cookie = property(lambda self: self._dirGetAttr('metadata_cookie')) def baseurlSetup(self): warnings.warn('baseurlSetup() will go away in a future version of Yum.\n', Errors.YumFutureDeprecationWarning, stacklevel=2) self._baseurlSetup() def _hack_mirrorlist_for_anaconda(self): # Anaconda doesn't like having mirrorlist and metalink, so we allow # mirrorlist to act like metalink. Except we'd really like to know which # we have without parsing it ... and want to store it in the right # place etc. # So here is #1 hack: see if the metalin kis unset and the mirrorlist # URL contains the string "metalink", if it does we copy it over. if self.metalink: return if not self.mirrorlist: return if self.mirrorlist.find("metalink") == -1: return self.metalink = self.mirrorlist def _baseurlSetup(self): """go through the baseurls and mirrorlists and populate self.urls with valid ones, run self.check() at the end to make sure it worked""" self.baseurl = self._replace_and_check_url(self.baseurl) # FIXME: We put all the mirrors in .baseurl as well as # .urls for backward compat. (see bottom of func). So we'll save this # out for repolist -v ... or anything else wants to know the baseurl self._orig_baseurl = self.baseurl mirrorurls = [] self._hack_mirrorlist_for_anaconda() if self.metalink and not self.mirrorlistparsed: # FIXME: This is kind of lying to API callers mirrorurls.extend(list(self.metalink_data.urls())) self.mirrorlistparsed = True if self.mirrorlist and not self.mirrorlistparsed: mirrorurls.extend(self._getMirrorList()) self.mirrorlistparsed = True self.mirrorurls = self._replace_and_check_url(mirrorurls) self._urls = self.baseurl + self.mirrorurls # if our mirrorlist is just screwed then make sure we unlink a mirrorlist cache if len(self._urls) < 1: if hasattr(self, 'mirrorlist_file') and os.path.exists(self.mirrorlist_file): if not self.cache: try: misc.unlink_f(self.mirrorlist_file) except (IOError, OSError), e: print 'Could not delete bad mirrorlist file: %s - %s' % (self.mirrorlist_file, e) else: print 'removing mirrorlist with no valid mirrors: %s' % self.mirrorlist_file # store them all back in baseurl for compat purposes self.baseurl = self._urls self.check() def _replace_and_check_url(self, url_list): goodurls = [] skipped = None for url in url_list: # obvious bogons get ignored b/c, we could get more interesting checks but if url in ['', None]: continue url = parser.varReplace(url, self.yumvar) if url[-1] != '/': url= url + '/' try: # This started throwing ValueErrors, BZ 666826 (s,b,p,q,f,o) = urlparse.urlparse(url) except (ValueError, IndexError, KeyError), e: s = 'blah' if s not in ['http', 'ftp', 'file', 'https']: skipped = url continue else: goodurls.append(url) if skipped is not None: # Caller cleans up for us. if goodurls: print 'YumRepo Warning: Some mirror URLs are not using ftp, http[s] or file.\n Eg. %s' % misc.to_utf8(skipped) else: # And raises in this case print 'YumRepo Error: All mirror URLs are not using ftp, http[s] or file.\n Eg. %s' % misc.to_utf8(skipped) return goodurls def _geturls(self): if not self._urls: self._baseurlSetup() return self._urls urls = property(fget=lambda self: self._geturls(), fset=lambda self, value: setattr(self, "_urls", value), fdel=lambda self: setattr(self, "_urls", None)) def _getMetalink(self): if not self._metalink: self.metalink_filename = self.cachedir + '/' + 'metalink.xml' local = self.metalink_filename + '.tmp' if not self._metalinkCurrent(): url = misc.to_utf8(self.metalink) ugopts = self._default_grabopts() try: ug = URLGrabber(progress_obj = self.callback, **ugopts) result = ug.urlgrab(url, local, text=self.id + "/metalink") except urlgrabber.grabber.URLGrabError, e: if not os.path.exists(self.metalink_filename): msg = ("Cannot retrieve metalink for repository: %s. " "Please verify its path and try again" % self ) raise Errors.RepoError, msg # Now, we have an old usable metalink, so we can't move to # a newer repomd.xml ... or checksums won't match. print "Could not get metalink %s error was\n%s: %s" % (url, e.args[0], misc.to_unicode(e.args[1])) self._metadataCurrent = True if not self._metadataCurrent: try: self._metalink = metalink.MetaLinkRepoMD(result) shutil.move(result, self.metalink_filename) except metalink.MetaLinkRepoErrorParseFail, e: # Downloaded file failed to parse, revert (dito. above): print "Could not parse metalink %s error was \n%s"%(url, e) self._metadataCurrent = True misc.unlink_f(result) if self._metadataCurrent: self._metalink = metalink.MetaLinkRepoMD(self.metalink_filename) return self._metalink metalink_data = property(fget=lambda self: self._getMetalink(), fset=lambda self, value: setattr(self, "_metalink", value), fdel=lambda self: setattr(self, "_metalink", None)) def _getFile(self, url=None, relative=None, local=None, start=None, end=None, copy_local=None, checkfunc=None, text=None, reget='simple', cache=True, size=None): """retrieve file from the mirrorgroup for the repo relative to local, optionally get range from start to end, also optionally retrieve from a specific baseurl""" # if local or relative is None: raise an exception b/c that shouldn't happen # if url is not None - then do a grab from the complete url - not through # the mirror, raise errors as need be # if url is None do a grab via the mirror group/grab for the repo # return the path to the local file # if copylocal isn't specified pickup the repo-defined attr if copy_local is None: copy_local = self.copy_local if local is None or relative is None: raise Errors.RepoError, \ "get request for Repo %s, gave no source or dest" % self.id if self.cache == 1: if os.path.exists(local): # FIXME - we should figure out a way return local # to run the checkfunc from here else: # ain't there - raise raise Errors.RepoError, \ "Caching enabled but no local cache of %s from %s" % (local, self) if url: (scheme, netloc, path, query, fragid) = urlparse.urlsplit(url) if self.mediaid and self.mediafunc: discnum = 1 if url: if scheme == "media" and fragid: discnum = int(fragid) try: # FIXME: we need to figure out what really matters to # pass to the media grabber function here result = self.mediafunc(local = local, checkfunc = checkfunc, relative = relative, text = text, copy_local = copy_local, url = url, mediaid = self.mediaid, name = self.name, discnum = discnum, range = (start, end)) return result except Errors.MediaError, e: verbose_logger.log(logginglevels.DEBUG_2, "Error getting package from media; falling back to url %s" %(e,)) if url and scheme != "media": ugopts = self._default_grabopts(cache=cache) ug = URLGrabber(progress_obj = self.callback, copy_local = copy_local, reget = reget, failure_callback = self.failure_obj, interrupt_callback=self.interrupt_callback, checkfunc=checkfunc, size=size, **ugopts) remote = url + '/' + relative try: result = ug.urlgrab(misc.to_utf8(remote), local, text=misc.to_utf8(text), range=(start, end), ) except URLGrabError, e: errstr = "failed to retrieve %s from %s\nerror was %s" % (relative, self.id, e) if self.mirrorurls: errstr +="\n You could try running: yum clean expire-cache" errstr +="\n To get a new set of mirrors." if e.errno == 256: raise Errors.NoMoreMirrorsRepoError, errstr else: raise Errors.RepoError, errstr else: headers = tuple(self.__headersListFromDict(cache=cache)) try: result = self.grab.urlgrab(misc.to_utf8(relative), local, text = misc.to_utf8(text), range = (start, end), copy_local=copy_local, reget = reget, checkfunc=checkfunc, http_headers=headers, size=size ) except URLGrabError, e: errstr = "failure: %s from %s: %s" % (relative, self.id, e) if e.errno == 256: raise Errors.NoMoreMirrorsRepoError, errstr else: raise Errors.RepoError, errstr return result __get = _getFile def getPackage(self, package, checkfunc=None, text=None, cache=True): remote = package.relativepath local = package.localPkg() basepath = package.basepath if self._preload_pkg_from_system_cache(package): if package.verifyLocalPkg(): return local misc.unlink_f(local) return self._getFile(url=basepath, relative=remote, local=local, checkfunc=checkfunc, text=text, cache=cache, size=package.size, ) def getHeader(self, package, checkfunc = None, reget = 'simple', cache = True): remote = package.relativepath local = package.localHdr() start = package.hdrstart end = package.hdrend size = end-start basepath = package.basepath # yes, I know, don't ask if not os.path.exists(self.hdrdir): os.makedirs(self.hdrdir) return self._getFile(url=basepath, relative=remote, local=local, start=start, reget=None, end=end, checkfunc=checkfunc, copy_local=1, cache=cache, size=size, ) def metadataCurrent(self): """Check if there is a metadata_cookie and check its age. If the age of the cookie is less than metadata_expire time then return true else return False. This result is cached, so that metalink/repomd.xml are synchronized.""" if self._metadataCurrent is not None: return self._metadataCurrent mC_def = self.withinCacheAge(self.metadata_cookie, self.metadata_expire) if not mC_def: # Normal path... self._metadataCurrent = mC_def return mC_def # Edge cases, both repomd.xml and metalink (if used). Must exist. repomdfn = self.cachedir + '/' + 'repomd.xml' if not os.path.exists(repomdfn): self._metadataCurrent = False return False self._hack_mirrorlist_for_anaconda() mlfn = self.cachedir + '/' + 'metalink.xml' if self.metalink and not os.path.exists(mlfn): self._metadataCurrent = False return False self._metadataCurrent = True return True # The metalink _shouldn't_ be newer than the repomd.xml or the checksums # will be off, but we only really care when we are downloading the # repomd.xml ... so keep it in mind that they can be off on disk. # Also see _getMetalink() def _metalinkCurrent(self): if self._metadataCurrent is not None: return self._metadataCurrent if self.cache and not os.path.exists(self.metalink_filename): raise Errors.RepoError, 'Cannot find metalink.xml file for %s' %self if self.cache: self._metadataCurrent = True elif not os.path.exists(self.metalink_filename): self._metadataCurrent = False elif self.withinCacheAge(self.metadata_cookie, self.metadata_expire): self._metadataCurrent = True else: self._metadataCurrent = False return self._metadataCurrent def withinCacheAge(self, myfile, expiration_time): """check if any file is older than a certain amount of time. Used for the cachecookie and the mirrorlist return True if w/i the expiration time limit false if the time limit has expired Additionally compare the file to age of the newest .repo or yum.conf file. If any of them are newer then invalidate the cache """ # -1 is special and should never get refreshed if expiration_time == -1 and os.path.exists(myfile): return True val = False if os.path.exists(myfile): cookie_info = os.stat(myfile) if cookie_info[8] + expiration_time > time.time(): val = True # WE ARE FROM THE FUTURE!!!! elif cookie_info[8] > time.time(): val = False # make sure none of our config files for this repo are newer than # us if cookie_info[8] < int(self.repo_config_age): val = False return val def setMetadataCookie(self): """if possible, set touch the metadata_cookie file""" check = self.metadata_cookie if not os.path.exists(self.metadata_cookie): check = self.cachedir if os.access(check, os.W_OK): fo = open(self.metadata_cookie, 'w+') fo.close() del fo def setup(self, cache, mediafunc = None, gpg_import_func=None, confirm_func=None, gpgca_import_func=None): try: self.cache = cache self.mediafunc = mediafunc self.gpg_import_func = gpg_import_func self.gpgca_import_func = gpgca_import_func self.confirm_func = confirm_func except Errors.RepoError, e: raise 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 """ if self.cache and not os.path.exists(local): raise Errors.RepoError, 'Cannot find repomd.xml file for %s' % self if self.cache or self.metadataCurrent(): return True return False def _getFileRepoXML(self, local, text=None, grab_can_fail=None): """ Call _getFile() for the repomd.xml file. """ checkfunc = (self._checkRepoXML, (), {}) if grab_can_fail is None: grab_can_fail = 'old_repo_XML' in self._oldRepoMDData tfname = '' try: # This is named so that "yum clean metadata" picks it up tfname = tempfile.mktemp(prefix='repomd', suffix="tmp.xml", dir=os.path.dirname(local)) result = self._getFile(relative=self.repoMDFile, local=tfname, copy_local=1, text=text, reget=None, checkfunc=checkfunc, cache=self.http_caching == 'all', size=102400) # setting max size as 100K except URLGrabError, e: misc.unlink_f(tfname) if grab_can_fail: return None raise Errors.RepoError, 'Error downloading file %s: %s' % (local, e) except (Errors.NoMoreMirrorsRepoError, Errors.RepoError): misc.unlink_f(tfname) if grab_can_fail: return None raise # This should always work... try: os.rename(result, local) except: # But in case it doesn't... misc.unlink_f(tfname) if grab_can_fail: return None raise Errors.RepoError, 'Error renaming file %s to %s' % (result, local) return local def _parseRepoXML(self, local, parse_can_fail=None): """ Parse the repomd.xml file. """ try: return repoMDObject.RepoMD(self.id, local) except Errors.RepoMDError, e: if parse_can_fail is None: parse_can_fail = 'old_repo_XML' in self._oldRepoMDData if parse_can_fail: return None raise Errors.RepoError, 'Error importing repomd.xml from %s: %s' % (self, e) def _saveOldRepoXML(self, local): """ If we have an older repomd.xml file available, save it out. """ # Cleanup old trash... for fname in glob.glob(self.cachedir + "/*.old.tmp"): misc.unlink_f(fname) if os.path.exists(local): old_local = local + '.old.tmp' # locked, so this is ok shutil.copy2(local, old_local) xml = self._parseRepoXML(old_local, True) if xml is None: return None self._oldRepoMDData = {'old_repo_XML' : xml, 'local' : local, 'old_local' : old_local, 'new_MD_files' : []} return xml return None def _revertOldRepoXML(self): """ If we have older data available, revert to it. """ # If we can't do a timestamp check, then we can be looking at a # completely different repo. from last time ... ergo. we can't revert. # We still want the old data, so we don't download twice. So we # pretend everything is good until the revert. if not self.timestamp_check: raise Errors.RepoError, "Can't download or revert repomd.xml" if 'old_repo_XML' not in self._oldRepoMDData: self._oldRepoMDData = {} return # Unique names mean the rename doesn't work anymore. for fname in self._oldRepoMDData['new_MD_files']: misc.unlink_f(fname) old_data = self._oldRepoMDData self._oldRepoMDData = {} if 'old_local' in old_data: os.rename(old_data['old_local'], old_data['local']) self._repoXML = old_data['old_repo_XML'] if 'old_MD_files' not in old_data: return for revert in old_data['old_MD_files']: os.rename(revert + '.old.tmp', revert) def _doneOldRepoXML(self): """ Done with old data, delete it. """ old_data = self._oldRepoMDData self._oldRepoMDData = {} if 'old_local' in old_data: misc.unlink_f(old_data['old_local']) if 'old_MD_files' not in old_data: return for revert in old_data['old_MD_files']: misc.unlink_f(revert + '.old.tmp') def _get_mdtype_data(self, mdtype, repoXML=None): if repoXML is None: repoXML = self.repoXML if mdtype == 'group' and 'group_gz' in repoXML.fileTypes(): mdtype = 'group_gz' if (mdtype in ['other', 'filelists', 'primary'] and self._check_db_version(mdtype + '_db', repoXML=repoXML)): mdtype += '_db' 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 = misc.decompress(local, fn_only=True) return local def _groupCheckDataMDNewer(self): """ We check the timestamps, if any of the timestamps for the "new" data is older than what we have ... we revert. """ if 'old_repo_XML' not in self._oldRepoMDData: return True old_repo_XML = self._oldRepoMDData['old_repo_XML'] if (self.timestamp_check and old_repo_XML.timestamp > self.repoXML.timestamp): logger.warning("Not using downloaded repomd.xml because it is " "older than what we have:\n" " Current : %s\n Downloaded: %s" % (time.ctime(old_repo_XML.timestamp), time.ctime(self.repoXML.timestamp))) return False return True @staticmethod def _checkRepoXMLMetalink(repoXML, repomd): """ Check parsed repomd.xml against metalink.repomd data. """ if repoXML.timestamp != repomd.timestamp: return False if repoXML.length != repomd.size: return False done = False for checksum in repoXML.checksums: if checksum not in repomd.chksums: continue if repoXML.checksums[checksum] != repomd.chksums[checksum]: return False # All checksums should be trusted, but if we have more than one # then we might as well check them all ... paranoia is good. done = True return done def _checkRepoMetalink(self, repoXML=None, metalink_data=None): """ Check the repomd.xml against the metalink data, if we have it. """ if repoXML is None: repoXML = self._repoXML if metalink_data is None: metalink_data = self.metalink_data if self._checkRepoXMLMetalink(repoXML, metalink_data.repomd): return True # FIXME: We probably want to skip to the first mirror which has the # latest repomd.xml, but say "if we can't find one, use the newest old # repomd.xml" ... alas. that's not so easy to do in urlgrabber atm. for repomd in self.metalink_data.old_repomds: if self._checkRepoXMLMetalink(repoXML, repomd): verbose_logger.log(logginglevels.DEBUG_2, "Using older repomd.xml\n" " Latest: %s\n" " Using: %s" % (time.ctime(metalink_data.repomd.timestamp), time.ctime(repomd.timestamp))) return True return False def _latestRepoXML(self, local): """ Save the Old Repo XML, and if it exists check to see if it's the latest available given the metalink data. """ oxml = self._saveOldRepoXML(local) if not oxml: # No old repomd.xml data return False self._hack_mirrorlist_for_anaconda() if not self.metalink: # Nothing to check it against return False # Get the latest metalink, and the latest repomd data from it repomd = self.metalink_data.repomd if self.timestamp_check and oxml.timestamp > repomd.timestamp: # We have something "newer" than the latest, and have timestamp # checking which will kill anything passing the metalink check. return True # Do we have the latest repomd already return self._checkRepoXMLMetalink(oxml, repomd) def _commonLoadRepoXML(self, text, mdtypes=None): """ Common LoadRepoXML for instant and group, returns False if you should just return. """ local = self.cachedir + '/repomd.xml' if self._repoXML is not None: return False if self._cachingRepoXML(local): caching = True result = local else: caching = False if self._latestRepoXML(local): result = local old_data = self._oldRepoMDData self._repoXML = old_data['old_repo_XML'] else: result = self._getFileRepoXML(local, text) if result is None: # Ignore this as we have a copy self._revertOldRepoXML() return False # if we have a 'fresh' repomd.xml then update the cookie self.setMetadataCookie() if self._repoXML is None: self._repoXML = self._parseRepoXML(result) if self._repoXML is None: self._revertOldRepoXML() return False self._using_old_MD = caching if caching: return False # Skip any work. if not self._groupCheckDataMDNewer(): self._revertOldRepoXML() return False return True def _check_db_version(self, mdtype, repoXML=None): if repoXML is None: repoXML = self.repoXML if mdtype in repoXML.repoData: if DBVERSION == repoXML.repoData[mdtype].dbversion: return True return False # mmdtype is unused, but in theory was == primary # dbmtype == primary_db etc. def _groupCheckDataMDValid(self, data, dbmdtype, mmdtype, file_check=False): """ Check that we already have this data, and that it's valid. Given the DB mdtype and the main mdtype (no _db suffix). """ if data is None: return None if not file_check: compressed = dbmdtype.endswith("_db") local = self._get_mdtype_fname(data, compressed) else: compressed = False local = self._get_mdtype_fname(data, False) if not os.path.exists(local): 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 # YumPackageSack.populate ... and we look for the uncompressed versions # in retrieveMD. self._preload_md_from_system_cache(os.path.basename(local)) if not self._checkMD(local, dbmdtype, openchecksum=compressed, data=data, check_can_fail=True): return None return local def _commonRetrieveDataMD(self, mdtypes=None): """ Retrieve any listed mdtypes, and revert if there was a failure. Also put any of the non-valid mdtype files from the old_repo_XML into the delete list, this means metadata can change filename without us leaking it. """ def _mdtype_eq(omdtype, odata, nmdtype, ndata): """ Check if two returns from _get_mdtype_data() are equal. """ if ndata is None: return False if omdtype != nmdtype: return False if odata.checksum != ndata.checksum: return False # If we turn --unique-md-filenames on without chaning the data, # then we'll get different filenames, but the same checksum. # Atm. just say they are different, to make sure we delete the # old files. orname = os.path.basename(odata.location[1]) nrname = os.path.basename(ndata.location[1]) if orname != nrname: return False return True all_mdtypes = self.retrieved.keys() if mdtypes is None: mdtypes = all_mdtypes reverts = [] if 'old_repo_XML' not in self._oldRepoMDData: old_repo_XML = None else: old_repo_XML = self._oldRepoMDData['old_repo_XML'] self._oldRepoMDData['old_MD_files'] = reverts # Inited twice atm. ... sue me self._oldRepoMDData['new_MD_files'] = [] downloading_with_size = [] downloading_no_size = [] for mdtype in all_mdtypes: (nmdtype, ndata) = self._get_mdtype_data(mdtype) if old_repo_XML: (omdtype, odata) = self._get_mdtype_data(mdtype, repoXML=old_repo_XML) local = self._groupCheckDataMDValid(odata, omdtype,mdtype,True) if local: if _mdtype_eq(omdtype, odata, nmdtype, ndata): continue # If they are the same do nothing # Move this version, we _may_ get a new one. # We delete it on success, revert it back on failure. # We don't copy as we know it's bad due to above test. os.rename(local, local + '.old.tmp') reverts.append(local) # This is the super easy way. We just to see if a generated # file is there for all files, but it should always work. # And anyone who is giving us MD with blah and blah.sqlite # which are different types, can play a game I like to call # "come here, ouch". gen_local = local + '.sqlite' if os.path.exists(gen_local): os.rename(gen_local, gen_local + '.old.tmp') reverts.append(gen_local) if ndata is None: # Doesn't exist in this repo continue if mdtype not in mdtypes: continue # No old repomd data, but we might still have uncompressed MD if self._groupCheckDataMDValid(ndata, nmdtype, mdtype): continue if ndata.size is None: downloading_no_size.append((ndata, nmdtype)) else: downloading_with_size.append((ndata, nmdtype)) if len(downloading_with_size) == 1: downloading_no_size.extend(downloading_with_size) downloading_with_size = [] remote_size = 0 local_size = 0 for (ndata, nmdtype) in downloading_with_size: # Get total size... remote_size += int(ndata.size) for (ndata, nmdtype) in downloading_with_size: urlgrabber.progress.text_meter_total_size(remote_size, local_size) if not self._retrieveMD(nmdtype, retrieve_can_fail=True): self._revertOldRepoXML() return False local_size += int(ndata.size) urlgrabber.progress.text_meter_total_size(0) for (ndata, nmdtype) in downloading_no_size: if not self._retrieveMD(nmdtype, retrieve_can_fail=True): self._revertOldRepoXML() return False for (ndata, nmdtype) in downloading_with_size + downloading_no_size: local = self._get_mdtype_fname(ndata, False) if nmdtype.endswith("_db"): # Uncompress any compressed files dl_local = local local = misc.decompress(dl_local) misc.unlink_f(dl_local) self._oldRepoMDData['new_MD_files'].append(local) self._doneOldRepoXML() return True def _groupLoadRepoXML(self, text=None, mdtypes=None): """ Retrieve the new repomd.xml from the repository, then check it and parse it. If it fails we revert to the old version and pretend that is fine. If the new repomd.xml requires new version of files that we have, like updateinfo.xml, we download those too and if any of those fail, we again revert everything and pretend old data is good. """ if self._commonLoadRepoXML(text): self._commonRetrieveDataMD(mdtypes) def _mdpolicy2mdtypes(self): md_groups = {'instant' : [], 'group:primary' : ['primary'], 'group:small' : ["primary", "updateinfo"], 'group:main' : ["primary", "group", "filelists", "updateinfo", "prestodelta"]} mdtypes = set() if type(self.mdpolicy) in types.StringTypes: mdtypes.update(md_groups.get(self.mdpolicy, [self.mdpolicy])) else: for mdpolicy in self.mdpolicy: mdtypes.update(md_groups.get(mdpolicy, [mdpolicy])) if not mdtypes or 'group:all' in mdtypes: mdtypes = None else: mdtypes = sorted(list(mdtypes)) return mdtypes def _loadRepoXML(self, text=None): """retrieve/check/read in repomd.xml from the repository""" try: return self._groupLoadRepoXML(text, self._mdpolicy2mdtypes()) except KeyboardInterrupt: self._revertOldRepoXML() # Undo metadata cookie? raise raise Errors.RepoError, 'Bad loadRepoXML policy: %s' % (self.mdpolicy) def _getRepoXML(self): if self._repoXML: return self._repoXML try: self._loadRepoXML(text=self) except Errors.RepoError, e: msg = ("Cannot retrieve repository metadata (repomd.xml) for repository: %s. " "Please verify its path and try again" % self ) raise Errors.RepoError, msg return self._repoXML repoXML = property(fget=lambda self: self._getRepoXML(), fset=lambda self, val: setattr(self, "_repoXML", val), fdel=lambda self: setattr(self, "_repoXML", None)) def _checkRepoXML(self, fo): if type(fo) is types.InstanceType: filepath = fo.filename else: filepath = fo if self.repo_gpgcheck and not self._override_sigchecks: if misc.gpgme is None: raise URLGrabError(-1, 'pygpgme is not working so repomd.xml can not be verified for %s' % (self)) sigfile = self.cachedir + '/repomd.xml.asc' try: result = self._getFile(relative='repodata/repomd.xml.asc', copy_local=1, local = sigfile, text='%s/signature' % self.id, reget=None, checkfunc=None, cache=self.http_caching == 'all', size=102400) except URLGrabError, e: raise URLGrabError(-1, 'Error finding signature for repomd.xml for %s: %s' % (self, e)) valid = misc.valid_detached_sig(result, filepath, self.gpgdir) if not valid and self.gpg_import_func: try: self.gpg_import_func(self, self.confirm_func) except Errors.YumBaseError, e: raise URLGrabError(-1, 'Gpg Keys not imported, cannot verify repomd.xml for repo %s' % (self)) valid = misc.valid_detached_sig(result, filepath, self.gpgdir) if not valid: raise URLGrabError(-1, 'repomd.xml signature could not be verified for %s' % (self)) try: repoXML = repoMDObject.RepoMD(self.id, filepath) except Errors.RepoMDError, e: raise URLGrabError(-1, 'Error importing repomd.xml for %s: %s' % (self, e)) self._hack_mirrorlist_for_anaconda() if self.metalink and not self._checkRepoMetalink(repoXML): raise URLGrabError(-1, 'repomd.xml does not match metalink for %s' % self) def checkMD(self, fn, mdtype, openchecksum=False): """check the metadata type against its checksum""" return self._checkMD(fn, mdtype, openchecksum) def _checkMD(self, fn, mdtype, openchecksum=False, data=None, check_can_fail=False): """ Internal function, use .checkMD() from outside yum. """ thisdata = data # So the argument name is nicer if thisdata is None: thisdata = self.repoXML.getData(mdtype) # Note openchecksum means do it after you've uncompressed the data. if openchecksum: (r_ctype, r_csum) = thisdata.openchecksum # get the remote checksum size = thisdata.opensize else: (r_ctype, r_csum) = thisdata.checksum # get the remote checksum size = thisdata.size if type(fn) == types.InstanceType: # this is an urlgrabber check file = fn.filename else: file = fn if size is not None: size = int(size) try: # get the local checksum l_csum = self._checksum(r_ctype, file, datasize=size) except Errors.RepoError, e: if check_can_fail: return None raise URLGrabError(-3, 'Error performing checksum') if l_csum == r_csum: return 1 else: if check_can_fail: return None raise URLGrabError(-1, 'Metadata file does not match checksum') def retrieveMD(self, mdtype): """base function to retrieve metadata files from the remote url returns the path to the local metadata file of a 'mdtype' mdtype can be 'primary', 'filelists', 'other' or 'group'.""" return self._retrieveMD(mdtype) def _retrieveMD(self, mdtype, retrieve_can_fail=False): """ 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) (r_base, remote) = thisdata.location fname = os.path.basename(remote) local = self.cachedir + '/' + fname if self.retrieved.get(mdtype): # got it, move along return local if self.cache == 1: if os.path.exists(local): try: self.checkMD(local, mdtype) except URLGrabError, e: raise Errors.RepoError, \ "Caching enabled and local cache: %s does not match checksum" % local else: return local else: # ain't there - raise raise Errors.RepoError, \ "Caching enabled but no local cache of %s from %s" % (local, self) if (os.path.exists(local) or self._preload_md_from_system_cache(os.path.basename(local))): if self._checkMD(local, mdtype, check_can_fail=True): self.retrieved[mdtype] = 1 return local # it's the same return the local one 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', size=thisdata.size) except (Errors.NoMoreMirrorsRepoError, Errors.RepoError): if retrieve_can_fail: return None raise except URLGrabError, e: if retrieve_can_fail: return None raise Errors.RepoError, \ "Could not retrieve %s matching remote checksum from %s" % (local, self) else: self.retrieved[mdtype] = 1 return local def getPrimaryXML(self): """this gets you the path to the primary.xml file, retrieving it if we need a new one""" return self.retrieveMD('primary') def getFileListsXML(self): """this gets you the path to the filelists.xml file, retrieving it if we need a new one""" return self.retrieveMD('filelists') def getOtherXML(self): return self.retrieveMD('other') def getGroups(self): """gets groups and returns group file path for the repository, if there is none it returns None""" if 'group_gz' in self.repoXML.fileTypes(): return self._retrieveMD('group_gz', retrieve_can_fail=True) return self._retrieveMD('group', retrieve_can_fail=True) def setCallback(self, callback): self.callback = callback self._callbacks_changed = True def setFailureObj(self, failure_obj): self.failure_obj = failure_obj self._callbacks_changed = True def setMirrorFailureObj(self, failure_obj): self.mirror_failure_obj = failure_obj self._callbacks_changed = True def setInterruptCallback(self, callback): self.interrupt_callback = callback self._callbacks_changed = True def _readMirrorList(self, fo, url=None): """ read the mirror list from the specified file object """ returnlist = [] content = [] if fo is not None: try: content = fo.readlines() except Exception, e: if url is None: # Shouldn't happen url = "" print "Could not read mirrorlist %s, error was \n%s" %(url, e) content = [] for line in content: if re.match('\s*(#|$)', line): continue mirror = line.rstrip() # no more trailing \n's mirror = mirror.replace('$ARCH', '$BASEARCH') returnlist.append(mirror) return (returnlist, content) def _getMirrorList(self): """retrieve an up2date-style mirrorlist file from our mirrorlist url, also save the file to the local repo dir and use that if cache expiry not expired we also s/$ARCH/$BASEARCH/ and move along return the baseurls from the mirrorlist file """ self.mirrorlist_file = self.cachedir + '/' + 'mirrorlist.txt' fo = None cacheok = False if self.withinCacheAge(self.mirrorlist_file, self.mirrorlist_expire): cacheok = True fo = open(self.mirrorlist_file, 'r') url = 'file://' + self.mirrorlist_file # just to keep self._readMirrorList(fo,url) happy else: url = self.mirrorlist scheme = urlparse.urlparse(url)[0] if scheme == '': url = 'file://' + url ugopts = self._default_grabopts() try: fo = urlgrabber.grabber.urlopen(url, **ugopts) except urlgrabber.grabber.URLGrabError, e: print "Could not retrieve mirrorlist %s error was\n%s: %s" % (url, e.args[0], misc.to_unicode(e.args[1])) fo = None (returnlist, content) = self._readMirrorList(fo, url) if returnlist: if not self.cache and not cacheok: output = open(self.mirrorlist_file, 'w') for line in content: output.write(line) output.close() elif not cacheok and os.path.exists(self.mirrorlist_file): # New mirror file failed, so use the old one (better than nothing) os.utime(self.mirrorlist_file, None) return self._readMirrorList(open(self.mirrorlist_file, 'r'))[0] return returnlist def _preload_file(self, fn, destfn): """attempts to copy the file, if possible""" # don't copy it if the copy in our users dir is newer or equal if not os.path.exists(fn): return False if os.path.exists(destfn): if os.stat(fn)[stat.ST_CTIME] <= os.stat(destfn)[stat.ST_CTIME]: return False shutil.copy2(fn, destfn) return True def _preload_file_from_system_cache(self, filename, subdir='', destfn=None): """attempts to copy the file from the system-wide cache, if possible""" if not hasattr(self, 'old_base_cache_dir'): return False if self.old_base_cache_dir == "": return False glob_repo_cache_dir=os.path.join(self.old_base_cache_dir, self.id) if not os.path.exists(glob_repo_cache_dir): return False if os.path.normpath(glob_repo_cache_dir) == os.path.normpath(self.cachedir): return False # Try to copy whatever file it is fn = glob_repo_cache_dir + '/' + subdir + os.path.basename(filename) if destfn is None: destfn = self.cachedir + '/' + subdir + os.path.basename(filename) return self._preload_file(fn, destfn) def _preload_md_from_system_cache(self, filename): """attempts to copy the metadata file from the system-wide cache, if possible""" return self._preload_file_from_system_cache(filename) def _preload_pkg_from_system_cache(self, pkg): """attempts to copy the package from the system-wide cache, if possible""" pname = os.path.basename(pkg.localPkg()) destfn = os.path.join(self.pkgdir, pname) if self._preload_file_from_system_cache(pkg.localPkg(), subdir='packages/', destfn=destfn): return True if not hasattr(self, '_old_pkgdirs'): return False for opkgdir in self._old_pkgdirs: if self._preload_file(os.path.join(opkgdir, pname), destfn): return True return False def _verify_md(self): problems = [] print 'verifying md' try: md_types = self.repoXML.fileTypes() except Errors.RepoError, e: prb = RepoVerifyProblem(1, "failed to load repomd.xml", str(e)) problems.append(prb) return problems for md_type in md_types: print 'verifying %s' % md_type try: self.retrieveMD(md_type) except Errors.RepoError, e: msg = "%s metadata missing or does not match checksum" % md_type prb = RepoVerifyProblem(2, msg, str(e)) problems.append(prb) return problems def _verify_comps(self): print 'verifying comps' problems = [] # grab the comps for this repo # run the xmllint on it # chuck it into a comps object # make sure it parses grpfile = self.getGroups() # 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) except (Errors.GroupsError, Errors.CompsException), e: msg = "comps file failed to add" prb = RepoVerifyProblem(REPO_PROBLEM_COMPS, msg, str(e)) problems.add(prb) else: if c.compscount == 0: msg = "no groups in comps" prb = RepoVerifyProblem(REPO_PROBLEM_COMPS, msg, "") problems.add(prb) return problems def _verify_packages(self): return [] def verify(self, items=['repodata', 'comps']): """download/verify the specified items @items = ['repodata', 'comps'] can include: repodata, comps, packages """ problems = [] if 'repodata' in items: problems.extend(self._verify_md()) if 'comps' in items: if self.enablegroups: problems.extend(self._verify_comps()) if 'packages' in items: problems.extend(self._verify_packages()) # what else can we verify? return problems def getMirrorList(mirrorlist, pdict = None): warnings.warn('getMirrorList() will go away in a future version of Yum.\n', Errors.YumFutureDeprecationWarning, stacklevel=2) """retrieve an up2date-style mirrorlist file from a url, we also s/$ARCH/$BASEARCH/ and move along returns a list of the urls from that file""" returnlist = [] if hasattr(urlgrabber.grabber, 'urlopen'): urlresolver = urlgrabber.grabber else: import urllib urlresolver = urllib scheme = urlparse.urlparse(mirrorlist)[0] if scheme == '': url = 'file://' + mirrorlist else: url = mirrorlist try: fo = urlresolver.urlopen(url, proxies=pdict) except urlgrabber.grabber.URLGrabError, e: print "Could not retrieve mirrorlist %s error was\n%s: %s" % (url, e.args[0], misc.to_unicode(e.args[1])) fo = None if fo is not None: content = fo.readlines() for line in content: if re.match('\s*(#|$)', line): continue mirror = line.rstrip() # no more trailing \n's mirror = mirror.replace('$ARCH', '$BASEARCH') returnlist.append(mirror) return returnlist class RepoVerifyProblem: """ Holder for each "problem" we find with a repo.verify(). """ def __init__(self, type, msg, details, fake=False): self.type = type self.message = msg self.details = details self.fake = fake yum-3.4.3/yum/Makefile0000664000076400007640000000111111602434452013572 0ustar jamesjamesPYTHON=python PACKAGE = $(shell basename `pwd`) PYFILES = $(wildcard *.py) PYVER := $(shell $(PYTHON) -c 'import sys; print "%.3s" %(sys.version)') PYSYSDIR := $(shell $(PYTHON) -c 'import sys; print sys.prefix') PYLIBDIR = $(PYSYSDIR)/lib/python$(PYVER) PKGDIR = $(PYLIBDIR)/site-packages/$(PACKAGE) all: echo "Nothing to do" clean: rm -f *.pyc *.pyo *~ install: mkdir -p $(DESTDIR)/$(PKGDIR) for p in $(PYFILES) ; do \ install -m 644 $$p $(DESTDIR)/$(PKGDIR)/$$p; \ done $(PYTHON) -c "import compileall; compileall.compile_dir('$(DESTDIR)/$(PKGDIR)', 1, '$(PKGDIR)', 1)" yum-3.4.3/yum/pgpmsg.py0000664000076400007640000015222411602434452014015 0ustar jamesjames#! /usr/bin/python -tt ##Copyright (C) 2003,2005,2009 Jens B. Jorgensen ## ##This program is free software; you can redistribute it and/or ##modify it under the terms of the GNU General Public License ##as published by the Free Software Foundation; either version 2 ##of the License, or (at your option) any later version. ## ##This program is distributed in the hope that it will be useful, ##but WITHOUT ANY WARRANTY; without even the implied warranty of ##MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ##GNU General Public License for more details. ## ##You should have received a copy of the GNU General Public License ##along with this program; if not, write to the Free Software ##Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 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: # Python-2.4.z ... gah! import sha import md5 class hashlib: @staticmethod def new(algo): if algo == 'md5': return md5.new() if algo == 'sha1': return sha.new() raise ValueError, "Bad checksum type" debug = None # Cypher Type Byte # bits 7,6 of the CTB say what kind it is # we only have reserved defined CTB_76_NORMAL = 0x80 CTB_76_NEW = 0xc0 CTB_76_MASK = 0xc0 # CTB packet type, bits 5,4,3,2 CTB_PKTV2_MASK = 0x3c # 1111 - mask for this field CTB_PKT_MASK = 0x3f # 111111 - all the lower bits CTB_PKT_PK_ENC = 1 # 0001 - public-key encrypted session packet CTB_PKT_SIG = 2 # 0010 - signature packet CTB_PKT_SK_ENC = 3 # 0011 - symmetric-key encrypted session packet CTB_PKT_OP_SIG = 4 # 0100 - one-pass signature packet CTB_PKT_SK_CERT = 5 # 0101 - secret-key certificate packet CTB_PKT_PK_CERT = 6 # 0110 - public-key certificate packet CTB_PKT_SK_SUB = 7 # 0111 - secret-key subkey packet CTB_PKT_COMPRESSED = 8 # 1000 - compressed data packet CTB_PKT_ENC = 9 # 1001 - symmetric-key encrypted data packet CTB_PKT_MARKER = 10 # 1010 - marker packet CTB_PKT_LIT = 11 # 1011 - literal data packet CTB_PKT_TRUST = 12 # 1100 - trust packet CTB_PKT_USER_ID = 13 # 1101 - user id packet CTB_PKT_PK_SUB = 14 # 1110 - public subkey packet CTB_PKT_USER_ATTR = 17 # 10001 - user attribute packet CTB_PKT_SYM_ENC_INT = 18 # 10010 - symmetric encrypted integrity packet CTB_PKT_MOD_DETECT = 19 # 10011 - modification detection code packet ctb_pkt_to_str = { CTB_PKT_PK_ENC : 'public-key encrypted session packet', CTB_PKT_SIG : 'signature packet', CTB_PKT_SK_ENC : 'symmetric-key encrypted session packet', CTB_PKT_OP_SIG : 'one-pass signature packet', CTB_PKT_SK_CERT : 'secret-key certificate packet', CTB_PKT_PK_CERT : 'public-key certificate packet', CTB_PKT_SK_SUB : 'secret-key subkey packet', CTB_PKT_COMPRESSED : 'compressed data packet', CTB_PKT_ENC : 'symmetric-key encrypted data packet', CTB_PKT_MARKER : 'marker packet', CTB_PKT_LIT : 'literal data packet', CTB_PKT_TRUST : 'trust packet', CTB_PKT_USER_ID : 'user id packet', CTB_PKT_PK_SUB : 'public subkey packet', CTB_PKT_USER_ATTR : 'user attribute packet', CTB_PKT_SYM_ENC_INT : 'symmetric encrypted integrity packet', CTB_PKT_MOD_DETECT : 'modification detection code packet' } # CTB packet-length CTB_PKT_LEN_MASK = 0x3 # 11 - mask CTB_PKT_LEN_1 = 0 # 00 - 1 byte CTB_PKT_LEN_2 = 1 # 01 - 2 bytes CTB_PKT_LEN_4 = 2 # 10 - 4 bytes CTB_PKT_LEN_UNDEF = 3 # 11 - no packet length supplied # Algorithms # Public Key Algorithms ALGO_PK_RSA_ENC_OR_SIGN = 1 # RSA (Encrypt or Sign) ALGO_PK_RSA_ENC_ONLY = 2 # RSA Encrypt-Only ALGO_PK_RSA_SIGN_ONLY = 3 # RSA Sign-Only ALGO_PK_ELGAMAL_ENC_ONLY = 16 # Elgamal (Encrypt-Only) ALGO_PK_DSA = 17 # DSA (Digital Signature Standard) ALGO_PK_ELLIPTIC_CURVE = 18 # Elliptic Curve ALGO_PK_ECDSA = 19 # ECDSA ALGO_PK_ELGAMAL_ENC_OR_SIGN = 20 # Elgamal (Encrypt or Sign) ALGO_PK_DH = 21 # Diffie-Hellman algo_pk_to_str = { ALGO_PK_RSA_ENC_OR_SIGN : 'RSA (Encrypt or Sign)', ALGO_PK_RSA_ENC_ONLY : 'RSA Encrypt-Only', ALGO_PK_RSA_SIGN_ONLY : 'RSA Sign-Only', ALGO_PK_ELGAMAL_ENC_ONLY : 'Elgamal Encrypt-Only', ALGO_PK_DSA : 'DSA (Digital Signature Standard)', ALGO_PK_ELLIPTIC_CURVE : 'Elliptic Curve', ALGO_PK_ECDSA : 'ECDSA', ALGO_PK_ELGAMAL_ENC_OR_SIGN : 'Elgamal (Encrypt or Sign)', ALGO_PK_DH : 'Diffie-Hellman' } # Symmetric Key Algorithms ALGO_SK_PLAIN = 0 # Plaintext or unencrypted data ALGO_SK_IDEA = 1 # IDEA ALGO_SK_3DES = 2 # Triple-DES ALGO_SK_CAST5 = 3 # CAST5 ALGO_SK_BLOWFISH = 4 # Blowfish ALGO_SK_SAFER_SK128 = 5 # SAFER-SK128 ALGO_SK_DES_SK = 6 # DES/SK ALGO_SK_AES_128 = 7 # AES 128-bit ALGO_SK_AES_192 = 8 # AES 192-bit ALGO_SK_AES_256 = 9 # AES 256-bit ALGO_SK_TWOFISH_256 = 10 # Twofish 256 algo_sk_to_str = { ALGO_SK_PLAIN : 'Plaintext or unencrypted data', ALGO_SK_IDEA : 'IDEA', ALGO_SK_3DES : 'Triple-DES', ALGO_SK_CAST5 : 'CAST5', ALGO_SK_BLOWFISH : 'Blowfish', ALGO_SK_SAFER_SK128 : 'SAFER-SK128', ALGO_SK_DES_SK : 'DES/SK', ALGO_SK_AES_128 : 'AES 128-bit', ALGO_SK_AES_192 : 'AES 192-bit', ALGO_SK_AES_256 : 'AES 256-bit', ALGO_SK_TWOFISH_256 : 'Twofish 256-bit' } # Compression Algorithms ALGO_COMP_UNCOMP = 0 # Uncompressed ALGO_COMP_ZIP = 1 # ZIP ALGO_COMP_ZLIB = 2 # ZLIB ALGO_COMP_BZIP2 = 3 # BZip2 algo_comp_to_str = { ALGO_COMP_UNCOMP : 'Uncompressed', ALGO_COMP_ZIP : 'ZIP', ALGO_COMP_ZLIB : 'ZLIB', ALGO_COMP_BZIP2 : 'BZip2' } # Hash Algorithms ALGO_HASH_MD5 = 1 # MD5 ALGO_HASH_SHA1 = 2 # SHA1 ALGO_HASH_RIPEMD160 = 3 # RIPEMD160 ALGO_HASH_SHA_DBL = 4 # double-width SHA ALGO_HASH_MD2 = 5 # MD2 ALGO_HASH_TIGER192 = 6 # TIGER192 ALGO_HASH_HAVAL_5_160 = 7 # HAVAL-5-160 ALGO_HASH_SHA256 = 8 # SHA256 ALGO_HASH_SHA384 = 9 # SHA384 ALGO_HASH_SHA512 = 10 # SHA512 ALGO_HASH_SHA224 = 11 # SHA224 algo_hash_to_str = { ALGO_HASH_MD5 : 'MD5', ALGO_HASH_SHA1 : 'SHA1', ALGO_HASH_RIPEMD160 : 'RIPEMD160', ALGO_HASH_SHA_DBL : 'double-width SHA', ALGO_HASH_MD2 : 'MD2', ALGO_HASH_TIGER192 : 'TIGER192', ALGO_HASH_HAVAL_5_160 : 'HAVAL-5-160', ALGO_HASH_SHA256 : 'SHA256', ALGO_HASH_SHA384 : 'SHA384', ALGO_HASH_SHA512 : 'SHA512', ALGO_HASH_SHA224 : 'SHA224' } # Signature types SIG_TYPE_DOCUMENT = 0x00 # document signature, binary image SIG_TYPE_DOCUMENT_CANON = 0x01 # document signature, canonical text SIG_TYPE_STANDALONE = 0x02 # signature over just subpackets SIG_TYPE_PK_USER_GEN = 0x10 # public key packet and user ID packet, generic certification SIG_TYPE_PK_USER_PER = 0x11 # public key packet and user ID packet, persona SIG_TYPE_PK_USER_CAS = 0x12 # public key packet and user ID packet, casual certification SIG_TYPE_PK_USER_POS = 0x13 # public key packet and user ID packet, positive certification SIG_TYPE_SUBKEY_BIND = 0x18 # subkey binding SIG_TYPE_KEY = 0x1F # key signature SIG_TYPE_KEY_REVOKE = 0x20 # key revocation SIG_TYPE_SUBKEY_REVOKE = 0x28 # subkey revocation SIG_TYPE_CERT_REVOKE = 0x30 # certificate revocation SIG_TYPE_TIMESTAMP = 0x40 # timestamp sig_type_to_str = { SIG_TYPE_DOCUMENT : 'document signature, binary image', SIG_TYPE_DOCUMENT_CANON : 'document signature, canonical text', SIG_TYPE_STANDALONE : 'signature over just subpackets', SIG_TYPE_PK_USER_GEN : 'public key packet and user ID packet, generic certification', SIG_TYPE_PK_USER_PER : 'public key packet and user ID packet, persona', SIG_TYPE_PK_USER_CAS : 'public key packet and user ID packet, casual certification', SIG_TYPE_PK_USER_POS : 'public key packet and user ID packet, positive certification', SIG_TYPE_SUBKEY_BIND : 'subkey binding', SIG_TYPE_KEY : 'key signature', SIG_TYPE_KEY_REVOKE : 'key revocation', SIG_TYPE_SUBKEY_REVOKE : 'subkey revocation', SIG_TYPE_CERT_REVOKE : 'certificate revocation', SIG_TYPE_TIMESTAMP : 'timestamp' } # Signature sub-packet types SIG_SUB_TYPE_CREATE_TIME = 2 # signature creation time SIG_SUB_TYPE_EXPIRE_TIME = 3 # signature expiration time SIG_SUB_TYPE_EXPORT_CERT = 4 # exportable certification SIG_SUB_TYPE_TRUST_SIG = 5 # trust signature SIG_SUB_TYPE_REGEXP = 6 # regular expression SIG_SUB_TYPE_REVOCABLE = 7 # revocable SIG_SUB_TYPE_KEY_EXPIRE = 9 # key expiration time SIG_SUB_TYPE_PLACEHOLDER = 10 # placeholder for backward compatibility SIG_SUB_TYPE_PREF_SYMM_ALGO = 11 # preferred symmetric algorithms SIG_SUB_TYPE_REVOKE_KEY = 12 # revocation key SIG_SUB_TYPE_ISSUER_KEY_ID = 16 # issuer key ID SIG_SUB_TYPE_NOTATION = 20 # notation data SIG_SUB_TYPE_PREF_HASH_ALGO = 21 # preferred hash algorithms SIG_SUB_TYPE_PREF_COMP_ALGO = 22 # preferred compression algorithms SIG_SUB_TYPE_KEY_SRV_PREF = 23 # key server preferences SIG_SUB_TYPE_PREF_KEY_SRVR = 24 # preferred key server SIG_SUB_TYPE_PRIM_USER_ID = 25 # primary user id SIG_SUB_TYPE_POLICY_URI = 26 # policy URI SIG_SUB_TYPE_KEY_FLAGS = 27 # key flags SIG_SUB_TYPE_SGNR_USER_ID = 28 # signer's user id SIG_SUB_TYPE_REVOKE_REASON = 29 # reason for revocation SIG_SUB_TYPE_FEATURES = 30 # features SIG_SUB_TYPE_SIG_TARGET = 31 # signature target SIG_SUB_TYPE_EMBEDDED_SIG = 32 # embedded signature sig_sub_type_to_str = { SIG_SUB_TYPE_CREATE_TIME : 'signature creation time', SIG_SUB_TYPE_EXPIRE_TIME : 'signature expiration time', SIG_SUB_TYPE_EXPORT_CERT : 'exportable certification', SIG_SUB_TYPE_TRUST_SIG : 'trust signature', SIG_SUB_TYPE_REGEXP : 'regular expression', SIG_SUB_TYPE_REVOCABLE : 'revocable', SIG_SUB_TYPE_KEY_EXPIRE : 'key expiration time', SIG_SUB_TYPE_PLACEHOLDER : 'placeholder for backward compatibility', SIG_SUB_TYPE_PREF_SYMM_ALGO : 'preferred symmetric algorithms', SIG_SUB_TYPE_REVOKE_KEY : 'revocation key', SIG_SUB_TYPE_ISSUER_KEY_ID : 'issuer key ID', SIG_SUB_TYPE_NOTATION : 'notation data', SIG_SUB_TYPE_PREF_HASH_ALGO : 'preferred hash algorithms', SIG_SUB_TYPE_PREF_COMP_ALGO : 'preferred compression algorithms', SIG_SUB_TYPE_KEY_SRV_PREF : 'key server preferences', SIG_SUB_TYPE_PREF_KEY_SRVR : 'preferred key server', SIG_SUB_TYPE_PRIM_USER_ID : 'primary user id', SIG_SUB_TYPE_POLICY_URI : 'policy URI', SIG_SUB_TYPE_KEY_FLAGS : 'key flags', SIG_SUB_TYPE_SGNR_USER_ID : "signer's user id", SIG_SUB_TYPE_REVOKE_REASON : 'reason for revocation', SIG_SUB_TYPE_FEATURES : 'features', SIG_SUB_TYPE_SIG_TARGET : 'signature target', SIG_SUB_TYPE_EMBEDDED_SIG : 'embedded signature' } # in a signature subpacket there may be a revocation reason, these codes indicate # the reason REVOKE_REASON_NONE = 0 # No reason specified REVOKE_REASON_SUPER = 0x01 # Key is superceded REVOKE_REASON_COMPR = 0x02 # Key has been compromised REVOKE_REASON_NOT_USED = 0x03 # Key is no longer used REVOKE_REASON_ID_INVALID = 0x20 # user id information is no longer valid revoke_reason_to_str = { REVOKE_REASON_NONE : 'No reason specified', REVOKE_REASON_SUPER : 'Key is superceded', REVOKE_REASON_COMPR : 'Key has been compromised', REVOKE_REASON_NOT_USED : 'Key is no longer used', REVOKE_REASON_ID_INVALID : 'user id information is no longer valid' } # These flags are used in a 'key flags' signature subpacket KEY_FLAGS1_MAY_CERTIFY = 0x01 # This key may be used to certify other keys KEY_FLAGS1_MAY_SIGN = 0x02 # This key may be used to sign data KEY_FLAGS1_MAY_ENC_COMM = 0x04 # This key may be used to encrypt communications KEY_FLAGS1_MAY_ENC_STRG = 0x08 # This key may be used to encrypt storage KEY_FLAGS1_PRIV_MAYBE_SPLIT = 0x10 # Private component have be split through secret-sharing mech. KEY_FLAGS1_GROUP = 0x80 # Private component may be among group # A revocation key subpacket has these class values REVOKE_KEY_CLASS_MAND = 0x80 # this bit must always be set REVOKE_KEY_CLASS_SENS = 0x40 # sensitive # Features may be indicated in a signature hashed subpacket PGP_FEATURE_1_MOD_DETECT = 0x01 # Modification detection pgp_feature_to_str = { PGP_FEATURE_1_MOD_DETECT : 'Modification Detection' } def get_whole_number(msg, idx, numlen) : """get_whole_number(msg, idx, numlen) extracts a "whole number" field of length numlen from msg at index idx returns (, new_idx) where the whole number is a long integer and new_idx is the index of the next element in the message""" n = 0L while numlen > 0 : b = (struct.unpack("B", msg[idx:idx+1]))[0] n = n * 256L + long(b) idx = idx + 1 numlen = numlen - 1 return (n, idx) def get_whole_int(msg, idx, numlen) : """get_whole_int(msg, idx, numlen) same as get_whole_number but returns the number as an int for convenience""" n, idx = get_whole_number(msg, idx, numlen) return int(n), idx def pack_long(l) : """pack_long(l) returns big-endian representation of unsigned long integer""" arr = [] while l > 0 : arr.insert(0, struct.pack("B", l & 0xff)) l >>= 8 return ''.join(arr) def pack_mpi(l) : """pack_mpi(l) returns the PGP Multi-Precision Integer representation of unsigned long integer""" s = pack_long(l) # the len is the number of bits, counting only from the MSB, # so we need to account for that bits = (len(s) - 1) * 8 if len(s) > 0 : n = ord(s[0]) while n != 0 : bits += 1 n >>= 1 else : bits = 0 # otherwise bits == -8 return struct.pack(">H", bits) + s def get_sig_subpak_len(msg, idx) : """get_sig_subpak_len(msg, idx) extracts a signature subpacket length field returns (subpak_len, new_idx)""" plen, idx = get_whole_int(msg, idx, 1) if plen < 192 : return plen, idx if plen < 255 : plen2, idx = get_whole_int(msg, idx, 1) return ((plen - 192) << 8) + plen2 + 192, idx return get_whole_int(msg, idx, 4) def get_n_mpi(msg, idx) : """get_mpi(msg, idx) extracts a multi-precision integer field from the message msg at index idx returns (n, , new_idx) where the mpi is a long integer and new_idx is the index of the next element in the message and n is the number of bits of precision in """ ln, idx = get_whole_int(msg, idx, 2) return (ln,) + get_whole_number(msg, idx, (ln+7)/8) def get_mpi(msg, idx) : """get_mpi(msg, idx) extracts a multi-precision integer field from the message msg at index idx returns (, new_idx) where the mpi is a long integer and new_idx is the index of the next element in the message""" l = get_n_mpi(msg, idx) return (l[1], l[2]) def str_to_hex(s) : return ''.join(map(lambda x : hex(ord(x))[2:].zfill(2), list(s))) def duration_to_str(s) : if s == 0 : return 'never' secs = s % 60 s = s / 60 mins = s % 60 s = s / 60 hrs = s % 60 s = s / 24 days = s return '%d days %02d:%02d:%02d' % (days, hrs, mins, secs) def map_to_str(m, vals) : slist = [] # change to a list if it's a single value if type(vals) != types.ListType and type(vals) != types.TupleType : vals = list((vals,)) for i in vals : if i in m : slist.append(m[i]) else : slist.append('unknown(' + str(i) + ')') return ', '.join(slist) class pgp_packet(object) : def __init__(self) : self.pkt_typ = None def __str__(self) : return map_to_str(ctb_pkt_to_str, self.pkt_typ) class public_key(pgp_packet) : def __init__(self) : pgp_packet.__init__(self) self.version = None self.pk_algo = None self.key_size = 0 self.fingerprint_ = None # we cache this upon calculation def fingerprint(self) : # return cached value if we have it if self.fingerprint_ : return self.fingerprint_ # otherwise calculate it now and cache it # v3 and v4 are calculated differently if self.version == 3 : h = hashlib.new('md5') h.update(pack_long(self.pk_rsa_mod)) h.update(pack_long(self.pk_rsa_exp)) self.fingerprint_ = h.digest() elif self.version == 4 : # we hash what would be the whole PGP message containing # the pgp certificate h = hashlib.new('sha1') h.update('\x99') # we need to has the length of the packet as well buf = self.serialize() h.update(struct.pack(">H", len(buf))) h.update(buf) self.fingerprint_ = h.digest() else : raise RuntimeError("unknown public key version %d" % self.version) return self.fingerprint_ def key_id(self) : if self.version == 3 : return pack_long(self.pk_rsa_mod & 0xffffffffffffffffL) elif self.version == 4 : return self.fingerprint()[-8:] def serialize(self) : chunks = [] if self.version == 3 : chunks.append(struct.pack('>BIHB', self.version, int(self.timestamp), self.validity, self.pk_algo)) chunks.append(pack_mpi(self.pk_rsa_mod)) chunks.append(pack_mpi(self.pk_rsa_exp)) elif self.version == 4 : chunks.append(struct.pack('>BIB', self.version, int(self.timestamp), self.pk_algo)) if self.pk_algo == ALGO_PK_RSA_ENC_OR_SIGN or self.pk_algo == ALGO_PK_RSA_SIGN_ONLY : chunks.append(pack_mpi(self.pk_rsa_mod)) chunks.append(pack_mpi(self.pk_rsa_exp)) elif self.pk_algo == ALGO_PK_DSA : chunks.append(pack_mpi(self.pk_dsa_prime_p)) chunks.append(pack_mpi(self.pk_dsa_grp_ord_q)) chunks.append(pack_mpi(self.pk_dsa_grp_gen_g)) chunks.append(pack_mpi(self.pk_dsa_pub_key)) elif self.pk_algo == ALGO_PK_ELGAMAL_ENC_OR_SIGN or self.pk_algo == ALGO_PK_ELGAMAL_ENC_ONLY : chunks.append(pack_mpi(self.pk_elgamal_prime_p)) chunks.append(pack_mpi(self.pk_elgamal_grp_gen_g)) chunks.append(pack_mpi(self.pk_elgamal_pub_key)) else : raise RuntimeError("unknown public key algorithm %d" % (self.pk_algo)) return ''.join(chunks) def deserialize(self, msg, idx, pkt_len) : idx_save = idx self.version, idx = get_whole_int(msg, idx, 1) if self.version != 2 and self.version != 3 and self.version != 4 : raise RuntimeError('unknown public key packet version %d at %d' % (self.version, idx_save)) if self.version == 2 : # map v2 into v3 for coding simplicity since they're structurally the same self.version = 3 self.timestamp, idx = get_whole_number(msg, idx, 4) self.timestamp = float(self.timestamp) if self.version == 3 : self.validity, idx = get_whole_number(msg, idx, 2) self.pk_algo, idx = get_whole_int(msg, idx, 1) if self.pk_algo == ALGO_PK_RSA_ENC_OR_SIGN or self.pk_algo == ALGO_PK_RSA_SIGN_ONLY : self.key_size, self.pk_rsa_mod, idx = get_n_mpi(msg, idx) self.pk_rsa_exp, idx = get_mpi(msg, idx) elif self.pk_algo == ALGO_PK_DSA : l1, self.pk_dsa_prime_p, idx = get_n_mpi(msg, idx) self.pk_dsa_grp_ord_q, idx = get_mpi(msg, idx) self.pk_dsa_grp_gen_g, idx = get_mpi(msg, idx) l2, self.pk_dsa_pub_key, idx = get_n_mpi(msg, idx) self.key_size = l1 + l2 elif self.pk_algo == ALGO_PK_ELGAMAL_ENC_OR_SIGN or self.pk_algo == ALGO_PK_ELGAMAL_ENC_ONLY : self.key_size, self.pk_elgamal_prime_p, idx = get_n_mpi(msg, idx) self.pk_elgamal_grp_gen_g, idx = get_mpi(msg, idx) self.pk_elgamal_pub_key, idx = get_mpi(msg, idx) else : raise RuntimeError("unknown public key algorithm %d at %d" % (self.pk_algo, idx_save)) def __str__(self) : sio = cStringIO.StringIO() sio.write(pgp_packet.__str__(self) + "\n") sio.write("version: " + str(self.version) + "\n") sio.write("timestamp: " + time.ctime(self.timestamp) + "\n") if self.version == 3 : sio.write("validity: " + time.ctime(self.timestamp + self.validity * 24 * 60 * 60) + "\n") sio.write("pubkey algo: " + algo_pk_to_str[self.pk_algo] + "\n") if self.pk_algo == ALGO_PK_RSA_ENC_OR_SIGN or self.pk_algo == ALGO_PK_RSA_SIGN_ONLY : sio.write("pk_rsa_mod: " + hex(self.pk_rsa_mod) + "\n") sio.write("pk_rsa_exp: " + hex(self.pk_rsa_exp) + "\n") elif self.pk_algo == ALGO_PK_DSA : sio.write("pk_dsa_prime_p: " + hex(self.pk_dsa_prime_p) + "\n") sio.write("pk_dsa_grp_ord_q: " + hex(self.pk_dsa_grp_ord_q) + "\n") sio.write("pk_dsa_grp_gen_g: " + hex(self.pk_dsa_grp_gen_g) + "\n") sio.write("pk_dsa_pub_key: " + hex(self.pk_dsa_pub_key) + "\n") elif self.pk_algo == ALGO_PK_ELGAMAL_ENC_OR_SIGN or self.pk_algo == ALGO_PK_ELGAMAL_ENC_ONLY : sio.write("pk_elgamal_prime_p: " + hex(self.pk_elgamal_prime_p) + "\n") sio.write("pk_elgamal_grp_gen_g: " + hex(self.pk_elgamal_grp_gen_g) + "\n") sio.write("pk_elgamal_pub_key: " + hex(self.pk_elgamal_pub_key) + "\n") return sio.getvalue() class user_id(pgp_packet) : def __init__(self) : pgp_packet.__init__(self) self.id = None def deserialize(self, msg, idx, pkt_len) : self.id = msg[idx:idx + pkt_len] def __str__(self) : return pgp_packet.__str__(self) + "\n" + "id: " + self.id + "\n" class user_attribute(pgp_packet) : def __init__(self) : pgp_packet.__init__(self) self.sub_type = None self.data = None def deserialize(self, msg, idx, pkt_len) : self.sub_type, idx = get_whole_int(msg, idx, 1) pkt_len = pkt_len - 1 self.data = msg[idx:idx + pkt_len] def __str__(self) : return pgp_packet.__str__(self) + "\n" + "sub_type: " + str(self.sub_type) + "\ndata: " + str_to_hex(self.data) class signature(pgp_packet) : def __init__(self) : pgp_packet.__init__(self) self.version = None self.sig_type = None self.pk_algo = None self.hash_algo = None self.hash_frag = None def key_id(self) : if self.version == 3 : return self.key_id_ else : i = self.get_hashed_subpak(SIG_SUB_TYPE_ISSUER_KEY_ID) if i : return i[1] i = self.get_unhashed_subpak(SIG_SUB_TYPE_ISSUER_KEY_ID) if i : return i[1] return None def creation_time(self) : if self.version == 3 : return self.timestamp else : i = self.get_hashed_subpak(SIG_SUB_TYPE_CREATE_TIME) return i[1] def expiration(self) : if self.version != 4 : raise ValueError('v3 signatures don\'t have expirations') i = self.get_hashed_subpak(SIG_SUB_TYPE_KEY_EXPIRE) if i : return i[1] return 0 # if not present then it never expires def get_hashed_subpak(self, typ) : for i in self.hashed_subpaks : if i[0] == typ : return i return None def get_unhashed_subpak(self, typ) : for i in self.unhashed_subpaks : if i[0] == typ : return i return None def deserialize_subpacket(self, msg, idx) : sublen, idx = get_sig_subpak_len(msg, idx) subtype, idx = get_whole_int(msg, idx, 1) if subtype == SIG_SUB_TYPE_CREATE_TIME : # key creation time tm, idx = get_whole_number(msg, idx, 4) return (subtype, float(tm)), idx if subtype == SIG_SUB_TYPE_EXPIRE_TIME or subtype == SIG_SUB_TYPE_KEY_EXPIRE : s, idx = get_whole_int(msg, idx, 4) return (subtype, s), idx if subtype == SIG_SUB_TYPE_EXPORT_CERT or subtype == SIG_SUB_TYPE_REVOCABLE : bool, idx = get_whole_int(msg, idx, 1) return (subtype, bool), idx if subtype == SIG_SUB_TYPE_TRUST_SIG : # trust signature trust_lvl, idx = get_whole_int(msg, idx, 1) trust_amt, idx = get_whole_int(msg, idx, 1) return (subtype, trust_lvl, trust_amt), idx if subtype == SIG_SUB_TYPE_REGEXP : # regular expression expr = msg[idx:idx+sublen-1] idx = idx + sublen - 1 return (subtype, expr), idx if subtype == SIG_SUB_TYPE_PREF_SYMM_ALGO or subtype == SIG_SUB_TYPE_PREF_HASH_ALGO or subtype == SIG_SUB_TYPE_PREF_COMP_ALGO or subtype == SIG_SUB_TYPE_KEY_FLAGS : algo_list = map(lambda x : ord(x), list(msg[idx:idx+sublen-1])) idx = idx + sublen - 1 return (subtype, algo_list), idx if subtype == SIG_SUB_TYPE_REVOKE_KEY : # revocation key cls, idx = get_whole_int(msg, idx, 1) algo, idx = get_whole_int(msg, idx, 1) fprint = msg[idx:idx+20] idx = idx + 20 return (subtype, cls, algo, fprint), idx if subtype == SIG_SUB_TYPE_ISSUER_KEY_ID : # issuer key ID k_id = msg[idx:idx+8] idx = idx + 8 return (subtype, k_id), idx if subtype == SIG_SUB_TYPE_NOTATION : # notation data flg1, idx = get_whole_int(msg, idx, 1) flg2, idx = get_whole_int(msg, idx, 1) flg3, idx = get_whole_int(msg, idx, 1) flg4, idx = get_whole_int(msg, idx, 1) name_len, idx = get_whole_int(msg, idx, 2) val_len, idx = get_whole_int(msg, idx, 2) nam = msg[idx:idx+name_len] idx = idx + name_len val = msg[idx:idx+val_len] idx = idx + val_len return (subtype, flg1, flg2, flg3, flg4, nam, val), idx if subtype == SIG_SUB_TYPE_KEY_SRV_PREF : # key server preferences prefs = [ ord(x) for x in msg[idx:idx+sublen-1] ] idx = idx + sublen - 1 return (subtype, prefs), idx if subtype == SIG_SUB_TYPE_PREF_KEY_SRVR : # preferred key server url = msg[idx:idx+sublen-1] idx = idx + sublen - 1 return (subtype, url), idx if subtype == SIG_SUB_TYPE_PRIM_USER_ID : # primary user id bool, idx = get_whole_int(msg, idx, 1) return (subtype, bool), idx if subtype == SIG_SUB_TYPE_POLICY_URI : # policy URI uri = msg[idx:idx+sublen-1] idx = idx + sublen - 1 return (subtype, uri), idx if subtype == SIG_SUB_TYPE_SGNR_USER_ID : # signer's user id signer_id = msg[idx:idx+sublen-1] idx = idx + sublen - 1 return (subtype, signer_id), idx if subtype == SIG_SUB_TYPE_REVOKE_REASON : # reason for revocation rev_code, idx = get_whole_int(msg, idx, 1) reas_len = sublen - 2 reas = msg[idx:idx+reas_len] idx = idx + reas_len return (subtype, rev_code, reas), idx if subtype == SIG_SUB_TYPE_FEATURES : # features sublen = sublen - 1 l = [subtype] while sublen > 0 : oct, idx = get_whole_int(msg, idx, 1) l.append(oct) sublen = sublen - 1 return tuple(l), idx if subtype == SIG_SUB_TYPE_SIG_TARGET : # signature target public_key_algo, idx = get_whole_int(msg, idx, 1) hash_algo, idx = get_whole_int(msg, idx, 1) hash = msg[idx:idx+sublen-3] idx = idx + sublen - 3 return (subtype, public_key_algo, hash_algo, hash), idx if subtype == SIG_SUB_TYPE_EMBEDDED_SIG : # embedded signature # don't do anything fancy, just the raw bits dat = msg[idx:idx+sublen-1] idx = idx + sublen - 1 return (subtype, dat), idx # otherwise the subpacket is an unknown type, so we just pack the data in it dat = msg[idx:idx+sublen-1] idx = idx + sublen - 1 return (subtype, dat), idx def is_primary_user_id(self) : """is_primary_user_id() returns true if this signature contains a primary user id subpacket with value true""" for i in self.hashed_subpaks : if i[0] == SIG_SUB_TYPE_PRIM_USER_ID : return i[1] return 0 def subpacket_to_str(self, sp) : if sp[0] == SIG_SUB_TYPE_CREATE_TIME : # signature creation time return 'creation time: ' + time.ctime(sp[1]) if sp[0] == SIG_SUB_TYPE_EXPIRE_TIME : # signature expiration time return 'signature expires: ' + duration_to_str(sp[1]) if sp[0] == SIG_SUB_TYPE_EXPORT_CERT : # exportable certification if sp[1] : return 'signature exportable: TRUE' else : return 'signature exportable: FALSE' if sp[0] == SIG_SUB_TYPE_TRUST_SIG : # trust signature if sp[1] == 0 : return 'trust: ordinary' if sp[1] == 1 : return 'trust: introducer (%d)' % sp[2] if sp[1] == 2 : return 'trust: meta-introducer (%d)' % sp[2] return 'trust: %d %d' % (sp[1], sp[2]) if sp[0] == SIG_SUB_TYPE_REGEXP : # regular expression return 'regexp: ' + sp[1] if sp[0] == SIG_SUB_TYPE_REVOCABLE : # revocable if sp[1] : return 'signature revocable: TRUE' else : return 'signature revocable: FALSE' if sp[0] == SIG_SUB_TYPE_KEY_EXPIRE : # key expiration time return 'key expires: ' + duration_to_str(sp[1]) if sp[0] == SIG_SUB_TYPE_PREF_SYMM_ALGO : # preferred symmetric algorithms return 'preferred symmetric algorithms: ' + map_to_str(algo_sk_to_str, sp[1]) if sp[0] == SIG_SUB_TYPE_REVOKE_KEY : # revocation key s = 'revocation key: ' if sp[1] & REVOKE_KEY_CLASS_SENS : s = s + '(sensitive) ' return s + map_to_str(algo_pk_to_str, sp[2]) + ' ' + str_to_hex(sp[3]) if sp[0] == SIG_SUB_TYPE_ISSUER_KEY_ID : # issuer key ID return 'issuer key id: ' + str_to_hex(sp[1]) if sp[0] == SIG_SUB_TYPE_NOTATION : # notation data return 'notation: flags(%d, %d, %d, %d) name(%s) value(%s)' % sp[1:] if sp[0] == SIG_SUB_TYPE_PREF_HASH_ALGO : # preferred hash algorithms return 'preferred hash algorithms: ' + map_to_str(algo_hash_to_str, sp[1]) if sp[0] == SIG_SUB_TYPE_PREF_COMP_ALGO : # preferred compression algorithms return 'preferred compression algorithms: ' + map_to_str(algo_comp_to_str, sp[1]) if sp[0] == SIG_SUB_TYPE_KEY_SRV_PREF : # key server preferences s = 'key server preferences: ' prefs = [] if sp[1][0] & 0x80 : prefs.append('No-modify') return s + ', '.join(prefs) if sp[0] == SIG_SUB_TYPE_PREF_KEY_SRVR : # preferred key server return 'preferred key server: %s' % sp[1] if sp[0] == SIG_SUB_TYPE_PRIM_USER_ID : # primary user id if sp[1] : return 'is primary user id' else : return 'is not primary user id' if sp[0] == SIG_SUB_TYPE_POLICY_URI : # policy URL return 'policy url: %s' % sp[1] if sp[0] == SIG_SUB_TYPE_KEY_FLAGS : # key flags flags = [] flgs1 = 0 if len(sp[1]) >= 1 : flgs1 = sp[1][0] if flgs1 & KEY_FLAGS1_MAY_CERTIFY : flags.append('may certify other keys') if flgs1 & KEY_FLAGS1_MAY_SIGN : flags.append('may sign data') if flgs1 & KEY_FLAGS1_MAY_ENC_COMM : flags.append('may encrypt communications') if flgs1 & KEY_FLAGS1_MAY_ENC_STRG : flags.append('may encrypt storage') if flgs1 & KEY_FLAGS1_PRIV_MAYBE_SPLIT : flags.append('private component may have been secret-sharing split') if flgs1 & KEY_FLAGS1_GROUP : flags.append('group key') return 'key flags: ' + ', '.join(flags) 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 = revoke_reason_to_str.get(sp[1], '') return 'reason for revocation: %s, %s' % (reas, sp[2]) if sp[0] == SIG_SUB_TYPE_FEATURES : # features features = [] if len(sp) > 1 : val = sp[1] if val & PGP_FEATURE_1_MOD_DETECT : features.append('Modification Detection') val = val & ~PGP_FEATURE_1_MOD_DETECT if val != 0 : features.append('[0]=0x%x' % val) for i in range(2, len(sp)) : features.append('[%d]=0x%x' % (i-1,sp[i])) return 'features: ' + ', '.join(features) # this means we don't know what the thing is so we just have raw data return 'unknown(%d): %s' % (sp[0], str_to_hex(sp[1])) def deserialize(self, msg, idx, pkt_len) : self.version, idx = get_whole_int(msg, idx, 1) if self.version == 2 : self.version = 3 if self.version == 3 : hash_len, idx = get_whole_number(msg, idx, 1) self.sig_type, idx = get_whole_int(msg, idx, 1) self.timestamp, idx = get_whole_number(msg, idx, 4) self.timestamp = float(self.timestamp) self.key_id_ = msg[idx:idx+8] idx = idx + 8 self.pk_algo, idx = get_whole_int(msg, idx, 1) self.hash_algo, idx = get_whole_int(msg, idx, 1) elif self.version == 4: self.sig_type, idx = get_whole_int(msg, idx, 1) self.pk_algo, idx = get_whole_int(msg, idx, 1) self.hash_algo, idx = get_whole_int(msg, idx, 1) sub_paks_len, idx = get_whole_int(msg, idx, 2) sub_paks_end = idx + sub_paks_len self.hashed_subpaks = [] while idx < sub_paks_end : sp, idx = self.deserialize_subpacket(msg, idx) self.hashed_subpaks.append(sp) sub_paks_len, idx = get_whole_int(msg, idx, 2) sub_paks_end = idx + sub_paks_len self.unhashed_subpaks = [] while idx < sub_paks_end : sp, idx = self.deserialize_subpacket(msg, idx) self.unhashed_subpaks.append(sp) else : raise RuntimeError('unknown signature packet version %d at %d' % (self.version, idx)) self.hash_frag, idx = get_whole_number(msg, idx, 2) if self.pk_algo == ALGO_PK_RSA_ENC_OR_SIGN or self.pk_algo == ALGO_PK_RSA_SIGN_ONLY : self.rsa_sig, idx = get_mpi(msg, idx) elif self.pk_algo == ALGO_PK_DSA : self.dsa_sig_r, idx = get_mpi(msg, idx) self.dsa_sig_s, idx = get_mpi(msg, idx) else : raise RuntimeError('unknown public-key algorithm (%d) in signature at %d' % (self.pk_algo, idx)) return idx def __str__(self) : sio = cStringIO.StringIO() sio.write(pgp_packet.__str__(self) + "\n") sio.write("version: " + str(self.version) + "\n") sio.write("type: " + sig_type_to_str[self.sig_type] + "\n") if self.version == 3 : sio.write("timestamp: " + time.ctime(self.timestamp) + "\n") sio.write("key_id: " + str_to_hex(self.key_id_) + "\n") elif self.version == 4 : sio.write("hashed subpackets:\n") for i in self.hashed_subpaks : sio.write(" " + self.subpacket_to_str(i) + "\n") sio.write("unhashed subpackets:\n") for i in self.unhashed_subpaks : sio.write(" " + self.subpacket_to_str(i) + "\n") sio.write("hash_algo: " + algo_hash_to_str[self.hash_algo] + "\n") sio.write("hash_frag: " + hex(self.hash_frag) + "\n") if self.pk_algo == ALGO_PK_RSA_ENC_OR_SIGN or self.pk_algo == ALGO_PK_RSA_SIGN_ONLY : sio.write("pk_algo: RSA\n") sio.write("rsa_sig: " + hex(self.rsa_sig) + "\n") elif self.pk_algo == ALGO_PK_DSA : sio.write("pk_algo: DSA\n") sio.write("dsa_sig_r: " + hex(self.dsa_sig_r) + "\n") sio.write("dsa_sig_s: " + hex(self.dsa_sig_s) + "\n") return sio.getvalue() # # This class encapsulates an openpgp public "certificate", which is formed in a message as # a series of PGP packets of certain types in certain orders # class pgp_certificate(object): def __init__(self) : self.version = None self.public_key = None self.revocations = [] self.user_ids = [] self.primary_user_id = -1 # index of the primary user id def __str__(self) : sio = cStringIO.StringIO() sio.write("PGP Public Key Certificate v%d\n" % self.version) sio.write("Cert ID: %s\n" % str_to_hex(self.public_key.key_id())) sio.write("Primary ID: %s\n" % self.user_id) sio.write(str(self.public_key)) for uid in self.user_ids : sio.write(str(uid[0])) for sig in uid[1:] : sio.write(" " + str(sig)) if hasattr(self, 'user_attrs') : for uattr in self.user_attrs : sio.write(' ') sio.write(str(uattr[0])) for sig in uattr[1:] : sio.write(" " + str(sig)) return sio.getvalue() def get_user_id(self): # take the LAST one in the list, not first # they appear to be ordered FIFO from the key and that means if you # added a key later then it won't show the one you expect return self.user_ids[self.primary_user_id][0].id user_id = property(get_user_id) def expiration(self) : if self.version == 3 : if self.public_key.validity == 0 : return 0 return self.public_key.timestamp + self.public_key.validity * 24 * 60 * 60 else : # self.version == 4 # this is a bit more complex, we need to find the signature on the # key and get its expiration u_id = self.user_ids[0] for i in u_id[1:] : if i.sig_type == SIG_TYPE_PK_USER_GEN : exp = i.expiration() if exp == 0 : return 0 return self.public_key.timestamp + exp return 0 def key_size(self) : return 0 def load(self, pkts) : """load(pkts) Initialize the pgp_certificate with a list of OpenPGP packets. The list of packets will be scanned to make sure they are valid for a pgp certificate.""" # each certificate should begin with a public key packet if pkts[0].pkt_typ != CTB_PKT_PK_CERT : raise ValueError('first PGP packet should be a public-key packet, not %s' % map_to_str(ctb_pkt_to_str, pkts[0].pkt_typ)) # all versions have a public key although in a v4 cert the main key is only # used for signing, never encryption self.public_key = pkts[0] # ok, then what's the version self.version = self.public_key.version # now the behavior splits a little depending on the version if self.version == 3 : pkt_idx = 1 # zero or more revocations while pkts[pkt_idx].pkt_typ == CTB_PKT_SIG : if pkts[pkt_idx].version != 3 : raise ValueError('version 3 cert has version %d signature' % pkts[pkt_idx].version) if pkts[pkt_idx].sig_type != SIG_TYPE_KEY_REVOKE : raise ValueError('v3 cert revocation sig has type %s' % map_to_str(sig_type_to_str, pkts[pkt_idx].sig_type)) # ok, well at least the type is good, we'll assume the cert is # revoked self.revocations.append(pkts[pkt_idx]) # increment the pkt_idx to go to the next one pkt_idx = pkt_idx + 1 # the following packets are User ID, Signature pairs while pkt_idx < len(pkts) : # this packet is supposed to be a user id if pkts[pkt_idx].pkt_typ != CTB_PKT_USER_ID : if len(self.user_ids) == 0 : raise ValueError('pgp packet %d is not user id, is %s' % (pkt_idx, map_to_str(ctb_pkt_to_str, pkts[pkt_idx].pkt_typ))) else : break user_id = [pkts[pkt_idx]] pkt_idx = pkt_idx + 1 is_revoked = 0 is_primary_user_id = 0 # there may be a sequence of signatures following the user id which # bind it to the key while pkt_idx < len(pkts) and pkts[pkt_idx].pkt_typ == CTB_PKT_SIG : if pkts[pkt_idx].sig_type not in (SIG_TYPE_PK_USER_GEN, SIG_TYPE_PK_USER_PER, SIG_TYPE_PK_USER_CAS, SIG_TYPE_PK_USER_POS, SIG_TYPE_CERT_REVOKE) : raise ValueError('signature %d doesn\'t bind user_id to key, is %s' % (pkt_idx, map_to_str(sig_type_to_str, pkts[pkt_idx].sig_typ))) user_id.append(pkts[pkt_idx]) pkt_idx = pkt_idx + 1 # append the user ID and signature(s) onto a list self.user_ids.append(user_id) else : # self.version == 4 pkt_idx = 1 self.direct_key_sigs = [] self.subkeys = [] self.rvkd_subkeys = [] self.user_attrs = [] cert_id = self.public_key.key_id() # second packet could be a revocation (or a direct key self signature) while pkt_idx < len(pkts) and pkts[pkt_idx].pkt_typ == CTB_PKT_SIG : if pkts[pkt_idx].version != 4 : raise ValueError('version 4 cert has version %d signature' % pkts[pkt_idx].version) if pkts[pkt_idx].sig_type == SIG_TYPE_KEY_REVOKE : self.revocations.append(pkts[pkt_idx]) elif pkts[pkt_idx].sig_type == SIG_TYPE_KEY : self.direct_key_sigs.append(pkts[pkt_idx]) else : raise ValueError('v4 cert signature has type %s, supposed to be revocation signature or direct key signature' % map_to_str(sig_type_to_str, pkts[pkt_idx].sig_type)) # increment the pkt_idx to go to the next one pkt_idx = pkt_idx + 1 # the following packets are: # User ID, signature... sets or # subkey, signature... sets or # user attribute, signature... sets prim_user_id_sig_time = 0 while pkt_idx < len(pkts) : # this packet is supposed to be a user id if pkts[pkt_idx].pkt_typ == CTB_PKT_USER_ID : user_id = [pkts[pkt_idx]] is_revoked = 0 is_primary_user_id = 0 pkt_idx = pkt_idx + 1 # there may be a sequence of signatures following the user id which # bind it to the key while pkt_idx < len(pkts) and pkts[pkt_idx].pkt_typ == CTB_PKT_SIG : if pkts[pkt_idx].sig_type not in (SIG_TYPE_PK_USER_GEN, SIG_TYPE_PK_USER_PER, SIG_TYPE_PK_USER_CAS, SIG_TYPE_PK_USER_POS, SIG_TYPE_CERT_REVOKE) : raise ValueError('signature %d doesn\'t bind user_id to key, is %s' % (pkt_idx, map_to_str(sig_type_to_str, pkts[pkt_idx].sig_type))) user_id.append(pkts[pkt_idx]) # is this the primary user id? if pkts[pkt_idx].key_id() == cert_id : if pkts[pkt_idx].is_primary_user_id() : ct = pkts[pkt_idx].creation_time() if ct > prim_user_id_sig_time : self.primary_user_id = len(self.user_ids) prim_user_id_sig_time = ct pkt_idx = pkt_idx + 1 # append the user ID and signature(s) onto the list self.user_ids.append(user_id) # this packet is supposed to be a user id elif pkts[pkt_idx].pkt_typ == CTB_PKT_USER_ATTR : user_attr = [pkts[pkt_idx]] is_revoked = 0 pkt_idx = pkt_idx + 1 # there may be a sequence of signatures following the user id which # bind it to the key while pkt_idx < len(pkts) and pkts[pkt_idx].pkt_typ == CTB_PKT_SIG : if pkts[pkt_idx].sig_type not in (SIG_TYPE_PK_USER_GEN, SIG_TYPE_PK_USER_PER, SIG_TYPE_PK_USER_CAS, SIG_TYPE_PK_USER_POS, SIG_TYPE_CERT_REVOKE) : raise ValueError('signature %d doesn\'t bind user_attr to key, is %s' % (pkt_idx, map_to_str(sig_type_to_str, pkts[pkt_idx].sig_type))) user_attr.append(pkts[pkt_idx]) pkt_idx = pkt_idx + 1 # append the user ID and signature(s) onto the list self.user_attrs.append(user_attr) elif pkts[pkt_idx].pkt_typ == CTB_PKT_PK_SUB : # collect this list of subkey + signature [ + revocation ] subkey = [pkts[pkt_idx]] pkt_idx = pkt_idx + 1 is_revoked = 0 # there must be one signature following the subkey that binds it to the main key 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))) subkey.append(pkts[pkt_idx]) pkt_idx = pkt_idx + 1 # there may optionally be a revocation if pkt_idx < len(pkts) and pkts[pkt_idx].pkt_typ == CTB_PKT_SIG and pkts[pkt_idx].sig_type == SIG_TYPE_SUBKEY_REVOKE : is_revoked = 1 subkey.append(pkts[pkt_idx]) pkt_idx = pkt_idx + 1 # append the user ID and signature(s) onto the list if is_revoked : self.rvkd_subkeys.append(subkey) else : self.subkeys.append(subkey) else : break # did we get all the things we needed? #if not self.user_id : # just take the first valid user id we encountered then if len(self.user_ids) == 0 : raise ValueError('no user id packet was present in the cert %s' % str_to_hex(self.public_key.key_id())) return pkt_idx def get_ctb(msg, idx) : """get_ctb(msg, idx) extracts a the "cypher type bit" information from message msg at index idx returns (type, len, new_idx) where type is the enumerated type of the packet, len is the length of the packet, and new_idx is the index of the next element in the message""" b, idx = get_whole_int(msg, idx, 1) if (b & CTB_76_MASK) == CTB_76_NORMAL : n_len = 0 # undefined length if (b & CTB_PKT_LEN_MASK) == CTB_PKT_LEN_1 : n_len = 1 if (b & CTB_PKT_LEN_MASK) == CTB_PKT_LEN_2 : n_len = 2 if (b & CTB_PKT_LEN_MASK) == CTB_PKT_LEN_4 : n_len = 4 if (b & CTB_PKT_LEN_MASK) == CTB_PKT_LEN_UNDEF : n_len = 0 pkt_len = 0 if n_len > 0 : pkt_len, idx = get_whole_int(msg, idx, n_len) return (b & CTB_PKTV2_MASK) >> 2, pkt_len, idx elif (b & CTB_76_MASK) == CTB_76_NEW : plen, idx = get_whole_int(msg, idx, 1) if plen < 192 : return b & CTB_PKT_MASK, plen, idx if plen < 224 : plen2, idx = get_whole_int(msg, idx, 1) return b & CTB_PKT_MASK, ((plen - 192) << 8) + plen2 + 192, idx if plen == 255 : plen, idx = get_whole_int(msg, idx, 4) return b & CTB_PKT_MASK, plen, idx else : raise Exception, 'partial message bodies are not supported by this version (%d)', b else : raise Exception, "unknown (not \"normal\") cypher type bit %d at byte %d" % (b, idx) def crc24(msg) : crc24_init = 0xb704ce crc24_poly = 0x1864cfb crc = crc24_init for i in list(msg) : crc = crc ^ (ord(i) << 16) for j in range(0, 8) : crc = crc << 1 if crc & 0x1000000 : crc = crc ^ crc24_poly return crc & 0xffffff def decode(msg) : # each message is a sequence of packets so we go through the message # and generate a list of packets and return that pkt_list = [] idx = 0 msg_len = len(msg) while idx < msg_len : pkt_typ, pkt_len, idx = get_ctb(msg, idx) pkt = None if pkt_typ == CTB_PKT_PK_CERT or pkt_typ == CTB_PKT_PK_SUB : pkt = public_key() elif pkt_typ == CTB_PKT_USER_ID : pkt = user_id() elif pkt_typ == CTB_PKT_SIG : pkt = signature() elif pkt_typ == CTB_PKT_USER_ATTR : pkt = user_attribute() if pkt : pkt.pkt_typ = pkt_typ pkt.deserialize(msg, idx, pkt_len) if debug : debug.write(pkt.__str__() + "\n") else : raise ValueError('unexpected pgp packet type %s at %d' % (map_to_str(ctb_pkt_to_str, pkt_typ), idx)) pkt_list.append(pkt) idx = idx + pkt_len return pkt_list 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". A PGP message is a series of packets. You need to understand how packets are to be combined together in order to know what to do with them. For example a PGP "certificate" includes a public key, user id(s), and signature. """ # first we'll break the block up into lines and trim each line of any # carriage return chars pgpkey_lines = map(lambda x : x.rstrip(), msg.split('\n')) # check out block in_block = 0 in_data = 0 block_buf = cStringIO.StringIO() for l in pgpkey_lines : if not in_block : if l == '-----BEGIN PGP PUBLIC KEY BLOCK-----' : in_block = 1 continue # are we at the actual data yet? if not in_data : if len(l) == 0 : in_data = 1 continue # are we at the checksum line? if l and l[0] == '=' : # get the checksum number csum = base64.decodestring(l[1:5]) i = 0 csum, i = get_whole_number(csum, i, 3) # convert the base64 cert data to binary data cert_msg = base64.decodestring(block_buf.getvalue()) block_buf.close() # check the checksum if csum != crc24(cert_msg) : raise Exception, 'bad checksum on pgp message' # ok, the sum looks ok so we'll actually decode the thing pkt_list = decode(cert_msg) # turn it into a real cert cert_list = [] while len(pkt_list) > 0 : cert = pgp_certificate() cert.raw_key = msg 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 [] def decode_multiple_keys(msg): #ditto of above - but handling multiple certs/keys per file certs = [] pgpkey_lines = map(lambda x : x.rstrip(), msg.split('\n')) in_block = 0 block = '' for l in pgpkey_lines : if not in_block : if l == '-----BEGIN PGP PUBLIC KEY BLOCK-----' : in_block = 1 block += '%s\n' % l continue block += '%s\n' % l if l == '-----END PGP PUBLIC KEY BLOCK-----': in_block = 0 thesecerts = decode_msg(block, multi=True) if thesecerts: certs.extend(thesecerts) block = '' continue return certs if __name__ == '__main__' : import sys for pgp_cert in decode_msg(open(sys.argv[1]).read()) : print pgp_cert yum-3.4.3/yum/__init__.py0000664000076400007640000071603111602434452014261 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University """ The Yum RPM software updater. """ import os import os.path import rpm def _rpm_ver_atleast(vertup): """ Check if rpm is at least the current vertup. Can return False/True/None as rpm hasn't had version info for a long time. """ if not hasattr(rpm, '__version_info__'): return None try: # 4.8.x rpm used strings for the tuple members, so convert. vi = tuple([ int(num) for num in rpm.__version_info__]) return vi >= vertup except: return None # Something went wrong... import re import types import errno import time import glob import fnmatch import logging import logging.config import operator import tempfile import yum.i18n _ = yum.i18n._ P_ = yum.i18n.P_ import config from config import ParsingError, ConfigParser import Errors import rpmsack import rpmUtils.updates from rpmUtils.arch import archDifference, canCoinstall, ArchStorage, isMultiLibArch from rpmUtils.miscutils import compareEVR import rpmUtils.transaction import comps import pkgtag_db from repos import RepoStorage import misc from parser import ConfigPreProcessor, varReplace import transactioninfo import urlgrabber from urlgrabber.grabber import URLGrabber, URLGrabError from urlgrabber.progress import format_number from packageSack import packagesNewestByName, packagesNewestByNameArch, ListPackageSack import depsolve import plugins import logginglevels import yumRepo import callbacks import yum.history import warnings warnings.simplefilter("ignore", Errors.YumFutureDeprecationWarning) from packages import parsePackages, comparePoEVR from packages import YumAvailablePackage, YumLocalPackage, YumInstalledPackage from packages import YumUrlPackage, YumNotFoundPackage from constants import * from yum.rpmtrans import RPMTransaction,SimpleCliCallBack from yum.i18n import to_unicode, to_str import string import StringIO from weakref import proxy as weakref from urlgrabber.grabber import default_grabber __version__ = '3.4.3' __version_info__ = tuple([ int(num) for num in __version__.split('.')]) # Setup a default_grabber UA here that says we are yum, done using the global # so that other API users can easily add to it if they want. # Don't do it at init time, or we'll get multiple additions if you create # multiple YumBase() objects. default_grabber.opts.user_agent += " yum/" + __version__ class _YumPreBaseConf: """This is the configuration interface for the YumBase configuration. So if you want to change if plugins are on/off, or debuglevel/etc. you tweak it here, and when yb.conf does it's thing ... it happens. """ def __init__(self): self.fn = '/etc/yum/yum.conf' self.root = '/' self.init_plugins = True self.plugin_types = (plugins.TYPE_CORE,) self.optparser = None self.debuglevel = None self.errorlevel = None self.disabled_plugins = None self.enabled_plugins = None self.syslog_ident = None self.syslog_facility = None 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.gpgca_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. """ def __init__(self, repo, repos): self.repo = weakref(repo) self._repos = weakref(repos) def __contains__(self, pkgtup): # (n, a, e, v, r) = pkgtup for repo in self._repos.listEnabled(): if repo.cost >= self.repo.cost: break # searchNevra is a bit slower, although more generic for repos. # that don't use sqlitesack as the backend ... although they are # probably screwed anyway. # # if repo.sack.searchNevra(n, e, v, r, a): if pkgtup in repo.sack._pkgtup2pkgs: return True return False class YumBase(depsolve.Depsolve): """This is a primary structure and base class. It houses the objects and methods needed to perform most things in yum. It is almost an abstract class in that you will need to add your own class above it for most real use.""" def __init__(self): depsolve.Depsolve.__init__(self) self._conf = None self._tsInfo = None self._rpmdb = None self._up = None self._comps = None self._history = None self._pkgSack = None self._lockfile = None self._tags = None self._ts_save_file = None self.skipped_packages = [] # packages skip by the skip-broken code self._not_found_a = {} self._not_found_i = {} self.logger = logging.getLogger("yum.YumBase") self.verbose_logger = logging.getLogger("yum.verbose.YumBase") self._override_sigchecks = False self._repos = RepoStorage(self) self.repo_setopts = {} # since we have to use repo_setopts in base and # not in cli - set it up as empty so no one # trips over it later # Start with plugins disabled self.disablePlugins() self.localPackages = [] # for local package handling self.mediagrabber = None self.arch = ArchStorage() self.preconf = _YumPreBaseConf() self.prerepoconf = _YumPreRepoConf() self.run_with_package_names = set() self._cleanup = [] def __del__(self): self.close() self.closeRpmDB() self.doUnlock() # call cleanup callbacks for cb in self._cleanup: cb() def close(self): # We don't want to create the object, so we test if it's been created if self._history is not None: self.history.close() if self._repos: self._repos.close() def _transactionDataFactory(self): """Factory method returning TransactionData object""" return transactioninfo.TransactionData() def doGenericSetup(self, cache=0): """do a default setup for all the normal/necessary yum components, really just a shorthand for testing""" self.preconf.init_plugins = False self.conf.cache = cache def doConfigSetup(self, fn='/etc/yum/yum.conf', root='/', init_plugins=True, plugin_types=(plugins.TYPE_CORE,), optparser=None, debuglevel=None, errorlevel=None): warnings.warn(_('doConfigSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) if hasattr(self, 'preconf'): self.preconf.fn = fn self.preconf.root = root self.preconf.init_plugins = init_plugins self.preconf.plugin_types = plugin_types self.preconf.optparser = optparser self.preconf.debuglevel = debuglevel self.preconf.errorlevel = errorlevel return self.conf def _getConfig(self, **kwargs): ''' Parse and load Yum's configuration files and call hooks initialise plugins and logging. Uses self.preconf for pre-configuration, configuration. ''' # ' xemacs syntax hack if kwargs: warnings.warn('Use .preconf instead of passing args to _getConfig') if self._conf: return self._conf conf_st = time.time() if kwargs: for arg in ('fn', 'root', 'init_plugins', 'plugin_types', 'optparser', 'debuglevel', 'errorlevel', 'disabled_plugins', 'enabled_plugins'): if arg in kwargs: setattr(self.preconf, arg, kwargs[arg]) fn = self.preconf.fn root = self.preconf.root init_plugins = self.preconf.init_plugins plugin_types = self.preconf.plugin_types optparser = self.preconf.optparser debuglevel = self.preconf.debuglevel errorlevel = self.preconf.errorlevel disabled_plugins = self.preconf.disabled_plugins enabled_plugins = self.preconf.enabled_plugins syslog_ident = self.preconf.syslog_ident syslog_facility = self.preconf.syslog_facility syslog_device = self.preconf.syslog_device releasever = self.preconf.releasever arch = self.preconf.arch uuid = self.preconf.uuid if arch: # if preconf is setting an arch we need to pass that up self.arch.setup_arch(arch) else: arch = self.arch.canonarch # TODO: Remove this block when we no longer support configs outside # of /etc/yum/ if fn == '/etc/yum/yum.conf' and not os.path.exists(fn): # Try the old default fn = '/etc/yum.conf' startupconf = config.readStartupConfig(fn, root) startupconf.arch = arch startupconf.basearch = self.arch.basearch if uuid: startupconf.uuid = uuid if startupconf.gaftonmode: global _ _ = yum.i18n.dummy_wrapper if debuglevel != None: startupconf.debuglevel = debuglevel if errorlevel != None: startupconf.errorlevel = errorlevel if syslog_ident != None: 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 == '/': if startupconf.installroot == '/': releasever = None else: releasever = yum.config._getsysver("/",startupconf.distroverpkg) if releasever != None: startupconf.releasever = releasever self.doLoggingSetup(startupconf.debuglevel, startupconf.errorlevel, startupconf.syslog_ident, startupconf.syslog_facility, startupconf.syslog_device) if init_plugins and startupconf.plugins: self.doPluginSetup(optparser, plugin_types, startupconf.pluginpath, startupconf.pluginconfpath,disabled_plugins,enabled_plugins) self._conf = config.readMainConfig(startupconf) # We don't want people accessing/altering preconf after it becomes # worthless. So we delete it, and thus. it'll raise AttributeError del self.preconf # Packages used to run yum... for pkgname in self.conf.history_record_packages: self.run_with_package_names.add(pkgname) # run the postconfig plugin hook self.plugins.run('postconfig') # Note that Pungi has historically replaced _getConfig(), and it sets # up self.conf.yumvar but not self.yumvar ... and AFAIK nothing needs # to use YumBase.yumvar, so it's probably easier to just semi-deprecate # this (core now only uses YumBase.conf.yumvar). self.yumvar = self.conf.yumvar # who are we: self.conf.uid = os.geteuid() # repos are ver/arch specific so add $basearch/$releasever self.conf._repos_persistdir = os.path.normpath('%s/repos/%s/%s/' % (self.conf.persistdir, self.yumvar.get('basearch', '$basearch'), self.yumvar.get('releasever', '$releasever'))) self.doFileLogSetup(self.conf.uid, self.conf.logfile) self.verbose_logger.debug('Config time: %0.3f' % (time.time() - conf_st)) self.plugins.run('init') return self._conf def doLoggingSetup(self, debuglevel, errorlevel, syslog_ident=None, syslog_facility=None, syslog_device='/dev/log'): ''' Perform logging related setup. @param debuglevel: Debug logging level to use. @param errorlevel: Error logging level to use. ''' logginglevels.doLoggingSetup(debuglevel, errorlevel, syslog_ident, syslog_facility, syslog_device) def doFileLogSetup(self, uid, logfile): logginglevels.setFileLog(uid, logfile, self._cleanup) def getReposFromConfigFile(self, repofn, repo_age=None, validate=None): """read in repositories from a config .repo file""" if repo_age is None: repo_age = os.stat(repofn)[8] confpp_obj = ConfigPreProcessor(repofn, vars=self.conf.yumvar) parser = ConfigParser() try: parser.readfp(confpp_obj) except ParsingError, e: msg = str(e) raise Errors.ConfigError, msg # Check sections in the .repo file that was just slurped up for section in parser.sections(): if section in ['main', 'installed']: continue # Check the repo.id against the valid chars bad = None for byte in section: if byte in string.ascii_letters: continue if byte in string.digits: continue if byte in "-_.:": continue bad = byte break if bad: self.logger.warning("Bad id for repo: %s, byte = %s %d" % (section, bad, section.find(bad))) continue try: thisrepo = self.readRepoConfig(parser, section) except (Errors.RepoError, Errors.ConfigError), e: self.logger.warning(e) continue else: thisrepo.repo_config_age = repo_age thisrepo.repofile = repofn thisrepo.base_persistdir = self.conf._repos_persistdir if thisrepo.id in self.repo_setopts: for opt in self.repo_setopts[thisrepo.id].items: if not hasattr(thisrepo, opt): msg = "Repo %s did not have a %s attr. before setopt" self.logger.warning(msg % (thisrepo.id, opt)) setattr(thisrepo, opt, getattr(self.repo_setopts[thisrepo.id], opt)) if validate and not validate(thisrepo): continue # Got our list of repo objects, add them to the repos # collection try: self._repos.add(thisrepo) except Errors.RepoError, e: self.logger.warning(e) def getReposFromConfig(self): """read in repositories from config main and .repo files""" # Read .repo files from directories specified by the reposdir option # (typically /etc/yum/repos.d) repo_config_age = self.conf.config_file_age # Get the repos from the main yum.conf file self.getReposFromConfigFile(self.conf.config_file_path, repo_config_age) for reposdir in self.conf.reposdir: # this check makes sure that our dirs exist properly. # if they aren't in the installroot then don't prepend the installroot path # if we don't do this then anaconda likes to not work. if os.path.exists(self.conf.installroot+'/'+reposdir): reposdir = self.conf.installroot + '/' + reposdir if os.path.isdir(reposdir): for repofn in sorted(glob.glob('%s/*.repo' % reposdir)): thisrepo_age = os.stat(repofn)[8] if thisrepo_age < repo_config_age: thisrepo_age = repo_config_age self.getReposFromConfigFile(repofn, repo_age=thisrepo_age) def readRepoConfig(self, parser, section): '''Parse an INI file section for a repository. @param parser: ConfParser or similar to read INI file values from. @param section: INI file section to read. @return: YumRepository instance. ''' repo = yumRepo.YumRepository(section) try: 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: repo.name = section self.logger.error(_('Repository %r is missing name in configuration, ' 'using id') % section) repo.name = to_unicode(repo.name) # Set attributes not from the config file repo.basecachedir = self.conf.cachedir repo.yumvar.update(self.conf.yumvar) repo.cfg = parser return repo def disablePlugins(self): '''Disable yum plugins ''' self.plugins = plugins.DummyYumPlugins() def doPluginSetup(self, optparser=None, plugin_types=None, searchpath=None, confpath=None,disabled_plugins=None,enabled_plugins=None): '''Initialise and enable yum plugins. Note: _getConfig() will initialise plugins if instructed to. Only call this method directly if not calling _getConfig() or calling doConfigSetup(init_plugins=False). @param optparser: The OptionParser instance for this run (optional) @param plugin_types: A sequence specifying the types of plugins to load. This should be a sequence containing one or more of the yum.plugins.TYPE_... constants. If None (the default), all plugins will be loaded. @param searchpath: A list of directories to look in for plugins. A default will be used if no value is specified. @param confpath: A list of directories to look in for plugin configuration files. A default will be used if no value is specified. @param disabled_plugins: Plugins to be disabled @param enabled_plugins: Plugins to be enabled ''' if isinstance(self.plugins, plugins.YumPlugins): raise RuntimeError(_("plugins already initialised")) self.plugins = plugins.YumPlugins(self, searchpath, optparser, plugin_types, confpath, disabled_plugins, enabled_plugins) def doRpmDBSetup(self): warnings.warn(_('doRpmDBSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) return self._getRpmDB() def _getRpmDB(self): """sets up a holder object for important information from the rpmdb""" if self._rpmdb is None: rpmdb_st = time.time() self.verbose_logger.log(logginglevels.DEBUG_4, _('Reading Local RPMDB')) self._rpmdb = rpmsack.RPMDBPackageSack(root=self.conf.installroot, releasever=self.conf.yumvar['releasever'], persistdir=self.conf.persistdir) self.verbose_logger.debug('rpmdb time: %0.3f' % (time.time() - rpmdb_st)) return self._rpmdb def closeRpmDB(self): """closes down the instances of the rpmdb we have wangling around""" if self._rpmdb is not None: self._rpmdb.ts = None self._rpmdb.dropCachedData() self._rpmdb = None self._ts = None self._tsInfo = None self._up = None self.comps = None def _deleteTs(self): del self._ts self._ts = None def doRepoSetup(self, thisrepo=None): warnings.warn(_('doRepoSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) return self._getRepos(thisrepo, True) def _getRepos(self, thisrepo=None, doSetup = False): """ For each enabled repository set up the basics of the repository. """ if hasattr(self, 'prerepoconf'): self.conf # touch the config class first self.getReposFromConfig() # For rhnplugin, and in theory other stuff, calling # .getReposFromConfig() recurses back into this function but only once. # This means that we have two points on the stack leaving the above call # but only one of them can do the repos setup. BZ 678043. if hasattr(self, 'prerepoconf'): # 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 self.repos.gpgca_import_func = prerepoconf.gpgca_import_func if prerepoconf.cachedir is not None: self.repos.setCacheDir(prerepoconf.cachedir) if prerepoconf.cache is not None: self.repos.setCache(prerepoconf.cache) if doSetup: if (hasattr(urlgrabber, 'grabber') and hasattr(urlgrabber.grabber, 'pycurl')): # Must do basename checking, on cert. files... cert_basenames = {} for repo in self._repos.listEnabled(): if not repo.sslclientcert: continue bn = os.path.basename(repo.sslclientcert) if bn not in cert_basenames: cert_basenames[bn] = repo continue if repo.sslclientcert == cert_basenames[bn].sslclientcert: # Exactly the same path is fine too continue msg = 'sslclientcert basename shared between %s and %s' raise Errors.ConfigError, msg % (repo, cert_basenames[bn]) repo_st = time.time() self._repos.doSetup(thisrepo) self.verbose_logger.debug('repo time: %0.3f' % (time.time() - repo_st)) return self._repos def _delRepos(self): del self._repos self._repos = RepoStorage(self) def doSackSetup(self, archlist=None, thisrepo=None): warnings.warn(_('doSackSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) return self._getSacks(archlist=archlist, thisrepo=thisrepo) def _getSacks(self, archlist=None, thisrepo=None): """populates the package sacks for information from our repositories, takes optional archlist for archs to include""" # FIXME: Fist of death ... normally we'd do either: # # 1. use self._pkgSack is not None, and only init. once. # 2. auto. correctly re-init each time a repo is added/removed # # ...we should probably just smeg it and do #2, but it's hard and will # probably break something (but it'll "fix" excludes). # #1 can't be done atm. because we did self._pkgSack and external # tools now rely on being able to create an empty sack and then have it # auto. re-init when they add some stuff. So we add a bit more "clever" # and don't setup the pkgSack to not be None when it's empty. This means # we skip excludes/includes/etc. ... but there's no packages, so # hopefully that's ok. if self._pkgSack is not None and thisrepo is None: return self._pkgSack if thisrepo is None: repos = 'enabled' else: repos = self.repos.findRepos(thisrepo) self.verbose_logger.debug(_('Setting up Package Sacks')) sack_st = time.time() if not archlist: archlist = self.arch.archlist archdict = {} for arch in archlist: archdict[arch] = 1 self.repos.getPackageSack().setCompatArchs(archdict) self.repos.populateSack(which=repos) if not self.repos.getPackageSack(): return self.repos.getPackageSack() # ha ha, see above self._pkgSack = self.repos.getPackageSack() self.excludePackages() self._pkgSack.excludeArchs(archlist) #FIXME - this could be faster, too. if repos == 'enabled': repos = self.repos.listEnabled() for repo in repos: self.includePackages(repo) self.excludePackages(repo) self.plugins.run('exclude') self._pkgSack.buildIndexes() # now go through and kill pkgs based on pkg.repo.cost() self.costExcludePackages() self.verbose_logger.debug('pkgsack time: %0.3f' % (time.time() - sack_st)) return self._pkgSack def _delSacks(self): """reset the package sacks back to zero - making sure to nuke the ones in the repo objects, too - where it matters""" # nuke the top layer self._pkgSack = None for repo in self.repos.repos.values(): if hasattr(repo, '_resetSack'): repo._resetSack() else: warnings.warn(_('repo object for repo %s lacks a _resetSack method\n') + _('therefore this repo cannot be reset.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) def doUpdateSetup(self): warnings.warn(_('doUpdateSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) return self._getUpdates() def _getUpdates(self): """setups up the update object in the base class and fills out the updates, obsoletes and others lists""" if self._up: return self._up self.verbose_logger.debug(_('Building updates object')) up_st = time.time() self._up = rpmUtils.updates.Updates(self.rpmdb.simplePkgList(), self.pkgSack.simplePkgList()) if self.conf.debuglevel >= 7: self._up.debug = 1 if hasattr(self, '_up_obs_hack'): self._up.rawobsoletes = self._up_obs_hack.rawobsoletes del self._up_obs_hack elif self.conf.obsoletes: obs_init = time.time() # Note: newest=True here is semi-required for repos. with multiple # versions. The problem is that if pkgA-2 _accidentally_ obsoletes # pkgB-1, and we keep all versions, we want to release a pkgA-3 # that doesn't do the obsoletes ... and thus. not obsolete pkgB-1. self._up.rawobsoletes = self.pkgSack.returnObsoletes(newest=True) self.verbose_logger.debug('up:Obs Init time: %0.3f' % (time.time() - obs_init)) self._up.myarch = self.arch.canonarch self._up._is_multilib = self.arch.multilib self._up._archlist = self.arch.archlist self._up._multilib_compat_arches = self.arch.compatarches self._up.exactarch = self.conf.exactarch self._up.exactarchlist = self.conf.exactarchlist up_pr_st = time.time() self._up.doUpdates() self.verbose_logger.debug('up:simple updates time: %0.3f' % (time.time() - up_pr_st)) if self.conf.obsoletes: obs_st = time.time() self._up.doObsoletes() self.verbose_logger.debug('up:obs time: %0.3f' % (time.time() - obs_st)) cond_up_st = time.time() self._up.condenseUpdates() self.verbose_logger.debug('up:condense time: %0.3f' % (time.time() - cond_up_st)) self.verbose_logger.debug('updates time: %0.3f' % (time.time() - up_st)) return self._up def doGroupSetup(self): warnings.warn(_('doGroupSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) self.comps = None return self._getGroups() def _setGroups(self, val): if val is None: # if we unset the comps object, we need to undo which repos have # been added to the group file as well if self._repos: for repo in self._repos.listGroupsEnabled(): repo.groups_added = False self._comps = val def _getGroups(self): """create the groups object that will store the comps metadata finds the repos with groups, gets their comps data and merge it into the group object""" if self._comps: return self._comps group_st = time.time() self.verbose_logger.log(logginglevels.DEBUG_4, _('Getting group metadata')) reposWithGroups = [] # Need to make sure the groups data is ready to read. Really we'd want # to add groups to the mdpolicy list of the repo. but we don't atm. self.pkgSack for repo in self.repos.listGroupsEnabled(): if repo.groups_added: # already added the groups from this repo reposWithGroups.append(repo) continue if not repo.ready(): raise Errors.RepoError, "Repository '%s' not yet setup" % repo try: groupremote = repo.getGroupLocation() except Errors.RepoMDError, e: pass else: reposWithGroups.append(repo) # now we know which repos actually have groups files. overwrite = self.conf.overwrite_groups self._comps = comps.Comps(overwrite_groups = overwrite) for repo in reposWithGroups: if repo.groups_added: # already added the groups from this repo continue 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 compressed file if groupfile: groupfile = misc.repo_gen_decompress(groupfile, 'groups.xml', cached=repo.cache) # Do we want a RepoError here? try: self._comps.add(groupfile) except (Errors.GroupsError,Errors.CompsException), e: msg = _('Failed to add groups file for repository: %s - %s') % (repo, str(e)) self.logger.critical(msg) else: repo.groups_added = True if self._comps.compscount == 0: raise Errors.GroupsError, _('No Groups Available in any repository') self._comps.compile(self.rpmdb.simplePkgList()) self.verbose_logger.debug('group time: %0.3f' % (time.time() - group_st)) return self._comps def _getTags(self): """ create the tags object used to search/report from the pkgtags metadata""" tag_st = time.time() self.verbose_logger.log(logginglevels.DEBUG_4, _('Getting pkgtags metadata')) if self._tags is None: self._tags = yum.pkgtag_db.PackageTags() for repo in self.repos.listEnabled(): if 'pkgtags' not in repo.repoXML.fileTypes(): continue self.verbose_logger.log(logginglevels.DEBUG_4, _('Adding tags from repository: %s'), repo) # fetch the sqlite tagdb try: tag_md = repo.retrieveMD('pkgtags') tag_sqlite = misc.repo_gen_decompress(tag_md, 'pkgtags.sqlite', cached=repo.cache) # feed it into _tags.add() self._tags.add(repo.id, tag_sqlite) except (Errors.RepoError, Errors.PkgTagsError), e: msg = _('Failed to add Pkg Tags for repository: %s - %s') % (repo, str(e)) self.logger.critical(msg) self.verbose_logger.debug('tags time: %0.3f' % (time.time() - tag_st)) return self._tags def _getHistory(self): """auto create the history object that to access/append the transaction history information. """ if self._history is None: pdb_path = self.conf.persistdir + "/history" self._history = yum.history.YumHistory(root=self.conf.installroot, db_path=pdb_path) return self._history # properties so they auto-create themselves with defaults repos = property(fget=lambda self: self._getRepos(), fset=lambda self, value: setattr(self, "_repos", value), fdel=lambda self: self._delRepos(), doc="Repo Storage object - object of yum repositories") pkgSack = property(fget=lambda self: self._getSacks(), fset=lambda self, value: setattr(self, "_pkgSack", value), fdel=lambda self: self._delSacks(), doc="Package sack object - object of yum package objects") conf = property(fget=lambda self: self._getConfig(), fset=lambda self, value: setattr(self, "_conf", value), fdel=lambda self: setattr(self, "_conf", None), doc="Yum Config Object") rpmdb = property(fget=lambda self: self._getRpmDB(), fset=lambda self, value: setattr(self, "_rpmdb", value), fdel=lambda self: setattr(self, "_rpmdb", None), doc="RpmSack object") tsInfo = property(fget=lambda self: self._getTsInfo(), fset=lambda self,value: self._setTsInfo(value), fdel=lambda self: self._delTsInfo(), doc="Transaction Set information object") ts = property(fget=lambda self: self._getActionTs(), fdel=lambda self: self._deleteTs(), doc="TransactionSet object") up = property(fget=lambda self: self._getUpdates(), fset=lambda self, value: setattr(self, "_up", value), fdel=lambda self: setattr(self, "_up", None), doc="Updates Object") comps = property(fget=lambda self: self._getGroups(), fset=lambda self, value: self._setGroups(value), fdel=lambda self: setattr(self, "_comps", None), doc="Yum Component/groups object") history = property(fget=lambda self: self._getHistory(), fset=lambda self, value: setattr(self, "_history",value), fdel=lambda self: setattr(self, "_history", None), doc="Yum History Object") pkgtags = property(fget=lambda self: self._getTags(), fset=lambda self, value: setattr(self, "_tags",value), fdel=lambda self: setattr(self, "_tags", None), doc="Yum Package Tags Object") def doSackFilelistPopulate(self): """convenience function to populate the repos with the filelist metadata it also is simply to only emit a log if anything actually gets populated""" necessary = False # I can't think of a nice way of doing this, we have to have the sack here # first or the below does nothing so... if self.pkgSack: for repo in self.repos.listEnabled(): if repo in repo.sack.added: if 'filelists' in repo.sack.added[repo]: continue else: necessary = True else: necessary = True if necessary: msg = _('Importing additional filelist information') self.verbose_logger.log(logginglevels.INFO_2, msg) self.repos.populateSack(mdtype='filelists') def yumUtilsMsg(self, func, prog): """ Output a message that the tool requires the yum-utils package, if not installed. """ if self.rpmdb.contains(name="yum-utils"): return hibeg, hiend = "", "" if hasattr(self, 'term'): hibeg, hiend = self.term.MODE['bold'], self.term.MODE['normal'] func(_("The program %s%s%s is found in the yum-utils package.") % (hibeg, prog, hiend)) def buildTransaction(self, unfinished_transactions_check=True): """go through the packages in the transaction set, find them in the packageSack or rpmdb, and pack up the ts accordingly""" if (unfinished_transactions_check and misc.find_unfinished_transactions(yumlibpath=self.conf.persistdir)): msg = _('There are unfinished transactions remaining. You might ' \ 'consider running yum-complete-transaction first to finish them.' ) 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() (rescode, restring) = self.resolveDeps() self._limit_installonly_pkgs() # if enabled clean up requirments when removing the things which brought them in. if self.conf.clean_requirements_on_remove: self.verbose_logger.log(logginglevels.INFO_2, _('--> Finding unneeded leftover dependencies')) self._remove_old_deps() # 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.readOnlyTS()) self.rpmdb.ts = None # do the skip broken magic, if enabled and problems exist (rescode, restring) = self._doSkipBroken(rescode, restring) self.plugins.run('postresolve', rescode=rescode, restring=restring) if self.tsInfo.changed: (rescode, restring) = self.resolveDeps(rescode == 1) # If transaction was changed by postresolve plugins then we should run skipbroken again (rescode, restring) = self._doSkipBroken(rescode, restring, clear_skipped=False ) if self.tsInfo.pkgSack is not None: # rm Transactions don't have pkgSack self.tsInfo.pkgSack.dropCachedData() # FIXME: This is horrible, see below and yummain. Maybe create a real # rescode object? :( self._depsolving_failed = rescode == 1 txmbrs = [] if rescode == 2 and self.conf.protected_multilib and self.arch.multilib: txmbrs = self.tsInfo.getMembersWithState(None, TS_INSTALL_STATES) vers = {} for txmbr in txmbrs: if self.allowedMultipleInstalls(txmbr.po): continue # Just allow these, it's easier. # In theory we could skip noarch packages here, but it's really # fast and there are some edge cases where it'll help. if txmbr.name not in vers: vers[txmbr.name] = [txmbr.po] continue vers[txmbr.name].append(txmbr.po) fine = [] xrestring = [] for pkgname in vers: if len(vers[pkgname]) <= 1: # We have to go govelling through the rpmdb data to get for pkg in self.rpmdb.searchNames([pkgname]): if self.tsInfo.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES): continue vers[pkgname].append(pkg) # If we have multiple packages, they should be of different arches # and so if all the versions are equal, we should be fine. first = vers[pkgname][0] for other in vers[pkgname][1:]: if first.verEQ(other): continue msg = _('Protected multilib versions: %s != %s') xrestring.append(msg % (first, other)) if xrestring: rescode = 1 self._depsolving_failed = False restring = xrestring # This is a version of the old "protect-packages" plugin, it allows # you to erase duplicates and do remove+install. # But we don't allow you to turn it off!:) 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 kern_pkgtup is not None and txmbr.name == kern_pkgtup[0]: # We don't care if they've explicitly set protected on the # kernel package. Because we don't allow you to uninstall the # running one so it has _special_ semantics anyway. continue 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._depsolving_failed = False if rescode == 2: self.save_ts(auto=True) self.verbose_logger.debug('Depsolve time: %0.3f' % (time.time() - ds_st)) return rescode, restring def _doSkipBroken(self,rescode, restring, clear_skipped=True): ''' do skip broken if it is enabled ''' # if depsolve failed and skipbroken is enabled # The remove the broken packages from the transactions and # Try another depsolve if self.conf.skip_broken and rescode==1: if clear_skipped: self.skipped_packages = [] # reset the public list of skipped packages. sb_st = time.time() rescode, restring = self._skipPackagesWithProblems(rescode, restring) self._printTransaction() self.verbose_logger.debug('Skip-Broken time: %0.3f' % (time.time() - sb_st)) return (rescode, restring) def _skipPackagesWithProblems(self, rescode, restring): ''' Remove the packages with depsolve errors and depsolve again ''' def _remove(po, depTree, toRemove): if not po: return self._getPackagesToRemove(po, depTree, toRemove) # Only remove non installed packages from pkgSack _remove_from_sack(po) def _remove_from_sack(po): # get all compatible arch packages from pkgSack # we need to remove them too so i386 packages are not # dragged in when a x86_64 is skipped. pkgs = self._getPackagesToRemoveAllArch(po) for pkg in pkgs: if not po.repoid == 'installed' and pkg not in removed_from_sack: self.verbose_logger.debug('SKIPBROKEN: removing %s from pkgSack & updates' % str(po)) self.pkgSack.delPackage(pkg) self.up.delPackage(pkg.pkgtup) removed_from_sack.add(pkg) # Keep removing packages & Depsolve until all errors is gone # or the transaction is empty count = 0 skipped_po = set() removed_from_sack = set() orig_restring = restring # Keep the old error messages looping = 0 while (len(self.po_with_problems) > 0 and rescode == 1): count += 1 # Remove all the rpmdb cache data, this is somewhat heavy handed # but easier than removing/altering specific bits of the cache ... # and skip-broken shouldn't care too much about speed. self.rpmdb.transactionReset() self.installedFileRequires = None # Kind of hacky self.verbose_logger.debug("SKIPBROKEN: ########### Round %i ################" , count) if count == 30: # Failsafe, to avoid endless looping self.verbose_logger.debug('SKIPBROKEN: Too many loops ') break self._printTransaction() depTree = self._buildDepTree() startTs = set(self.tsInfo) toRemove = set() for po,wpo,err in self.po_with_problems: # check if the problem is caused by a package in the transaction if not self.tsInfo.exists(po.pkgtup): _remove(wpo, depTree, toRemove) else: _remove(po, depTree, toRemove) for po in toRemove: skipped = self._skipFromTransaction(po) for skip in skipped: skipped_po.add(skip) # make sure we get the compat arch packages skip from pkgSack and up too. if skip not in removed_from_sack and skip.repoid != 'installed': _remove_from_sack(skip) # Nothing was removed, so we still got a problem # the first time we get here we reset the resolved members of # tsInfo and takes a new run all members in the current transaction if not toRemove: looping += 1 if looping > 2: break # Bail out else: self.verbose_logger.debug('SKIPBROKEN: resetting already resolved packages (no packages to skip)' ) self.tsInfo.resetResolved(hard=True) rescode, restring = self.resolveDeps(True, skipping_broken=True) endTs = set(self.tsInfo) # Check if tsInfo has changes since we started to skip packages # if there is no changes then we got a loop. # the first time we get here we reset the resolved members of # tsInfo and takes a new run all members in the current transaction if startTs-endTs == set(): looping += 1 if looping > 2: break # Bail out 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 # can have broken something that passed the tests earlier. # FIXME: We need do this in a better way. if rescode != 1: self.verbose_logger.debug('SKIPBROKEN: sanity check the current transaction' ) self.tsInfo.resetResolved(hard=True) self._checkMissingObsoleted() # This is totally insane, but needed :( self._checkUpdatedLeftovers() # Cleanup updated leftovers rescode, restring = self.resolveDeps() if rescode != 1: self.verbose_logger.debug("SKIPBROKEN: took %i rounds ", count) self.verbose_logger.info(_('\nPackages skipped because of dependency problems:')) skipped_list = [p for p in skipped_po] skipped_list.sort() for po in skipped_list: msg = _(" %s from %s") % (str(po),po.repo.id) self.verbose_logger.info(msg) self.skipped_packages.extend(skipped_list) # make the skipped packages public else: # If we cant solve the problems the show the original error messages. self.verbose_logger.info("Skip-broken could not solve problems") return 1, orig_restring return rescode, restring def _add_not_found(self, pkgs, nevra_dict): if pkgs: return None pkgtup = (nevra_dict['name'], nevra_dict['arch'], nevra_dict['epoch'], nevra_dict['version'], nevra_dict['release']) if None in pkgtup: return None return pkgtup def _add_not_found_a(self, pkgs, nevra_dict): pkgtup = self._add_not_found(pkgs, nevra_dict) if pkgtup is None: return self._not_found_a[pkgtup] = YumNotFoundPackage(pkgtup) def _add_not_found_i(self, pkgs, nevra_dict): pkgtup = self._add_not_found(pkgs, nevra_dict) if pkgtup is None: return self._not_found_i[pkgtup] = YumNotFoundPackage(pkgtup) def _checkMissingObsoleted(self): """ If multiple packages is obsoleting the same package then the TS_OBSOLETED can get removed from the transaction so we must make sure that they, exist and else create them """ for txmbr in self.tsInfo.getMembersWithState(None, [TS_OBSOLETING,TS_OBSOLETED]): for pkg in txmbr.obsoletes: if not self.tsInfo.exists(pkg.pkgtup): obs = self.tsInfo.addObsoleted(pkg,txmbr.po) self.verbose_logger.debug('SKIPBROKEN: Added missing obsoleted %s (%s)' % (pkg,txmbr.po) ) for pkg in txmbr.obsoleted_by: # check if the obsoleting txmbr is in the transaction # else remove the obsoleted txmbr # it clean out some really wierd cases if not self.tsInfo.exists(pkg.pkgtup): self.verbose_logger.debug('SKIPBROKEN: Remove extra obsoleted %s (%s)' % (txmbr.po,pkg) ) self.tsInfo.remove(txmbr.po.pkgtup) def _checkUpdatedLeftovers(self): """ If multiple packages is updated the same package and this package get removed because of an dep issue then make sure that all the TS_UPDATED get removed. """ for txmbr in self.tsInfo.getMembersWithState(None, [TS_UPDATED]): for pkg in txmbr.updated_by: # check if the updating txmbr is in the transaction # else remove the updated txmbr # it clean out some really wierd cases with dupes installed on the system if not self.tsInfo.exists(pkg.pkgtup): self.verbose_logger.debug('SKIPBROKEN: Remove extra updated %s (%s)' % (txmbr.po,pkg) ) self.tsInfo.remove(txmbr.po.pkgtup) def _getPackagesToRemoveAllArch(self,po): ''' get all compatible arch packages in pkgSack''' pkgs = [] if self.arch.multilib: n,a,e,v,r = po.pkgtup # skip for all compat archs for a in self.arch.archlist: pkgtup = (n,a,e,v,r) matched = self.pkgSack.searchNevra(n,e,v,r,a) pkgs.extend(matched) else: pkgs.append(po) return pkgs def _skipFromTransaction(self,po): skipped = [] n,a,e,v,r = po.pkgtup # skip for all compat archs for a in self.arch.archlist: pkgtup = (n,a,e,v,r) if self.tsInfo.exists(pkgtup): for txmbr in self.tsInfo.getMembers(pkgtup): pkg = txmbr.po skip = self._removePoFromTransaction(pkg) skipped.extend(skip) return skipped def _removePoFromTransaction(self,po): skip = [] if self.tsInfo.exists(po.pkgtup): self.verbose_logger.debug('SKIPBROKEN: removing %s from transaction' % str(po)) self.tsInfo.remove(po.pkgtup) if not po.repoid == 'installed': skip.append(po) return skip def _buildDepTree(self): ''' create a dictionary with po and deps ''' depTree = { } for txmbr in self.tsInfo: for dep in txmbr.depends_on: depTree.setdefault(dep, []).append(txmbr.po) # self._printDepTree(depTree) return depTree def _printDepTree(self, tree): for pkg, l in tree.iteritems(): print pkg for p in l: print "\t", p def _printTransaction(self): #transaction set states state = { TS_UPDATE : "update", TS_INSTALL : "install", TS_TRUEINSTALL: "trueinstall", TS_ERASE : "erase", TS_OBSOLETED : "obsoleted", TS_OBSOLETING : "obsoleting", TS_AVAILABLE : "available", TS_UPDATED : "updated"} self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN: Current Transaction : %i member(s) " % len(self.tsInfo)) for txmbr in sorted(self.tsInfo): msg = "SKIPBROKEN: %-11s : %s " % (state[txmbr.output_state],txmbr.po) self.verbose_logger.log(logginglevels.DEBUG_2, msg) for po,rel in sorted(set(txmbr.relatedto)): msg = "SKIPBROKEN: %s : %s" % (rel,po) self.verbose_logger.log(logginglevels.DEBUG_2, msg) self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN:%s" % (60 * "=")) def _getPackagesToRemove(self,po,deptree,toRemove): ''' get the (related) pos to remove. ''' toRemove.add(po) for txmbr in self.tsInfo.getMembers(po.pkgtup): for pkg in (txmbr.updates + txmbr.obsoletes): toRemove.add(pkg) self._getDepsToRemove(pkg, deptree, toRemove) # Remove related packages for (relative, relation) in txmbr.relatedto: toRemove.add(relative) self._getDepsToRemove(relative, deptree, toRemove) self._getDepsToRemove(po, deptree, toRemove) def _getDepsToRemove(self,po, deptree, toRemove): for dep in deptree.get(po, []): # Loop trough all deps of po for txmbr in self.tsInfo.getMembers(dep.pkgtup): for pkg in (txmbr.updates + txmbr.obsoletes): toRemove.add(pkg) toRemove.add(dep) self._getDepsToRemove(dep, deptree, toRemove) 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.intersection(set(('all', 'dependencies'))): prob2ui = {'requires' : _('missing requires'), 'conflicts' : _('installed conflict')} 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.intersection(set(('all', 'duplicates'))): iopkgs = set(self.conf.installonlypkgs) 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 probs def runTransaction(self, cb): """takes an rpm callback object, performs the transaction""" self.plugins.run('pretrans') # We may want to put this other places, eventually, but for now it's # good as long as we get it right for history. for repo in self.repos.listEnabled(): if repo._xml2sqlite_local: self.run_with_package_names.add('yum-metadata-parser') break if (not self.conf.history_record or self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST)): frpmdbv = self.tsInfo.futureRpmDBVersion() else: 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) frpmdbv = self.tsInfo.futureRpmDBVersion() 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() if hasattr(self, '_shell_history_write'): # Only in cli... self._shell_history_write() 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 # will be we store what we thought, not what happened (so it'll be an # invalid cache). self.rpmdb.transactionResultVersion(frpmdbv) # transaction has started - all bets are off on our saved ts file if self._ts_save_file is not None: # write the saved transaction data to the addon location in history # so we can pull it back later if we need to savetx_msg = open(self._ts_save_file, 'r').read() self.history.write_addon_data('saved_tx', savetx_msg) try: os.unlink(self._ts_save_file) except (IOError, OSError), e: pass self._ts_save_file = None errors = self.ts.run(cb.callback, '') # ts.run() exit codes are, hmm, "creative": None means all ok, empty # list means some errors happened in the transaction and non-empty # list that there were errors preventing the ts from starting... # make resultobject - just a plain yumgenericholder object resultobject = misc.GenericHolder() resultobject.return_code = 0 if errors is None: pass elif len(errors) == 0: errstring = _('Warning: scriptlet or other non-fatal errors occurred during transaction.') self.verbose_logger.debug(errstring) resultobject.return_code = 1 else: 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) 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 and not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST)): self.cleanUsedHeadersPackages() for i in ('ts_all_fn', 'ts_done_fn'): if hasattr(cb, i): fn = getattr(cb, i) try: misc.unlink_f(fn) except (IOError, OSError), e: self.logger.critical(_('Failed to remove transaction file %s') % fn) # drop out the rpm cache so we don't step on bad hdr indexes if (self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST) or resultobject.return_code): self.rpmdb.dropCachedData() else: self.rpmdb.dropCachedDataPostTransaction(list(self.tsInfo)) self.plugins.run('posttrans') # sync up what just happened versus what is in the rpmdb if not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST): self.verifyTransaction(resultobject) return resultobject def verifyTransaction(self, resultobject=None): """checks that the transaction did what we expected it to do. Also propagates our external yumdb info""" # check to see that the rpmdb and the tsInfo roughly matches # push package object metadata outside of rpmdb into yumdb # delete old yumdb metadata entries # for each pkg in the tsInfo # if it is an install - see that the pkg is installed # if it is a remove - see that the pkg is no longer installed, provided # 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 vt_st = time.time() 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): # maybe a file log here, too # but raising an exception is not going to do any good self.logger.critical(_('%s was supposed to be installed' \ ' but is not!' % txmbr.po)) # Note: Get Panu to do te.Failed() so we don't have to txmbr.output_state = TS_FAILED continue po = self.getInstalledPackageObject(txmbr.pkgtup) rpo = txmbr.po po.yumdb_info.from_repo = rpo.repoid po.yumdb_info.reason = txmbr.reason po.yumdb_info.releasever = self.conf.yumvar['releasever'] 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: po.yumdb_info.checksum_type = str(csum[0]) po.yumdb_info.checksum_data = str(csum[1]) if isinstance(rpo, YumLocalPackage): try: st = os.stat(rpo.localPkg()) lp_ctime = str(int(st.st_ctime)) lp_mtime = str(int(st.st_mtime)) po.yumdb_info.from_repo_revision = lp_ctime po.yumdb_info.from_repo_timestamp = lp_mtime except: pass if rpo.xattr_origin_url is not None: po.yumdb_info.origin_url = rpo.xattr_origin_url if hasattr(rpo.repo, 'repoXML'): md = rpo.repo.repoXML if md and md.revision is not None: po.yumdb_info.from_repo_revision = str(md.revision) if md: po.yumdb_info.from_repo_timestamp = str(md.timestamp) loginuid = misc.getloginuid() if 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 if loginuid is not None: po.yumdb_info.changed_by = str(loginuid) elif loginuid is not None: po.yumdb_info.installed_by = str(loginuid) # Remove old ones after installing new ones, so we can copy values. for txmbr in self.tsInfo: 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, output_states=TS_INSTALL_STATES): # maybe a file log here, too # but raising an exception is not going to do any good # Note: This actually triggers atm. because we can't # always find the erased txmbr to set it when # we should. self.logger.critical(_('%s was supposed to be removed' \ ' but is not!' % txmbr.po)) # Note: Get Panu to do te.Failed() so we don't have to txmbr.output_state = TS_FAILED continue yumdb_item = self.rpmdb.yumdb.get_package(po=txmbr.po) yumdb_item.clean() else: self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po) self.plugins.run('postverifytrans') rpmdbv = self.rpmdb.simpleVersion(main_only=True)[0] 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(rpmdbv, ret) self.rpmdb.dropCachedData() self.verbose_logger.debug('VerifyTransaction time: %0.3f' % (time.time() - vt_st)) def costExcludePackages(self): """ Create an excluder for repos. with higher cost. Eg. repo-A:cost=1 repo-B:cost=2 ... here we setup an excluder on repo-B that looks for pkgs in repo-B.""" # if all the repo.costs are equal then don't bother running things costs = {} for r in self.repos.listEnabled(): costs.setdefault(r.cost, []).append(r) if len(costs) <= 1: return done = False exid = "yum.costexcludes" orepos = [] for cost in sorted(costs): if done: # Skip the first one, as they have lowest cost so are good. for repo in costs[cost]: yce = _YumCostExclude(repo, self.repos) repo.sack.addPackageExcluder(repo.id, exid, 'exclude.pkgtup.in', yce) orepos.extend(costs[cost]) done = True def excludePackages(self, repo=None): """removes packages from packageSacks based on global exclude lists, command line excludes and per-repository excludes, takes optional repo object to use.""" if "all" in self.conf.disable_excludes: return # if not repo: then assume global excludes, only # if repo: then do only that repos' packages and excludes if not repo: # global only if "main" in self.conf.disable_excludes: return excludelist = self.conf.exclude repoid = None exid_beg = 'yum.excludepkgs' else: if repo.id in self.conf.disable_excludes: return excludelist = repo.getExcludePkgList() repoid = repo.id exid_beg = 'yum.excludepkgs.' + repoid count = 0 for match in excludelist: count += 1 exid = "%s.%u" % (exid_beg, count) self.pkgSack.addPackageExcluder(repoid, exid,'exclude.match', match) def includePackages(self, repo): """removes packages from packageSacks based on list of packages, to include. takes repoid as a mandatory argument.""" includelist = repo.getIncludePkgList() if len(includelist) == 0: return # includepkgs actually means "exclude everything that doesn't match". # So we mark everything, then wash those we want to keep and then # exclude everything that is marked. exid = "yum.includepkgs.1" self.pkgSack.addPackageExcluder(repo.id, exid, 'mark.washed') count = 0 for match in includelist: count += 1 exid = "%s.%u" % ("yum.includepkgs.2", count) self.pkgSack.addPackageExcluder(repo.id, exid, 'wash.match', match) exid = "yum.includepkgs.3" self.pkgSack.addPackageExcluder(repo.id, exid, 'exclude.marked') def doLock(self, lockfile = YUM_PID_FILE): """perform the yum locking, raise yum-based exceptions, not OSErrors""" if self.conf.uid != 0: # If we are a user, assume we are using the root cache ... so don't # bother locking. if self.conf.cache: return root = self.conf.cachedir # Don't want /var/run/yum.pid ... just: /yum.pid lockfile = os.path.basename(lockfile) else: root = self.conf.installroot lockfile = root + '/' + lockfile # lock in the chroot lockfile = os.path.normpath(lockfile) # get rid of silly preceding extra / mypid=str(os.getpid()) while not self._lock(lockfile, mypid, 0644): try: fd = open(lockfile, 'r') except (IOError, OSError), e: msg = _("Could not open lock %s: %s") % (lockfile, e) raise Errors.LockError(errno.EPERM, msg) try: oldpid = int(fd.readline()) except ValueError: # bogus data in the pid file. Throw away. self._unlock(lockfile) else: if oldpid == os.getpid(): # if we own the lock, we're fine break try: os.kill(oldpid, 0) except OSError, e: if e[0] == errno.ESRCH: # The pid doesn't exist self._unlock(lockfile) else: # Whoa. What the heck happened? msg = _('Unable to check if PID %s is active') % oldpid raise Errors.LockError(errno.EPERM, msg, oldpid) else: # Another copy seems to be running. msg = _('Existing lock %s: another copy is running as pid %s.') % (lockfile, oldpid) raise Errors.LockError(0, msg, oldpid) # We've got the lock, store it so we can auto-unlock on __del__... self._lockfile = lockfile def doUnlock(self, lockfile=None): """do the unlock for yum""" # if we're not root then we don't lock - just return nicely # Note that we can get here from __del__, so if we haven't created # YumBase.conf we don't want to do so here as creating stuff inside # __del__ is bad. if hasattr(self, 'preconf'): return # Obviously, we can't lock random places as non-root, but we still want # to get rid of our lock file. Given we now have _lockfile I'm pretty # sure nothing should ever pass lockfile in here anyway. if self.conf.uid != 0: lockfile = None if lockfile is not None: root = self.conf.installroot lockfile = root + '/' + lockfile # lock in the chroot elif self._lockfile is None: return # Don't delete other people's lock files on __del__ else: lockfile = self._lockfile # Get the value we locked with self._unlock(lockfile) self._lockfile = None def _lock(self, filename, contents='', mode=0777): lockdir = os.path.dirname(filename) try: if not os.path.exists(lockdir): os.makedirs(lockdir, mode=0755) fd = os.open(filename, os.O_EXCL|os.O_CREAT|os.O_WRONLY, mode) except OSError, msg: if not msg.errno == errno.EEXIST: # Whoa. What the heck happened? errmsg = _('Could not create lock at %s: %s ') % (filename, str(msg)) raise Errors.LockError(msg.errno, errmsg, int(contents)) return 0 else: os.write(fd, contents) os.close(fd) return 1 def _unlock(self, filename): misc.unlink_f(filename) def verifyPkg(self, fo, po, raiseError): """verifies the package is what we expect it to be raiseError = defaults to 0 - if 1 then will raise a URLGrabError if the file does not check out. otherwise it returns false for a failure, true for success""" failed = False if type(fo) is types.InstanceType: fo = fo.filename if fo != po.localPkg(): po.localpath = fo if not po.verifyLocalPkg(): failed = True else: ylp = YumLocalPackage(self.rpmdb.readOnlyTS(), fo) if ylp.pkgtup != po.pkgtup: failed = True if failed: # if the file is wrong AND it is >= what we expected then it # can't be redeemed. If we can, kill it and start over fresh cursize = os.stat(fo)[6] totsize = long(po.size) if cursize >= totsize and not po.repo.cache: # if the path to the file is NOT inside the cachedir then don't # unlink it b/c it is probably a file:// url and possibly # unlinkable if fo.startswith(po.repo.cachedir): os.unlink(fo) if raiseError: msg = _('Package does not match intended download. Suggestion: run yum --enablerepo=%s clean metadata') % po.repo.id raise URLGrabError(-1, msg) else: return False return True def verifyChecksum(self, fo, checksumType, csum): """Verify the checksum of the file versus the provided checksum""" try: filesum = misc.checksum(checksumType, fo) except Errors.MiscError, e: raise URLGrabError(-3, _('Could not perform checksum')) if filesum != csum: raise URLGrabError(-1, _('Package does not match checksum')) return 0 def downloadPkgs(self, pkglist, callback=None, callback_total=None): def mediasort(apo, bpo): # FIXME: we should probably also use the mediaid; else we # could conceivably ping-pong between different disc1's a = apo.getDiscNum() b = bpo.getDiscNum() if a is None and b is None: return cmp(apo, bpo) if a is None: return -1 if b is None: return 1 if a < b: return -1 elif a > b: return 1 return 0 """download list of package objects handed to you, output based on callback, raise yum.Errors.YumBaseError on problems""" errors = {} def adderror(po, msg): errors.setdefault(po, []).append(msg) # We close the history DB here because some plugins (presto) use # threads. And sqlite really doesn't like threads. And while I don't # think it should matter, we've had some reports of history DB # corruption, and it was implied that it happened just after C-c # at download time and this is a safe thing to do. # Note that manual testing shows that history is not connected by # this point, from the cli with no plugins. So this really does # nothing *sigh*. self.history.close() self.plugins.run('predownload', pkglist=pkglist) repo_cached = False remote_pkgs = [] remote_size = 0 for po in pkglist: if hasattr(po, 'pkgtype') and po.pkgtype == 'local': continue local = po.localPkg() if os.path.exists(local): if not self.verifyPkg(local, po, False): if po.repo.cache: repo_cached = True adderror(po, _('package fails checksum but caching is ' 'enabled for %s') % po.repo.id) else: self.verbose_logger.debug(_("using local copy of %s") %(po,)) continue remote_pkgs.append(po) remote_size += po.size # caching is enabled and the package # just failed to check out there's no # way to save this, report the error and return if (self.conf.cache or repo_cached) and errors: return errors remote_pkgs.sort(mediasort) # This is kind of a hack and does nothing in non-Fedora versions, # we'll fix it one way or anther soon. if (hasattr(urlgrabber.progress, 'text_meter_total_size') and len(remote_pkgs) > 1): urlgrabber.progress.text_meter_total_size(remote_size) beg_download = time.time() i = 0 local_size = 0 done_repos = set() for po in remote_pkgs: # Recheck if the file is there, works around a couple of weird # edge cases. local = po.localPkg() i += 1 if os.path.exists(local): if self.verifyPkg(local, po, False): self.verbose_logger.debug(_("using local copy of %s") %(po,)) remote_size -= po.size if hasattr(urlgrabber.progress, 'text_meter_total_size'): urlgrabber.progress.text_meter_total_size(remote_size, local_size) continue if os.path.getsize(local) >= po.size: os.unlink(local) checkfunc = (self.verifyPkg, (po, 1), {}) dirstat = os.statvfs(po.repo.pkgdir) if (dirstat.f_bavail * dirstat.f_bsize) <= long(po.size): adderror(po, _('Insufficient space in download directory %s\n' " * free %s\n" " * needed %s") % (po.repo.pkgdir, format_number(dirstat.f_bavail * dirstat.f_bsize), format_number(po.size))) continue try: if i == 1 and not local_size and remote_size == po.size: text = os.path.basename(po.relativepath) else: text = '(%s/%s): %s' % (i, len(remote_pkgs), os.path.basename(po.relativepath)) mylocal = po.repo.getPackage(po, checkfunc=checkfunc, text=text, cache=po.repo.http_caching != 'none', ) local_size += po.size if hasattr(urlgrabber.progress, 'text_meter_total_size'): urlgrabber.progress.text_meter_total_size(remote_size, local_size) if po.repoid not in done_repos: # Check a single package per. repo. ... to give a hint to # the user on big downloads. result, errmsg = self.sigCheckPkg(po) if result != 0: self.verbose_logger.warn("%s", errmsg) done_repos.add(po.repoid) except Errors.RepoError, e: adderror(po, str(e)) else: po.localpath = mylocal if po in errors: del errors[po] if hasattr(urlgrabber.progress, 'text_meter_total_size'): urlgrabber.progress.text_meter_total_size(0) if callback_total is not None and not errors: callback_total(remote_pkgs, remote_size, beg_download) self.plugins.run('postdownload', pkglist=pkglist, errors=errors) # Close curl object after we've downloaded everything. if hasattr(urlgrabber.grabber, 'reset_curl_obj'): urlgrabber.grabber.reset_curl_obj() return errors def verifyHeader(self, fo, po, raiseError): """check the header out via it's naevr, internally""" if type(fo) is types.InstanceType: fo = fo.filename try: hlist = rpm.readHeaderListFromFile(fo) hdr = hlist[0] except (rpm.error, IndexError): if raiseError: raise URLGrabError(-1, _('Header is not complete.')) else: return 0 yip = YumInstalledPackage(hdr) # we're using YumInstalledPackage b/c # it takes headers if yip.pkgtup != po.pkgtup: if raiseError: raise URLGrabError(-1, 'Header does not match intended download') else: return 0 return 1 def downloadHeader(self, po): """download a header from a package object. output based on callback, raise yum.Errors.YumBaseError on problems""" if hasattr(po, 'pkgtype') and po.pkgtype == 'local': return errors = {} local = po.localHdr() repo = self.repos.getRepo(po.repoid) if os.path.exists(local): try: result = self.verifyHeader(local, po, raiseError=1) except URLGrabError, e: # might add a check for length of file - if it is < # required doing a reget misc.unlink_f(local) else: po.hdrpath = local return else: if self.conf.cache: raise Errors.RepoError, \ _('Header not in local cache and caching-only mode enabled. Cannot download %s') % po.hdrpath if self.dsCallback: self.dsCallback.downloadHeader(po.name) try: if not os.path.exists(repo.hdrdir): os.makedirs(repo.hdrdir) checkfunc = (self.verifyHeader, (po, 1), {}) hdrpath = repo.getHeader(po, checkfunc=checkfunc, cache=repo.http_caching != 'none', ) except Errors.RepoError, e: saved_repo_error = e try: misc.unlink_f(local) except OSError, e: raise Errors.RepoError, saved_repo_error else: raise Errors.RepoError, saved_repo_error else: po.hdrpath = hdrpath return def sigCheckPkg(self, po): ''' Take a package object and attempt to verify GPG signature if required Returns (result, error_string) where result is: - 0 - GPG signature verifies ok or verification is not required. - 1 - GPG verification failed but installation of the right GPG key might help. - 2 - Fatal GPG verification error, give up. ''' if self._override_sigchecks: check = False hasgpgkey = 0 elif hasattr(po, 'pkgtype') and po.pkgtype == 'local': check = self.conf.localpkg_gpgcheck hasgpgkey = 0 else: repo = self.repos.getRepo(po.repoid) check = repo.gpgcheck hasgpgkey = not not repo.gpgkey if check: ts = self.rpmdb.readOnlyTS() sigresult = rpmUtils.miscutils.checkSig(ts, po.localPkg()) localfn = os.path.basename(po.localPkg()) if sigresult == 0: result = 0 msg = '' elif sigresult == 1: if hasgpgkey: result = 1 else: result = 2 msg = _('Public key for %s is not installed') % localfn elif sigresult == 2: result = 2 msg = _('Problem opening package %s') % localfn elif sigresult == 3: if hasgpgkey: result = 1 else: result = 2 result = 1 msg = _('Public key for %s is not trusted') % localfn elif sigresult == 4: result = 2 msg = _('Package %s is not signed') % localfn else: result =0 msg = '' return result, msg def cleanUsedHeadersPackages(self): filelist = [] for txmbr in self.tsInfo: if txmbr.po.state not in TS_INSTALL_STATES: continue if txmbr.po.repoid == "installed": continue if txmbr.po.repoid not in self.repos.repos: continue # make sure it's not a local file repo = self.repos.repos[txmbr.po.repoid] local = False for u in repo.baseurl: if u.startswith("file:"): local = True break if local: filelist.extend([txmbr.po.localHdr()]) else: txmbr.po.xattr_origin_url # Load this, before we rm the file. filelist.extend([txmbr.po.localPkg(), txmbr.po.localHdr()]) # now remove them for fn in filelist: if not os.path.exists(fn): continue try: misc.unlink_f(fn) except OSError, e: self.logger.warning(_('Cannot remove %s'), fn) continue else: self.verbose_logger.log(logginglevels.DEBUG_4, _('%s removed'), fn) def cleanHeaders(self): exts = ['hdr'] return self._cleanFiles(exts, 'hdrdir', 'header') def cleanPackages(self): exts = ['rpm'] return self._cleanFiles(exts, 'pkgdir', 'package') def cleanSqlite(self): exts = ['sqlite', 'sqlite.bz2', 'sqlite-journal'] return self._cleanFiles(exts, 'cachedir', 'sqlite') def cleanMetadata(self): exts = ['xml.gz', 'xml', 'cachecookie', 'mirrorlist.txt', 'asc'] # Metalink is also here, but is a *.xml file return self._cleanFiles(exts, 'cachedir', 'metadata') def cleanExpireCache(self): exts = ['cachecookie', 'mirrorlist.txt'] return self._cleanFiles(exts, 'cachedir', 'metadata') def cleanRpmDB(self): cachedir = self.conf.persistdir + "/rpmdb-indexes/" if not os.path.exists(cachedir): filelist = [] else: filelist = misc.getFileList(cachedir, '', []) return self._cleanFilelist('rpmdb', filelist) def _cleanFiles(self, exts, pathattr, filetype): filelist = [] for ext in exts: for repo in self.repos.listEnabled(): path = getattr(repo, pathattr) if os.path.exists(path) and os.path.isdir(path): filelist = misc.getFileList(path, ext, filelist) return self._cleanFilelist(filetype, filelist) def _cleanFilelist(self, filetype, filelist): removed = 0 for item in filelist: try: misc.unlink_f(item) except OSError, e: self.logger.critical(_('Cannot remove %s file %s'), filetype, item) continue else: self.verbose_logger.log(logginglevels.DEBUG_4, _('%s file %s removed'), filetype, item) removed+=1 msg = P_('%d %s file removed', '%d %s files removed', removed) % (removed, filetype) return 0, [msg] def doPackageLists(self, pkgnarrow='all', patterns=None, showdups=None, ignore_case=False): """generates lists of packages, un-reduced, based on pkgnarrow option""" if showdups is None: showdups = self.conf.showdupesfromrepos ygh = misc.GenericHolder(iter=pkgnarrow) installed = [] available = [] reinstall_available = [] old_available = [] updates = [] obsoletes = [] obsoletesTuples = [] recent = [] extras = [] ic = ignore_case # list all packages - those installed and available, don't 'think about it' if pkgnarrow == 'all': dinst = {} ndinst = {} # Newest versions by name.arch for po in self.rpmdb.returnPackages(patterns=patterns, ignore_case=ic): dinst[po.pkgtup] = po if showdups: continue key = (po.name, po.arch) if key not in ndinst or po.verGT(ndinst[key]): ndinst[key] = po installed = dinst.values() if showdups: avail = self.pkgSack.returnPackages(patterns=patterns, ignore_case=ic) else: try: avail = self.pkgSack.returnNewestByNameArch(patterns=patterns, ignore_case=ic) except Errors.PackageSackError: avail = [] for pkg in avail: if showdups: if pkg.pkgtup in dinst: reinstall_available.append(pkg) else: available.append(pkg) else: key = (pkg.name, pkg.arch) if pkg.pkgtup in dinst: reinstall_available.append(pkg) elif key not in ndinst or pkg.verGT(ndinst[key]): available.append(pkg) else: old_available.append(pkg) # produce the updates list of tuples elif pkgnarrow == 'updates': for (n,a,e,v,r) in self.up.getUpdatesList(): matches = self.pkgSack.searchNevra(name=n, arch=a, epoch=e, ver=v, rel=r) if len(matches) > 1: updates.append(matches[0]) self.verbose_logger.log(logginglevels.DEBUG_1, _('More than one identical match in sack for %s'), matches[0]) elif len(matches) == 1: updates.append(matches[0]) else: self.verbose_logger.log(logginglevels.DEBUG_1, _('Nothing matches %s.%s %s:%s-%s from update'), n,a,e,v,r) if patterns: exactmatch, matched, unmatched = \ parsePackages(updates, patterns, casematch=not ignore_case) updates = exactmatch + matched # installed only elif pkgnarrow == 'installed': installed = self.rpmdb.returnPackages(patterns=patterns, ignore_case=ic) # available in a repository elif pkgnarrow == 'available': if showdups: avail = self.pkgSack.returnPackages(patterns=patterns, ignore_case=ic) else: try: avail = self.pkgSack.returnNewestByNameArch(patterns=patterns, ignore_case=ic) except Errors.PackageSackError: avail = [] for pkg in avail: if showdups: if self.rpmdb.contains(po=pkg): reinstall_available.append(pkg) else: available.append(pkg) else: ipkgs = self.rpmdb.searchNevra(pkg.name, arch=pkg.arch) if ipkgs: latest = sorted(ipkgs, reverse=True)[0] if not ipkgs or pkg.verGT(latest): available.append(pkg) elif pkg.verEQ(latest): reinstall_available.append(pkg) else: old_available.append(pkg) # not in a repo but installed elif pkgnarrow == 'extras': # we must compare the installed set versus the repo set # anything installed but not in a repo is an extra avail = self.pkgSack.simplePkgList(patterns=patterns, ignore_case=ic) avail = set(avail) for po in self.rpmdb.returnPackages(patterns=patterns, ignore_case=ic): if po.pkgtup not in avail: extras.append(po) # obsoleting packages (and what they obsolete) elif pkgnarrow == 'obsoletes': self.conf.obsoletes = 1 for (pkgtup, instTup) in self.up.getObsoletesTuples(): (n,a,e,v,r) = pkgtup pkgs = self.pkgSack.searchNevra(name=n, arch=a, ver=v, rel=r, epoch=e) instpo = self.getInstalledPackageObject(instTup) for po in pkgs: obsoletes.append(po) obsoletesTuples.append((po, instpo)) if patterns: exactmatch, matched, unmatched = \ parsePackages(obsoletes, patterns, casematch=not ignore_case) obsoletes = exactmatch + matched matched_obsoletes = set(obsoletes) nobsoletesTuples = [] for po, instpo in obsoletesTuples: if po not in matched_obsoletes: continue nobsoletesTuples.append((po, instpo)) obsoletesTuples = nobsoletesTuples if not showdups: obsoletes = packagesNewestByName(obsoletes) filt = set(obsoletes) nobsoletesTuples = [] for po, instpo in obsoletesTuples: if po not in filt: continue nobsoletesTuples.append((po, instpo)) obsoletesTuples = nobsoletesTuples # packages recently added to the repositories elif pkgnarrow == 'recent': now = time.time() recentlimit = now-(self.conf.recent*86400) if showdups: avail = self.pkgSack.returnPackages(patterns=patterns, ignore_case=ic) else: try: avail = self.pkgSack.returnNewestByNameArch(patterns=patterns, ignore_case=ic) except Errors.PackageSackError: avail = [] for po in avail: if int(po.filetime) > recentlimit: recent.append(po) ygh.installed = installed ygh.available = available ygh.reinstall_available = reinstall_available ygh.old_available = old_available ygh.updates = updates ygh.obsoletes = obsoletes ygh.obsoletesTuples = obsoletesTuples ygh.recent = recent ygh.extras = extras return ygh def findDeps(self, pkgs): """ Return the dependencies for a given package object list, as well possible solutions for those dependencies. Returns the deps as a dict of dicts:: packageobject = [reqs] = [list of satisfying pkgs] """ results = {} for pkg in pkgs: results[pkg] = {} reqs = pkg.requires reqs.sort() pkgresults = results[pkg] # shorthand so we don't have to do the # double bracket thing for req in reqs: (r,f,v) = req if r.startswith('rpmlib('): continue satisfiers = [] for po in self.whatProvides(r, f, v): satisfiers.append(po) pkgresults[req] = satisfiers return results # pre 3.2.10 API used to always showdups, so that's the default atm. def searchGenerator(self, fields, criteria, showdups=True, keys=False, searchtags=True, searchrpmdb=True): """Generator method to lighten memory load for some searches. This is the preferred search function to use. Setting keys to True will use the search keys that matched in the sorting, and return the search keys in the results. """ sql_fields = [] for f in fields: 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, # [search strings which matched], # [results that matched])] tmpres = [] real_crit = [] real_crit_lower = [] # Take the s.lower()'s out of the loop rcl2c = {} # weigh terms in given order (earlier = more relevant) critweight = 0 critweights = {} for s in criteria: real_crit.append(s) real_crit_lower.append(s.lower()) rcl2c[s.lower()] = s critweights.setdefault(s, critweight) critweight -= 1 for sack in self.pkgSack.sacks.values(): tmpres.extend(sack.searchPrimaryFieldsMultipleStrings(sql_fields, real_crit)) def results2sorted_lists(tmpres, sorted_lists): for (po, count) in tmpres: # check the pkg for sanity # pop it into the sorted lists tmpkeys = set() tmpvalues = [] if count not in sorted_lists: sorted_lists[count] = [] for s in real_crit_lower: for field in fields: value = to_unicode(getattr(po, field)) if value and value.lower().find(s) != -1: tmpvalues.append(value) tmpkeys.add(rcl2c[s]) if len(tmpvalues) > 0: sorted_lists[count].append((po, tmpkeys, tmpvalues)) results2sorted_lists(tmpres, sorted_lists) if searchrpmdb: tmpres = self.rpmdb.searchPrimaryFieldsMultipleStrings(fields, real_crit_lower, lowered=True) # close our rpmdb connection so we can ctrl-c, kthxbai self.closeRpmDB() results2sorted_lists(tmpres, sorted_lists) del tmpres results_by_pkg = {} # pkg=[list_of_tuples_of_values] if searchtags: tmpres = self.searchPackageTags(real_crit_lower) for pkg in tmpres: count = 0 matchkeys = [] tagresults = [] for (match, taglist) in tmpres[pkg]: count += len(taglist) matchkeys.append(rcl2c[match]) tagresults.extend(taglist) if pkg not in results_by_pkg: results_by_pkg[pkg] = [] results_by_pkg[pkg].append((matchkeys, tagresults)) del tmpres if sorted_lists.values(): # do the ones we already have for item in sorted_lists.values(): for pkg, k, v in item: if pkg not in results_by_pkg: results_by_pkg[pkg] = [] results_by_pkg[pkg].append((k,v)) # take our existing dict-by-pkg and make the dict-by-count for # this bizarro sorted_lists format # FIXME - stab sorted_lists in the chest at some later date sorted_lists = {} for pkg in results_by_pkg: totkeys = [] totvals = [] for (k, v) in results_by_pkg[pkg]: totkeys.extend(k) totvals.extend(v) totkeys = misc.unique(totkeys) totvals = misc.unique(totvals) count = len(totkeys) if count not in sorted_lists: sorted_lists[count] = [] sorted_lists[count].append((pkg, totkeys, totvals)) # To explain why the following code looks like someone took drugs # before/during/after coding: # # We are sorting a list of: (po, tmpkeys, tmpvalues). # Eg. (po, ['foo', 'bar'], ['matches foo', # 'matches barx']) # # So we sort, and get a result like: # po | repo | matching value # 1. yum-1 | fed | -2 # 2. yum-2 | fed | -2 # 3. yum-2 | @fed | -2 # 4. yum-3 | ups | -1 # ...but without showdups we want to output _just_ #3, which requires # we find the newest EVR po for the best "matching value". Without keys # it's the same, except we just want the newest EVR. # If we screw it up it's probably not even noticable most of the time # either, so it's pretty thankless. HTH. HAND. # By default just sort using package sorting sort_func = operator.itemgetter(0) dup = lambda x: True if keys: # Take into account the keys found, their original order, # and number of fields hit as well sort_func = lambda x: (-sum((critweights[y] for y in x[1])), -len(x[2]), "\0".join(sorted(x[1])), x[0]) dup = lambda x,y: sort_func(x)[:-1] == sort_func(y)[:-1] yielded = {} for val in reversed(sorted(sorted_lists)): last = None for sl_vals in sorted(sorted_lists[val], key=sort_func): if showdups: (po, ks, vs) = sl_vals else: if (sl_vals[0].name, sl_vals[0].arch) in yielded: continue na = (sl_vals[0].name, sl_vals[0].arch) if last is None or (last[0] == na and dup(last[1],sl_vals)): last = (na, sl_vals) continue (po, ks, vs) = last[1] if last[0] == na: # Dito. yielded test above. last = None else: last = (na, sl_vals) if keys: yield (po, ks, vs) else: yield (po, vs) if not showdups: yielded[(po.name, po.arch)] = 1 if last is not None: (po, ks, vs) = last[1] if keys: yield (po, ks, vs) else: yield (po, vs) def searchPackageTags(self, criteria): results = {} # name = [(criteria, taglist)] for c in criteria: c = c.lower() res = self.pkgtags.search_tags(c) for (name, taglist) in res.items(): pkgs = self.pkgSack.searchNevra(name=name) if not pkgs: continue pkg = pkgs[0] if pkg not in results: results[pkg] = [] results[pkg].append((c, taglist)) return results def searchPackages(self, fields, criteria, callback=None): """Search specified fields for matches to criteria optional callback specified to print out results as you go. Callback is a simple function of: callback(po, matched values list). It will just return a dict of dict[po]=matched values list""" warnings.warn(_('searchPackages() will go away in a future version of Yum.\ Use searchGenerator() instead. \n'), Errors.YumFutureDeprecationWarning, stacklevel=2) matches = {} match_gen = self.searchGenerator(fields, criteria) for (po, matched_strings) in match_gen: if callback: callback(po, matched_strings) if po not in matches: matches[po] = [] matches[po].extend(matched_strings) return matches def searchPackageProvides(self, args, callback=None, callback_has_matchfor=False): def _arg_data(arg): if not misc.re_glob(arg): isglob = False if arg[0] != '/': canBeFile = False else: canBeFile = True else: isglob = True canBeFile = misc.re_filename(arg) return isglob, canBeFile matches = {} for arg in args: arg = to_unicode(arg) isglob, canBeFile = _arg_data(arg) if not isglob: usedDepString = True where = self.returnPackagesByDep(arg) else: usedDepString = False where = self.pkgSack.searchAll(arg, False) self.verbose_logger.log(logginglevels.DEBUG_1, P_('Searching %d package', 'Searching %d packages', len(where)), len(where)) for po in sorted(where): self.verbose_logger.log(logginglevels.DEBUG_2, _('searching package %s'), po) tmpvalues = [] if usedDepString: tmpvalues.append(arg) if not isglob and canBeFile: # then it is not a globbed file we have matched it precisely tmpvalues.append(arg) if isglob and canBeFile: self.verbose_logger.log(logginglevels.DEBUG_2, _('searching in file entries')) for thisfile in po.dirlist + po.filelist + po.ghostlist: if fnmatch.fnmatch(thisfile, arg): tmpvalues.append(thisfile) self.verbose_logger.log(logginglevels.DEBUG_2, _('searching in provides entries')) for (p_name, p_flag, (p_e, p_v, p_r)) in po.provides: prov = misc.prco_tuple_to_string((p_name, p_flag, (p_e, p_v, p_r))) if not usedDepString: if fnmatch.fnmatch(p_name, arg) or fnmatch.fnmatch(prov, arg): tmpvalues.append(prov) if len(tmpvalues) > 0: if callback: # No matchfor, on globs if not isglob and callback_has_matchfor: callback(po, tmpvalues, args) else: callback(po, tmpvalues) matches[po] = tmpvalues # installed rpms, too taglist = ['filelist', 'dirnames', 'provides_names'] taglist_provonly = ['provides_names'] for arg in args: isglob, canBeFile = _arg_data(arg) if not isglob: where = self.returnInstalledPackagesByDep(arg) usedDepString = True for po in where: tmpvalues = [arg] if len(tmpvalues) > 0: if callback: if callback_has_matchfor: callback(po, tmpvalues, args) else: callback(po, tmpvalues) matches[po] = tmpvalues else: usedDepString = False where = self.rpmdb if canBeFile: arg_taglist = taglist else: arg_taglist = taglist_provonly arg_regex = re.compile(fnmatch.translate(arg)) for po in sorted(where): searchlist = [] tmpvalues = [] for tag in arg_taglist: tagdata = getattr(po, tag) if tagdata is None: continue if type(tagdata) is types.ListType: searchlist.extend(tagdata) else: searchlist.append(tagdata) for item in searchlist: if arg_regex.match(item): tmpvalues.append(item) if len(tmpvalues) > 0: if callback: # No matchfor, on globs callback(po, tmpvalues) matches[po] = tmpvalues return matches def doGroupLists(self, uservisible=0, patterns=None, ignore_case=True): """returns two lists of groups, installed groups and available groups optional 'uservisible' bool to tell it whether or not to return only groups marked as uservisible""" installed = [] available = [] if self.comps.compscount == 0: raise Errors.GroupsError, _('No group data available for configured repositories') if patterns is None: grps = self.comps.groups else: grps = self.comps.return_groups(",".join(patterns), case_sensitive=not ignore_case) for grp in grps: if grp.installed: if uservisible: if grp.user_visible: installed.append(grp) else: installed.append(grp) else: if uservisible: if grp.user_visible: available.append(grp) else: available.append(grp) return sorted(installed), sorted(available) def groupRemove(self, grpid): """mark all the packages in this group to be removed""" txmbrs_used = [] thesegroups = self.comps.return_groups(grpid) if not thesegroups: raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) for thisgroup in thesegroups: thisgroup.toremove = True pkgs = thisgroup.packages for pkg in thisgroup.packages: txmbrs = self.remove(name=pkg, silence_warnings=True) txmbrs_used.extend(txmbrs) for txmbr in txmbrs: txmbr.groups.append(thisgroup.groupid) return txmbrs_used def groupUnremove(self, grpid): """unmark any packages in the group from being removed""" thesegroups = self.comps.return_groups(grpid) if not thesegroups: raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) for thisgroup in thesegroups: thisgroup.toremove = False pkgs = thisgroup.packages for pkg in thisgroup.packages: for txmbr in self.tsInfo: if txmbr.po.name == pkg and txmbr.po.state in TS_INSTALL_STATES: try: txmbr.groups.remove(grpid) except ValueError: self.verbose_logger.log(logginglevels.DEBUG_1, _("package %s was not marked in group %s"), txmbr.po, grpid) continue # if there aren't any other groups mentioned then remove the pkg if len(txmbr.groups) == 0: self.tsInfo.remove(txmbr.po.pkgtup) def selectGroup(self, grpid, group_package_types=[], enable_group_conditionals=None): """mark all the packages in the group to be installed returns a list of transaction members it added to the transaction set Optionally take: group_package_types=List - overrides self.conf.group_package_types enable_group_conditionals=Bool - overrides self.conf.enable_group_conditionals """ if not self.comps.has_group(grpid): raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) txmbrs_used = [] thesegroups = self.comps.return_groups(grpid) if not thesegroups: raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) package_types = self.conf.group_package_types if group_package_types: package_types = group_package_types for thisgroup in thesegroups: if thisgroup.selected: continue thisgroup.selected = True pkgs = [] if 'mandatory' in package_types: pkgs.extend(thisgroup.mandatory_packages) if 'default' in package_types: pkgs.extend(thisgroup.default_packages) if 'optional' in package_types: pkgs.extend(thisgroup.optional_packages) old_txmbrs = len(txmbrs_used) for pkg in pkgs: self.verbose_logger.log(logginglevels.DEBUG_2, _('Adding package %s from group %s'), pkg, thisgroup.groupid) try: txmbrs = self.install(name = pkg) except Errors.InstallError, e: self.verbose_logger.debug(_('No package named %s available to be installed'), pkg) else: txmbrs_used.extend(txmbrs) for txmbr in txmbrs: txmbr.groups.append(thisgroup.groupid) group_conditionals = self.conf.enable_group_conditionals if enable_group_conditionals is not None: # has to be this way so we can set it to False group_conditionals = enable_group_conditionals count_cond_test = 0 if group_conditionals: for condreq, cond in thisgroup.conditional_packages.iteritems(): if self.isPackageInstalled(cond): try: txmbrs = self.install(name = condreq) except Errors.InstallError: # we don't care if the package doesn't exist continue else: if cond not in self.tsInfo.conditionals: self.tsInfo.conditionals[cond]=[] txmbrs_used.extend(txmbrs) for txmbr in txmbrs: 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 it's added later in this transaction pkgs = self.pkgSack.searchNevra(name=condreq) if pkgs: if self.arch.multilib: if self.conf.multilib_policy == 'best': use = [] best = self.arch.legit_multi_arches best.append('noarch') for pkg in pkgs: if pkg.arch in best: use.append(pkg) pkgs = use pkgs = packagesNewestByName(pkgs) count_cond_test += len(pkgs) if cond not in self.tsInfo.conditionals: self.tsInfo.conditionals[cond] = [] self.tsInfo.conditionals[cond].extend(pkgs) if len(txmbrs_used) == old_txmbrs: self.logger.critical(_('Warning: Group %s does not have any packages.'), thisgroup.groupid) if count_cond_test: self.logger.critical(_('Group %s does have %u conditional packages, which may get installed.'), count_cond_test) return txmbrs_used def deselectGroup(self, grpid, force=False): """ Without the force option set, this removes packages from being installed that were added as part of installing one of the group(s). If the force option is set, then all installing packages in the group(s) are force removed from the transaction. """ if not self.comps.has_group(grpid): raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) thesegroups = self.comps.return_groups(grpid) if not thesegroups: raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) for thisgroup in thesegroups: thisgroup.selected = False for pkgname in thisgroup.packages: txmbrs = self.tsInfo.getMembersWithState(None,TS_INSTALL_STATES) for txmbr in txmbrs: if txmbr.po.name != pkgname: continue if not force: try: txmbr.groups.remove(grpid) except ValueError: self.verbose_logger.log(logginglevels.DEBUG_1, _("package %s was not marked in group %s"), txmbr.po, grpid) continue # If the pkg isn't part of any group, or the group is # being forced out ... then remove the pkg if force or len(txmbr.groups) == 0: self.tsInfo.remove(txmbr.po.pkgtup) for pkg in self.tsInfo.conditionals.get(txmbr.name, []): self.tsInfo.remove(pkg.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 more than one response - right now it's more rudimentary.""" # look it up in the self.localPackages first: for po in self.localPackages: if po.pkgtup == pkgtup: return po pkgs = self.pkgSack.searchPkgTuple(pkgtup) if len(pkgs) == 0: self._add_not_found_a(pkgs, pkgtup) 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 result = pkgs[0] else: result = pkgs[0] # which should be the only # this is where we could do something to figure out which repository # is the best one to pull from return result def getInstalledPackageObject(self, pkgtup): """ Returns a YumInstalledPackage object for the pkgtup specified, or raises an exception. You should use this instead of searchPkgTuple() if you are assuming there is a value. """ pkgs = self.rpmdb.searchPkgTuple(pkgtup) if len(pkgs) == 0: self._add_not_found_i(pkgs, pkgtup) raise Errors.RpmDBError, _('Package tuple %s could not be found in rpmdb') % str(pkgtup) # Dito. FIXME from getPackageObject() for len() > 1 ... :) po = pkgs[0] # take the first one return po def gpgKeyCheck(self): """checks for the presence of gpg keys in the rpmdb returns 0 if no keys returns 1 if keys""" gpgkeyschecked = self.conf.cachedir + '/.gpgkeyschecked.yum' if os.path.exists(gpgkeyschecked): return 1 myts = rpmUtils.transaction.initReadOnlyTransaction(root=self.conf.installroot) myts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) idx = myts.dbMatch('name', 'gpg-pubkey') keys = idx.count() del idx del myts if keys == 0: return 0 else: mydir = os.path.dirname(gpgkeyschecked) if not os.path.exists(mydir): os.makedirs(mydir) fo = open(gpgkeyschecked, 'w') fo.close() del fo return 1 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 [] # parse the string out # either it is 'dep (some operator) e:v-r' # or /file/dep # or packagename if type(depstring) == types.TupleType: (depname, depflags, depver) = depstring else: depname = depstring depflags = None depver = None if depstring[0] != '/': # not a file dep - look at it for being versioned dep_split = depstring.split() if len(dep_split) == 3: depname, flagsymbol, depver = dep_split if not flagsymbol in SYMBOLFLAGS: raise Errors.YumBaseError, _('Invalid version flag from: %s') % str(depstring) depflags = SYMBOLFLAGS[flagsymbol] return self.pkgSack.getProvides(depname, depflags, depver).keys() def returnPackageByDep(self, depstring): """Pass in a generic [build]require string and this function will pass back the best(or first) package it finds providing that dep.""" # we get all sorts of randomness here errstring = depstring if type(depstring) not in types.StringTypes: errstring = str(depstring) try: pkglist = self.returnPackagesByDep(depstring) except Errors.YumBaseError: raise Errors.YumBaseError, _('No Package found for %s') % errstring ps = ListPackageSack(pkglist) result = self._bestPackageFromList(ps.returnNewestByNameArch()) if result is None: raise Errors.YumBaseError, _('No Package found for %s') % errstring return result def returnInstalledPackagesByDep(self, depstring): """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 # or packagename if type(depstring) == types.TupleType: (depname, depflags, depver) = depstring else: depname = depstring depflags = None depver = None if depstring[0] != '/': # not a file dep - look at it for being versioned dep_split = depstring.split() if len(dep_split) == 3: depname, flagsymbol, depver = dep_split if not flagsymbol in SYMBOLFLAGS: raise Errors.YumBaseError, _('Invalid version flag from: %s') % str(depstring) depflags = SYMBOLFLAGS[flagsymbol] return self.rpmdb.getProvides(depname, depflags, depver).keys() def _bestPackageFromList(self, pkglist): """take list of package objects and return the best package object. If the list is empty, return None. Note: this is not aware of multilib so make sure you're only passing it packages of a single arch group.""" if len(pkglist) == 0: return None if len(pkglist) == 1: return pkglist[0] bestlist = self._compare_providers(pkglist, None) return bestlist[0][0] def bestPackagesFromList(self, pkglist, arch=None, single_name=False): """Takes a list of packages, returns the best packages. This function is multilib aware so that it will not compare multilib to singlelib packages""" returnlist = [] compatArchList = self.arch.get_arch_list(arch) multiLib = [] singleLib = [] noarch = [] for po in pkglist: if po.arch not in compatArchList: continue elif po.arch in ("noarch"): noarch.append(po) elif isMultiLibArch(arch=po.arch): multiLib.append(po) else: singleLib.append(po) # we now have three lists. find the best package(s) of each multi = self._bestPackageFromList(multiLib) single = self._bestPackageFromList(singleLib) no = self._bestPackageFromList(noarch) if single_name and multi and single and multi.name != single.name: # Sinlge _must_ match multi, if we want a single package name single = None # now, to figure out which arches we actually want # if there aren't noarch packages, it's easy. multi + single if no is None: if multi: returnlist.append(multi) if single: returnlist.append(single) # if there's a noarch and it's newer than the multilib, we want # just the noarch. otherwise, we want multi + single elif multi: best = self._bestPackageFromList([multi,no]) if best.arch == "noarch": returnlist.append(no) else: if multi: returnlist.append(multi) if single: returnlist.append(single) # similar for the non-multilib case elif single: best = self._bestPackageFromList([single,no]) if best.arch == "noarch": returnlist.append(no) else: returnlist.append(single) # if there's not a multi or single lib, then we want the noarch else: returnlist.append(no) return returnlist # FIXME: This doesn't really work, as it assumes one obsoleter for each pkg # when we can have: # 1 pkg obsoleted by multiple pkgs _and_ # 1 pkg obsoleting multiple pkgs # ...and we need to detect loops, and get the arches "right" and do this # for chains. Atm. I hate obsoletes, and I can't get it to work better, # easily ... so screw it, don't create huge chains of obsoletes with some # loops in there too ... or I'll have to hurt you. def _pkg2obspkg(self, po): """ Given a package return the package it's obsoleted by and so we should install instead. Or None if there isn't one. """ if self._up is not None: thispkgobsdict = self.up.checkForObsolete([po.pkgtup]) else: # This is pretty hacky, but saves a huge amount of time for small # ops. if not self.conf.obsoletes: return None if not hasattr(self, '_up_obs_hack'): obs_init = time.time() up = rpmUtils.updates.Updates([], []) up.rawobsoletes = self.pkgSack.returnObsoletes(newest=True) self.verbose_logger.debug('Obs Init time: %0.3f' % (time.time() - obs_init)) self._up_obs_hack = up thispkgobsdict = self._up_obs_hack.checkForObsolete([po.pkgtup]) if po.pkgtup in thispkgobsdict: 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): """ Generic comp. sci. test for looping, walk the list with two pointers moving one twice as fast as the other. If they are ever == you have a loop. If loop we return None, if no loop the last element. """ slow = node done = False while True: next = next_func(node) if next is None and not done: return None if next is None: return node node = next_func(next) if node is None: return next done = True slow = next_func(slow) if next == slow: return None def _at_groupinstall(self, pattern): " Do groupinstall via. leading @ on the cmd line, for install/update." assert pattern[0] == '@' group_string = pattern[1:] tx_return = [] for group in self.comps.return_groups(group_string): try: txmbrs = self.selectGroup(group.groupid) tx_return.extend(txmbrs) except yum.Errors.GroupsError: self.logger.critical(_('Warning: Group %s does not exist.'), group_string) continue return tx_return def _at_groupremove(self, pattern): " Do groupremove via. leading @ on the cmd line, for remove." assert pattern[0] == '@' group_string = pattern[1:] tx_return = [] try: txmbrs = self.groupRemove(group_string) except yum.Errors.GroupsError: self.logger.critical(_('No group named %s exists'), group_string) else: tx_return.extend(txmbrs) return tx_return # Note that this returns available pkgs, and not txmbrs like the other # _at_group* functions. def _at_groupdowngrade(self, pattern): " Do downgrade of a group via. leading @ on the cmd line." assert pattern[0] == '@' grpid = pattern[1:] thesegroups = self.comps.return_groups(grpid) if not thesegroups: raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid) pkgnames = set() for thisgroup in thesegroups: 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 self.conf.obsoletes: return if not isinstance(po, YumLocalPackage): for (obstup, inst_tup) in self.up.getObsoletersTuples(name=po.name): if po.pkgtup == obstup: installed_pkg = self.getInstalledPackageObject(inst_tup) yield installed_pkg else: for pkg in self._find_obsoletees_direct(po): yield pkg def _find_obsoletees_direct(self, po): """ Return the pkgs. that are obsoleted by the po we pass in. This works directly on the package data, for two reasons: 1. Consulting .up. has a slow setup for small/fast ops. 2. We need this work even if obsoletes are turned off, because rpm will be doing it for us. """ for obs_n in po.obsoletes_names: for pkg in self.rpmdb.searchNevra(name=obs_n): if pkg.obsoletedBy([po]): yield pkg def _add_prob_flags(self, *flags): """ Add all of the passed flags to the tsInfo.probFilterFlags array. """ for flag in flags: if flag not in self.tsInfo.probFilterFlags: self.tsInfo.probFilterFlags.append(flag) def install(self, po=None, **kwargs): """try to mark for install the item specified. Uses provided package object, if available. If not it uses the kwargs and gets the best packages from the keyword options provided returns the list of txmbr of the items it installs """ pkgs = [] was_pattern = False if po: if isinstance(po, YumAvailablePackage) or isinstance(po, YumLocalPackage): pkgs.append(po) else: raise Errors.InstallError, _('Package Object was not a package object instance') else: if not kwargs: raise Errors.InstallError, _('Nothing specified to install') if 'pattern' in kwargs: 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 pats = [kwargs['pattern']] mypkgs = self.pkgSack.returnPackages(patterns=pats, ignore_case=False) pkgs.extend(mypkgs) # if we have anything left unmatched, let's take a look for it # being a dep like glibc.so.2 or /foo/bar/baz if not mypkgs: arg = kwargs['pattern'] self.verbose_logger.debug(_('Checking for virtual provide or file-provide for %s'), arg) try: mypkgs = self.returnPackagesByDep(arg) except yum.Errors.YumBaseError, e: self.logger.critical(_('No Match for argument: %s') % to_unicode(arg)) else: # install MTA* == fail, because provides don't do globs # install /usr/kerberos/bin/* == success (and we want # all of the pkgs) if mypkgs and not misc.re_glob(arg): mypkgs = self.bestPackagesFromList(mypkgs, single_name=True) if mypkgs: pkgs.extend(mypkgs) else: nevra_dict = self._nevra_kwarg_parse(kwargs) pkgs = self.pkgSack.searchNevra(name=nevra_dict['name'], epoch=nevra_dict['epoch'], arch=nevra_dict['arch'], ver=nevra_dict['version'], rel=nevra_dict['release']) self._add_not_found_a(pkgs, nevra_dict) if pkgs: # if was_pattern or nevra-dict['arch'] is none, take the list # of arches based on our multilib_compat config and # toss out any pkgs of any arch NOT in that arch list # only do these things if we're multilib if self.arch.multilib: if was_pattern or not nevra_dict['arch']: # and only if they # they didn't specify an arch if self.conf.multilib_policy == 'best': pkgs_by_name = {} use = [] not_added = [] best = self.arch.legit_multi_arches best.append('noarch') for pkg in pkgs: if pkg.arch in best: pkgs_by_name[pkg.name] = 1 use.append(pkg) else: not_added.append(pkg) for pkg in not_added: if not pkg.name in pkgs_by_name: use.append(pkg) pkgs = use pkgs = packagesNewestByName(pkgs) pkgbyname = {} for pkg in pkgs: if pkg.name not in pkgbyname: pkgbyname[pkg.name] = [ pkg ] else: pkgbyname[pkg.name].append(pkg) lst = [] for pkgs in pkgbyname.values(): lst.extend(self.bestPackagesFromList(pkgs)) pkgs = lst if not pkgs: # Do we still want to return errors here? # We don't in the cases below, so I didn't here... if 'pattern' in kwargs: pkgs = self.rpmdb.returnPackages(patterns=[kwargs['pattern']], ignore_case=False) if 'name' in kwargs: pkgs = self.rpmdb.searchNevra(name=kwargs['name']) if 'pkgtup' in kwargs: pkgs = self.rpmdb.searchNevra(name=kwargs['pkgtup'][0]) # Warning here does "weird" things when doing: # yum --disablerepo='*' install '*' # etc. ... see RHBZ#480402 if False: for pkg in pkgs: self.verbose_logger.warning(_('Package %s installed and not available'), pkg) if pkgs: return [] raise Errors.InstallError, _('No package(s) available to install') # FIXME - lots more checking here # - install instead of erase # - better error handling/reporting tx_return = [] for po in pkgs: if self.tsInfo.exists(pkgtup=po.pkgtup): if self.tsInfo.getMembersWithState(po.pkgtup, TS_INSTALL_STATES): self.verbose_logger.log(logginglevels.DEBUG_1, _('Package: %s - already in transaction set'), po) tx_return.extend(self.tsInfo.getMembers(pkgtup=po.pkgtup)) continue # make sure this shouldn't be passed to update: if (self.rpmdb.searchNames([po.name]) and po.pkgtup in self.up.updating_dict): txmbrs = self.update(po=po) tx_return.extend(txmbrs) continue # Make sure we're not installing a package which is obsoleted by # something else in the repo. Unless there is a obsoletion loop, # at which point ignore everything. obsoleting_pkg = None if self.conf.obsoletes: obsoleting_pkg = self._test_loop(po, self._pkg2obspkg) if obsoleting_pkg is not None: # this is not a definitive check but it'll make sure we don't # pull in foo.i586 when foo.x86_64 already obsoletes the pkg and # is already installed already_obs = None pkgs = self.rpmdb.searchNevra(name=obsoleting_pkg.name) pkgs = po.obsoletedBy(pkgs, limit=1) if pkgs: already_obs = pkgs[0] 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) tx_return.extend(self.install(po=obsoleting_pkg)) continue # make sure it's not already installed if self.rpmdb.contains(po=po): if not self.tsInfo.getMembersWithState(po.pkgtup, TS_REMOVE_STATES): self.verbose_logger.warning(_('Package %s already installed and latest version'), po) continue # make sure we don't have a name.arch of this already installed # if so pass it to update b/c it should be able to figure it out # if self.rpmdb.contains(name=po.name, arch=po.arch) and not self.allowedMultipleInstalls(po): if not self.allowedMultipleInstalls(po): found = True for ipkg in self.rpmdb.searchNevra(name=po.name, arch=po.arch): found = False if self.tsInfo.getMembersWithState(ipkg.pkgtup, TS_REMOVE_STATES): found = True break if not found: self.verbose_logger.warning(_('Package matching %s already installed. Checking for update.'), po) txmbrs = self.update(po=po) tx_return.extend(txmbrs) continue # at this point we are going to mark the pkg to be installed, make sure # it's not an older package that is allowed in due to multiple installs # or some other oddity. If it is - then modify the problem filter to cope for ipkg in self.rpmdb.searchNevra(name=po.name, arch=po.arch): if ipkg.verEQ(po): self._add_prob_flags(rpm.RPMPROB_FILTER_REPLACEPKG, rpm.RPMPROB_FILTER_REPLACENEWFILES, rpm.RPMPROB_FILTER_REPLACEOLDFILES) # Yum needs the remove to happen before we allow the # install of the same version. But rpm doesn't like that # as it then has an install which removes the old version # and a remove, which also tries to remove the old version. self.tsInfo.remove(ipkg.pkgtup) break for ipkg in self.rpmdb.searchNevra(name=po.name): if ipkg.verGT(po) and not canCoinstall(ipkg.arch, po.arch): self._add_prob_flags(rpm.RPMPROB_FILTER_OLDPACKAGE) break # it doesn't obsolete anything. If it does, mark that in the tsInfo, too obs_pkgs = list(self._find_obsoletees_direct(po)) if obs_pkgs: for obsoletee in obs_pkgs: txmbr = self.tsInfo.addObsoleting(po, obsoletee) self.tsInfo.addObsoleted(obsoletee, po) tx_return.append(txmbr) else: txmbr = self.tsInfo.addInstall(po) tx_return.append(txmbr) return tx_return def _check_new_update_provides(self, opkg, npkg): """ Check for any difference in the provides of the old and new update that is needed by the transaction. If so we "update" those pkgs too, to the latest version. """ oprovs = set(opkg.returnPrco('provides')) nprovs = set(npkg.returnPrco('provides')) tx_return = [] for prov in oprovs.difference(nprovs): reqs = self.tsInfo.getRequires(*prov) for pkg in reqs: for req in reqs[pkg]: if not npkg.inPrcoRange('provides', req): naTup = (pkg.name, pkg.arch) for pkg in self.pkgSack.returnNewestByNameArch(naTup): tx_return.extend(self.update(po=pkg)) break return tx_return def _newer_update_in_trans(self, pkgtup, available_pkg, tx_return): """ We return True if there is a newer package already in the transaction. If there is an older one, we remove it (and update any deps. that aren't satisfied by the newer pkg) and return False so we'll update to this newer pkg. """ found = False for txmbr in self.tsInfo.getMembersWithState(pkgtup, [TS_UPDATED]): count = 0 for po in txmbr.updated_by: if available_pkg.verLE(po): count += 1 else: for ntxmbr in self.tsInfo.getMembers(po.pkgtup): self.tsInfo.remove(ntxmbr.po.pkgtup) txs = self._check_new_update_provides(ntxmbr.po, available_pkg) tx_return.extend(txs) if count: found = True else: self.tsInfo.remove(txmbr.po.pkgtup) return found def _add_up_txmbr(self, requiringPo, upkg, ipkg): txmbr = self.tsInfo.addUpdate(upkg, ipkg) if requiringPo: txmbr.setAsDep(requiringPo) if ('reason' in ipkg.yumdb_info and ipkg.yumdb_info.reason == 'dep'): txmbr.reason = 'dep' return txmbr def update(self, po=None, requiringPo=None, update_to=False, **kwargs): """try to mark for update the item(s) specified. po is a package object - if that is there, mark it for update, if possible else use **kwargs to match the package needing update if nothing is specified at all then attempt to update everything returns the list of txmbr of the items it marked for update""" # check for args - if no po nor kwargs, do them all # if po, do it, ignore all else # if no po do kwargs # uninstalled pkgs called for update get returned with errors in a list, maybe? tx_return = [] if not po and not kwargs: # update everything (the easy case) self.verbose_logger.log(logginglevels.DEBUG_2, _('Updating Everything')) updates = self.up.getUpdatesTuples() if self.conf.obsoletes: obsoletes = self.up.getObsoletesTuples(newest=1) else: obsoletes = [] for (obsoleting, installed) in obsoletes: 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 installed_pkg = self.getInstalledPackageObject(installed) txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg) self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg) if requiringPo: txmbr.setAsDep(requiringPo) tx_return.append(txmbr) 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') % old) else: new = self.getPackageObject(new, allow_missing=True) if new is None: continue tx_return.extend(self.update(po=new)) return tx_return # complications # the user has given us something - either a package object to be # added to the transaction as an update or they've given us a pattern # of some kind instpkgs = [] availpkgs = [] if po: # just a po if po.repoid == 'installed': instpkgs.append(po) else: availpkgs.append(po) elif 'pattern' in kwargs: 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']) arg = kwargs['pattern'] if not update_to: instpkgs = self.rpmdb.returnPackages(patterns=[arg]) else: availpkgs = self.pkgSack.returnPackages(patterns=[arg]) if not instpkgs and not availpkgs: depmatches = [] try: if update_to: depmatches = self.returnPackagesByDep(arg) else: depmatches = self.returnInstalledPackagesByDep(arg) except yum.Errors.YumBaseError, e: self.logger.critical(_('%s') % e) if update_to: availpkgs.extend(depmatches) else: instpkgs.extend(depmatches) # Always look for available packages, it doesn't seem to do any # harm (apart from some time). And it fixes weird edge cases where # "update a" (which requires a new b) is different from "update b" try: if update_to: m = [] else: pats = [kwargs['pattern']] # pats += list(set([pkg.name for pkg in instpkgs])) m = self.pkgSack.returnNewestByNameArch(patterns=pats) except Errors.PackageSackError: m = [] availpkgs.extend(m) if not availpkgs and not instpkgs: self.logger.critical(_('No Match for argument: %s') % to_unicode(arg)) else: # we have kwargs, sort them out. nevra_dict = self._nevra_kwarg_parse(kwargs) instpkgs = self.rpmdb.searchNevra(name=nevra_dict['name'], epoch=nevra_dict['epoch'], arch=nevra_dict['arch'], ver=nevra_dict['version'], rel=nevra_dict['release']) if not instpkgs: availpkgs = self.pkgSack.searchNevra(name=nevra_dict['name'], epoch=nevra_dict['epoch'], arch=nevra_dict['arch'], ver=nevra_dict['version'], rel=nevra_dict['release']) self._add_not_found_a(availpkgs, nevra_dict) if len(availpkgs) > 1: availpkgs = self._compare_providers(availpkgs, requiringPo) availpkgs = map(lambda x: x[0], availpkgs) elif not availpkgs: self.logger.warning(_("No package matched to upgrade: %s"), self._ui_nevra_dict(nevra_dict)) # for any thing specified # get the list of available pkgs matching it (or take the po) # get the list of installed pkgs matching it (or take the po) # go through each list and look for: # things obsoleting it if it is an installed pkg # things it updates if it is an available pkg # things updating it if it is an installed pkg # in that order # all along checking to make sure we: # don't update something that's already been obsoleted # don't update something that's already been updated # if there are more than one package that matches an update from # a pattern/kwarg then: # if it is a valid update and we' # TODO: we should search the updates and obsoletes list and # mark the package being updated or obsoleted away appropriately # and the package relationship in the tsInfo # check for obsoletes first if self.conf.obsoletes: for installed_pkg in instpkgs: 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 = [] 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_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) 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, 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') % 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 elif po.pkgtup in self.up.getObsoletesList(name=po.name): for obsoletee in self._find_obsoletees(po): txmbr = self.tsInfo.addUpdate(po, installed_pkg) if requiringPo: txmbr.setAsDep(requiringPo) self.tsInfo.addObsoleting(po, obsoletee) self.tsInfo.addObsoleted(obsoletee, po) tx_return.append(txmbr) else: if self.tsInfo.getMembersWithState(installed_pkg.pkgtup, TS_REMOVE_STATES): self.tsInfo.remove(installed_pkg.pkgtup) txmbr = self._add_up_txmbr(requiringPo, po, installed_pkg) tx_return.append(txmbr) for available_pkg in availpkgs: # Make sure we're not installing a package which is obsoleted by # something else in the repo. Unless there is a obsoletion loop, # at which point ignore everything. obsoleting_pkg = self._test_loop(available_pkg, self._pkg2obspkg) if obsoleting_pkg is not None: self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is obsoleted: %s'), available_pkg) tx_return.extend(self.update(po=obsoleting_pkg)) 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') % 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') % updated) else: updated_pkg = self.getInstalledPackageObject(updated) if self.tsInfo.getMembersWithState(updated, TS_REMOVE_STATES): self.tsInfo.remove(updated) txmbr = self._add_up_txmbr(requiringPo, available_pkg, updated_pkg) tx_return.append(txmbr) # check to see if the pkg we want to install is not _quite_ the newest # one but still technically an update over what is installed. pot_updated = self.rpmdb.searchNevra(name=available_pkg.name, arch=available_pkg.arch) if pot_updated and self.allowedMultipleInstalls(available_pkg): # only compare against the newest of what's installed for kernel pot_updated = sorted(pot_updated)[-1:] #FIXME - potentially do the comparables thing from what used to # be in cli.installPkgs() to see what we should be comparing # it to of what is installed. in the meantime name.arch is # most likely correct # this is sorta a fix - but it shouldn't be only for localPackages # else: # if available_pkg in self.localPackages: # # if we got here the potentially updated is not a matching arch # # and we're goofed up in a localPackage that someone wants to apply for some odd reason # # so we go for name-only update match and check # pot_updated = self.rpmdb.searchNevra(name=available_pkg.name) 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') % 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') % ipkg.pkgtup) elif ipkg.verLT(available_pkg): txmbr = self._add_up_txmbr(requiringPo, available_pkg, ipkg) tx_return.append(txmbr) for txmbr in tx_return: for i_pkg in self.rpmdb.searchNevra(name=txmbr.name): if i_pkg not in txmbr.updates: if self._does_this_update(txmbr.po, i_pkg): self.tsInfo.addUpdated(i_pkg, txmbr.po) return tx_return def remove(self, po=None, **kwargs): """try to find and mark for remove the specified package(s) - if po is specified then that package object (if it is installed) will be marked for removal. if no po then look at kwargs, if neither then raise an exception""" if not po and not kwargs: raise Errors.RemoveError, 'Nothing specified to remove' tx_return = [] pkgs = [] if po: pkgs = [po] else: if 'pattern' in kwargs: 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']]) pkgs.extend(e) pkgs.extend(m) if u: depmatches = [] arg = u[0] try: depmatches = self.returnInstalledPackagesByDep(arg) except yum.Errors.YumBaseError, e: self.logger.critical(_('%s') % e) if not depmatches: arg = to_unicode(arg) self.logger.critical(_('No Match for argument: %s') % to_unicode(arg)) else: pkgs.extend(depmatches) else: nevra_dict = self._nevra_kwarg_parse(kwargs) pkgs = self.rpmdb.searchNevra(name=nevra_dict['name'], epoch=nevra_dict['epoch'], arch=nevra_dict['arch'], ver=nevra_dict['version'], rel=nevra_dict['release']) self._add_not_found_i(pkgs, nevra_dict) if len(pkgs) == 0: if not kwargs.get('silence_warnings', False): self.logger.warning(_("No package matched to remove: %s"), self._ui_nevra_dict(nevra_dict)) 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 if self.tsInfo.getMembers(po.pkgtup): # This allows multiple reinstalls and update/downgrade "cancel" for txmbr in self.tsInfo.matchNaevr(po.name): self.logger.info(_("Removing %s from the transaction") % txmbr) self.tsInfo.remove(txmbr.pkgtup) # Now start the remove/reinstall txmbr = self.tsInfo.addErase(po) tx_return.append(txmbr) return tx_return def installLocal(self, pkg, po=None, updateonly=False): """ handles installs/updates of rpms provided on the filesystem in a local dir (ie: not from a repo) Return the added transaction members. @param pkg: a path to an rpm file on disk. @param po: A YumLocalPackage @param updateonly: Whether or not true installs are valid. """ # read in the package into a YumLocalPackage Object # append it to self.localPackages # check if it can be installed or updated based on nevra versus rpmdb # don't import the repos until we absolutely need them for depsolving tx_return = [] installpkgs = [] updatepkgs = [] donothingpkgs = [] if not po: try: po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg, ua=default_grabber.opts.user_agent) except Errors.MiscError: self.logger.critical(_('Cannot open: %s. Skipping.'), pkg) return tx_return 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 # FIXME: Should add noarch, yum localinstall works ... # just rm this method? if po.arch not in self.arch.archlist: 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 if len(installedByKey) == 0: # nothing installed by that name if updateonly: self.logger.warning(_('Package %s not installed, cannot update it. Run yum install to install it instead.'), po.name) return tx_return else: installpkgs.append(po) for installed_pkg in installedByKey: if po.verGT(installed_pkg): # we're newer - this is an update, pass to them if installed_pkg.name in self.conf.exactarchlist: if po.arch == installed_pkg.arch: updatepkgs.append((po, installed_pkg)) else: donothingpkgs.append(po) else: updatepkgs.append((po, installed_pkg)) elif po.verEQ(installed_pkg): if (po.arch != installed_pkg.arch and (isMultiLibArch(po.arch) or isMultiLibArch(installed_pkg.arch))): if updateonly: self.logger.warning(_('Package %s.%s not installed, cannot update it. Run yum install to install it instead.'), po.name, po.arch) else: installpkgs.append(po) else: donothingpkgs.append(po) elif self.allowedMultipleInstalls(po): if updateonly: self.logger.warning(_('Package %s.%s not installed, cannot update it. Run yum install to install it instead.'), po.name, po.arch) else: installpkgs.append(po) else: donothingpkgs.append(po) # handle excludes for a localinstall check_pkgs = installpkgs + [x[0] for x in updatepkgs] if self._is_local_exclude(po, check_pkgs): self.verbose_logger.debug(_('Excluding %s'), po) return tx_return for po in installpkgs: self.verbose_logger.log(logginglevels.INFO_2, _('Marking %s to be installed'), po.localpath) self.localPackages.append(po) tx_return.extend(self.install(po=po)) for (po, oldpo) in updatepkgs: self.verbose_logger.log(logginglevels.INFO_2, _('Marking %s as an update to %s'), po.localpath, oldpo) self.localPackages.append(po) txmbrs = self.update(po=po) tx_return.extend(txmbrs) for po in donothingpkgs: self.verbose_logger.log(logginglevels.INFO_2, _('%s: does not update installed package.'), po.localpath) # this checks to make sure that any of the to-be-installed pkgs # does not obsolete something else that's installed # this doesn't handle the localpkgs obsoleting EACH OTHER or # anything else in the transaction set, though. That could/should # 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: # 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) self.tsInfo.addObsoleting(txmbr.po,obs_pkg) return tx_return def reinstallLocal(self, pkg, po=None): """ handles reinstall of rpms provided on the filesystem in a local dir (ie: not from a repo) Return the added transaction members. @param pkg: a path to an rpm file on disk. @param po: A YumLocalPackage """ if not po: try: po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg, ua=default_grabber.opts.user_agent) except Errors.MiscError: self.logger.critical(_('Cannot open file: %s. Skipping.'), pkg) return [] self.verbose_logger.log(logginglevels.INFO_2, _('Examining %s: %s'), po.localpath, po) if po.arch not in self.arch.archlist: self.logger.critical(_('Cannot add package %s to transaction. Not a compatible architecture: %s'), pkg, po.arch) return [] # handle excludes for a local reinstall if self._is_local_exclude(po, [po]): self.verbose_logger.debug(_('Excluding %s'), po) return [] return self.reinstall(po=po) def reinstall(self, po=None, **kwargs): """Setup the problem filters to allow a reinstall to work, then pass everything off to install""" self._add_prob_flags(rpm.RPMPROB_FILTER_REPLACEPKG, rpm.RPMPROB_FILTER_REPLACENEWFILES, rpm.RPMPROB_FILTER_REPLACEOLDFILES) tx_mbrs = [] if po: # The po, is the "available" po ... we want the installed po tx_mbrs.extend(self.remove(pkgtup=po.pkgtup)) else: tx_mbrs.extend(self.remove(**kwargs)) if not tx_mbrs: raise Errors.ReinstallRemoveError, _("Problem in reinstall: no package matched to remove") templen = len(tx_mbrs) # this is a reinstall, so if we can't reinstall exactly what we uninstalled # then we really shouldn't go on new_members = [] failed = [] failed_pkgs = [] for item in tx_mbrs[:]: # Make sure obsoletes processing is off, so we can reinstall() # pkgs that are obsolete. old_conf_obs = self.conf.obsoletes self.conf.obsoletes = False if isinstance(po, YumLocalPackage): members = self.install(po=po) else: members = self.install(pkgtup=item.pkgtup) self.conf.obsoletes = old_conf_obs if len(members) == 0: 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), failed_pkgs=failed_pkgs) tx_mbrs.extend(new_members) return tx_mbrs def downgradeLocal(self, pkg, po=None): """ handles downgrades of rpms provided on the filesystem in a local dir (ie: not from a repo) Return the added transaction members. @param pkg: a path to an rpm file on disk. @param po: A YumLocalPackage """ if not po: try: po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg, ua=default_grabber.opts.user_agent) except Errors.MiscError: self.logger.critical(_('Cannot open file: %s. Skipping.'), pkg) return [] self.verbose_logger.log(logginglevels.INFO_2, _('Examining %s: %s'), po.localpath, po) if po.arch not in self.arch.archlist: self.logger.critical(_('Cannot add package %s to transaction. Not a compatible architecture: %s'), pkg, po.arch) return [] # handle excludes for a local downgrade if self._is_local_exclude(po, [po]): self.verbose_logger.debug(_('Excluding %s'), po) return [] return self.downgrade(po=po) def _is_local_exclude(self, po, pkglist): """returns True if the local pkg should be excluded""" if "all" in self.conf.disable_excludes or \ "main" in self.conf.disable_excludes: return False toexc = [] if len(self.conf.exclude) > 0: exactmatch, matched, unmatched = \ parsePackages(pkglist, self.conf.exclude, casematch=1) toexc = exactmatch + matched if po in toexc: return True return False def downgrade(self, po=None, **kwargs): """ Try to downgrade a package. Works like: % yum shell < run EOL """ if not po and not kwargs: raise Errors.DowngradeError, 'Nothing specified to downgrade' doing_group_pkgs = False if po: apkgs = [po] elif 'pattern' in kwargs: 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: apkgs = self.pkgSack.returnPackages(patterns=[kwargs['pattern']], ignore_case=False) if not apkgs: arg = kwargs['pattern'] self.verbose_logger.debug(_('Checking for virtual provide or file-provide for %s'), arg) try: apkgs = self.returnPackagesByDep(arg) except yum.Errors.YumBaseError, e: self.logger.critical(_('No Match for argument: %s') % to_unicode(arg)) else: nevra_dict = self._nevra_kwarg_parse(kwargs) apkgs = self.pkgSack.searchNevra(name=nevra_dict['name'], epoch=nevra_dict['epoch'], arch=nevra_dict['arch'], ver=nevra_dict['version'], rel=nevra_dict['release']) self._add_not_found_a(apkgs, nevra_dict) if not apkgs: # Do we still want to return errors here? # We don't in the cases below, so I didn't here... pkgs = [] if 'pattern' in kwargs: pkgs = self.rpmdb.returnPackages(patterns=[kwargs['pattern']], ignore_case=False) if 'name' in kwargs: pkgs = self.rpmdb.searchNevra(name=kwargs['name']) if pkgs: return [] raise Errors.DowngradeError, _('No package(s) available to downgrade') warned_nas = set() # Skip kernel etc. tapkgs = [] for pkg in apkgs: if self.allowedMultipleInstalls(pkg): if (pkg.name, pkg.arch) not in warned_nas: msg = _("Package %s is allowed multiple installs, skipping") % pkg self.verbose_logger.log(logginglevels.INFO_2, msg) warned_nas.add((pkg.name, pkg.arch)) continue tapkgs.append(pkg) apkgs = tapkgs # Find installed versions of "to downgrade pkgs" apkg_names = set() for pkg in apkgs: apkg_names.add(pkg.name) ipkgs = self.rpmdb.searchNames(list(apkg_names)) latest_installed_na = {} latest_installed_n = {} for pkg in sorted(ipkgs): if (pkg.name not in latest_installed_n or pkg.verGT(latest_installed_n[pkg.name][0])): latest_installed_n[pkg.name] = [pkg] elif pkg.verEQ(latest_installed_n[pkg.name][0]): latest_installed_n[pkg.name].append(pkg) latest_installed_na[(pkg.name, pkg.arch)] = pkg # Find "latest downgrade", ie. latest available pkg before # installed version. Indexed fromn the latest installed pkgtup. downgrade_apkgs = {} for pkg in sorted(apkgs): na = (pkg.name, pkg.arch) # Here we allow downgrades from .i386 => .noarch, or .i586 => .i386 # but not .i386 => .x86_64 (similar to update). lipkg = None if na in latest_installed_na: lipkg = latest_installed_na[na] elif pkg.name in latest_installed_n: for tlipkg in latest_installed_n[pkg.name]: if not canCoinstall(pkg.arch, tlipkg.arch): lipkg = tlipkg # Use this so we don't get confused when we have # different versions with different arches. na = (pkg.name, lipkg.arch) break if lipkg is None: if (na not in warned_nas and not doing_group_pkgs and pkg.name not in latest_installed_n): msg = _('No Match for available package: %s') % pkg self.logger.critical(msg) warned_nas.add(na) continue if pkg.verGE(lipkg): if na not in warned_nas: msg = _('Only Upgrade available on package: %s') % pkg self.logger.critical(msg) warned_nas.add(na) continue warned_nas.add(na) if (lipkg.pkgtup in downgrade_apkgs and pkg.verLE(downgrade_apkgs[lipkg.pkgtup])): continue # Skip older than "latest downgrade" downgrade_apkgs[lipkg.pkgtup] = pkg tx_return = [] for ipkg in ipkgs: if ipkg.pkgtup not in downgrade_apkgs: continue txmbrs = self.tsInfo.addDowngrade(downgrade_apkgs[ipkg.pkgtup],ipkg) if not txmbrs: # Fail? continue self._add_prob_flags(rpm.RPMPROB_FILTER_OLDPACKAGE) tx_return.extend(txmbrs) return tx_return @staticmethod def _ui_nevra_dict(nevra_dict): n = nevra_dict['name'] e = nevra_dict['epoch'] v = nevra_dict['version'] r = nevra_dict['release'] a = nevra_dict['arch'] if e and v and r: evr = '%s:%s-%s' % (e, v, r) elif v and r: evr = '%s-%s' % (e, v, r) elif e and v: evr = '%s:%s' % (e, v) elif v: # e and r etc. is just too weird to print evr = v else: evr = '' if n and evr: return '%s-%s' % (n, evr) if evr: return '*-%s' % evr if n: return n return '' def _nevra_kwarg_parse(self, kwargs): returndict = {} if 'pkgtup' in kwargs: (n, a, e, v, r) = kwargs['pkgtup'] returndict['name'] = n returndict['epoch'] = e returndict['arch'] = a returndict['version'] = v returndict['release'] = r return returndict returndict['name'] = kwargs.get('name') returndict['epoch'] = kwargs.get('epoch') returndict['arch'] = kwargs.get('arch') # get them as ver, version and rel, release - if someone # specifies one of each then that's kinda silly. returndict['version'] = kwargs.get('version') if returndict['version'] is None: returndict['version'] = kwargs.get('ver') returndict['release'] = kwargs.get('release') if returndict['release'] is None: returndict['release'] = kwargs.get('rel') return returndict def history_redo(self, transaction): """ Given a valid historical transaction object, try and repeat that transaction. """ # NOTE: This is somewhat basic atm. ... see comment in undo. # Also note that redo doesn't force install Dep-Install packages, # which is probably what is wanted the majority of the time. old_conf_obs = self.conf.obsoletes self.conf.obsoletes = False done = False for pkg in transaction.trans_data: if pkg.state == 'Reinstall': if self.reinstall(pkgtup=pkg.pkgtup): done = True for pkg in transaction.trans_data: if pkg.state == 'Downgrade': try: if self.downgrade(pkgtup=pkg.pkgtup): done = True except yum.Errors.DowngradeError: self.logger.critical(_('Failed to downgrade: %s'), pkg) for pkg in transaction.trans_data: if pkg.state == 'Update': if self.update(pkgtup=pkg.pkgtup): done = True else: self.logger.critical(_('Failed to upgrade: %s'), pkg) for pkg in transaction.trans_data: if pkg.state in ('Install', 'True-Install', 'Obsoleting'): if self.install(pkgtup=pkg.pkgtup): done = True for pkg in transaction.trans_data: if pkg.state == 'Erase': if self.remove(pkgtup=pkg.pkgtup): done = True self.conf.obsoletes = old_conf_obs return done def history_undo(self, transaction): """ Given a valid historical transaction object, try and undo that transaction. """ # NOTE: This is somewhat basic atm. ... for instance we don't check # that we are going from the old new version. However it's still # better than the RHN rollback code, and people pay for that :). # We turn obsoletes off because we want the specific versions of stuff # from history ... even if they've been obsoleted since then. old_conf_obs = self.conf.obsoletes self.conf.obsoletes = False done = False for pkg in transaction.trans_data: if pkg.state == 'Reinstall': if self.reinstall(pkgtup=pkg.pkgtup): done = True for pkg in transaction.trans_data: if pkg.state == 'Updated': try: if self.downgrade(pkgtup=pkg.pkgtup): done = True except yum.Errors.DowngradeError: self.logger.critical(_('Failed to downgrade: %s'), pkg) for pkg in transaction.trans_data: if pkg.state == 'Downgraded': if self.update(pkgtup=pkg.pkgtup): done = True else: self.logger.critical(_('Failed to upgrade: %s'), pkg) for pkg in transaction.trans_data: if pkg.state == 'Obsoleting': # Note that obsoleting can mean anything, so if this is part of # something else, it should be done by now (so do nothing). if self.tsInfo.getMembers(pkg.pkgtup): continue # If not it should be an install/obsolete ... so remove it. if self.remove(pkgtup=pkg.pkgtup): done = True for pkg in transaction.trans_data: if pkg.state in ('Dep-Install', 'Install', 'True-Install'): if self.remove(pkgtup=pkg.pkgtup): done = True for pkg in transaction.trans_data: if pkg.state == 'Obsoleted': if self.install(pkgtup=pkg.pkgtup): done = True for pkg in transaction.trans_data: if pkg.state == 'Erase': if self.install(pkgtup=pkg.pkgtup): done = True self.conf.obsoletes = old_conf_obs return done def _retrievePublicKey(self, keyurl, repo=None, getSig=True): """ Retrieve a key file @param keyurl: url to the key to retrieve Returns a list of dicts with all the keyinfo """ key_installed = False msg = _('Retrieving key from %s') % keyurl self.verbose_logger.log(logginglevels.INFO_2, msg) # Go get the GPG key from the given URL try: url = misc.to_utf8(keyurl) if repo is None: opts = {'limit':9999} text = 'global/gpgkey' else: # If we have a repo. use the proxy etc. configuration for it. # In theory we have a global proxy config. too, but meh... # external callers should just update. opts = repo._default_grabopts() text = repo.id + '/gpgkey' rawkey = urlgrabber.urlread(url, **opts) except urlgrabber.grabber.URLGrabError, e: raise Errors.YumBaseError(_('GPG key retrieval failed: ') + to_unicode(str(e))) # check for a .asc file accompanying it - that's our gpg sig on the key # suck it down and do the check sigfile = None valid_sig = False if getSig and repo and repo.gpgcakey: self.getCAKeyForRepo(repo, callback=repo.confirm_func) try: url = misc.to_utf8(keyurl + '.asc') opts = repo._default_grabopts() text = repo.id + '/gpgkeysig' sigfile = urlgrabber.urlopen(url, **opts) except urlgrabber.grabber.URLGrabError, e: sigfile = None if sigfile: if not misc.valid_detached_sig(sigfile, StringIO.StringIO(rawkey), repo.gpgcadir): #if we decide we want to check, even though the sig failed # here is where we would do that raise Errors.YumBaseError(_('GPG key signature on key %s does not match CA Key for repo: %s') % (url, repo.id)) else: msg = _('GPG key signature verified against CA Key(s)') self.verbose_logger.log(logginglevels.INFO_2, msg) valid_sig = True # Parse the key try: keys_info = misc.getgpgkeyinfo(rawkey, multiple=True) except ValueError, e: raise Errors.YumBaseError(_('Invalid GPG Key from %s: %s') % (url, to_unicode(str(e)))) keys = [] for keyinfo in keys_info: thiskey = {} for info in ('keyid', 'timestamp', 'userid', 'fingerprint', 'raw_key'): if info not in keyinfo: raise Errors.YumBaseError, \ _('GPG key parsing failed: key does not have value %s') + info thiskey[info] = keyinfo[info] thiskey['hexkeyid'] = misc.keyIdToRPMVer(keyinfo['keyid']).upper() thiskey['valid_sig'] = valid_sig thiskey['has_sig'] = bool(sigfile) keys.append(thiskey) return keys def _getKeyImportMessage(self, info, keyurl, keytype='GPG'): msg = None if keyurl.startswith("file:"): fname = keyurl[len("file:"):] pkgs = self.rpmdb.searchFiles(fname) if pkgs: pkgs = sorted(pkgs)[-1] msg = (_('Importing %s key 0x%s:\n' ' Userid : %s\n' ' Package: %s (%s)\n' ' From : %s') % (keytype, info['hexkeyid'], to_unicode(info['userid']), pkgs, pkgs.ui_from_repo, keyurl.replace("file://",""))) if msg is None: msg = (_('Importing %s key 0x%s:\n' ' Userid: "%s"\n' ' From : %s') % (keytype, 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 be imported using askcb. @param po: Package object to retrieve the key of. @param askcb: Callback function to use for asking for permission to import a key. This is verification, but also "choice". Takes arguments of the po, the userid for the key, and the keyid. @param fullaskcb: Callback function to use for asking for permission to import a key. This is verification, but also "choice". Differs from askcb in that it gets passed a dictionary so that we can expand the values passed. """ repo = self.repos.getRepo(po.repoid) keyurls = repo.gpgkey key_installed = False user_cb_fail = False for keyurl in keyurls: keys = self._retrievePublicKey(keyurl, repo) for info in keys: ts = self.rpmdb.readOnlyTS() # Check if key is already installed if misc.keyInstalled(ts, info['keyid'], info['timestamp']) >= 0: self.logger.info(_('GPG key at %s (0x%s) is already installed') % ( keyurl, info['hexkeyid'])) continue if repo.gpgcakey and info['has_sig'] and info['valid_sig']: key_installed = True else: # Try installing/updating GPG key self._getKeyImportMessage(info, keyurl) rc = False if self.conf.assumeyes: rc = True # grab the .sig/.asc for the keyurl, if it exists # if it does check the signature on the key # if it is signed by one of our ca-keys for this repo or the global one # then rc = True # else ask as normal. elif fullaskcb: rc = fullaskcb({"po": po, "userid": info['userid'], "hexkeyid": info['hexkeyid'], "keyurl": keyurl, "fingerprint": info['fingerprint'], "timestamp": info['timestamp']}) elif askcb: rc = askcb(po, info['userid'], info['hexkeyid']) if not rc: user_cb_fail = True continue # Import the key ts = self.rpmdb.readOnlyTS() result = ts.pgpImportPubkey(misc.procgpgkey(info['raw_key'])) if result != 0: raise Errors.YumBaseError, \ _('Key import failed (code %d)') % result self.logger.info(_('Key imported successfully')) key_installed = True if not key_installed and user_cb_fail: raise Errors.YumBaseError, _("Didn't install any keys") 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) if result != 0: self.logger.info(_("Import of key(s) didn't help, wrong key(s)?")) raise Errors.YumBaseError, errmsg def _getAnyKeyForRepo(self, repo, destdir, keyurl_list, is_cakey=False, callback=None): """ Retrieve a key for a repository If needed, prompt for if the key should be imported using callback @param repo: Repository object to retrieve the key of. @param destdir: destination of the gpg pub ring @param keyurl_list: list of urls for gpg keys @param is_cakey: bool - are we pulling in a ca key or not @param callback: Callback function to use for asking for permission to import a key. This is verification, but also "choice". Takes a dictionary of key info. """ key_installed = False user_cb_fail = False for keyurl in keyurl_list: keys = self._retrievePublicKey(keyurl, repo, getSig=not is_cakey) for info in keys: # Check if key is already installed if hex(int(info['keyid']))[2:-1].upper() in misc.return_keyids_from_pubring(destdir): self.logger.info(_('GPG key at %s (0x%s) is already imported') % ( keyurl, info['hexkeyid'])) key_installed = True continue # Try installing/updating GPG key if is_cakey: # know where the 'imported_cakeys' file is ikf = repo.base_persistdir + '/imported_cakeys' keytype = 'CA' cakeys = [] try: cakeys_d = open(ikf, 'r').read() cakeys = cakeys_d.split('\n') except (IOError, OSError): pass if str(info['hexkeyid']) in cakeys: key_installed = True else: keytype = 'GPG' if repo.gpgcakey and info['has_sig'] and info['valid_sig']: key_installed = True if not key_installed: self._getKeyImportMessage(info, keyurl, keytype) rc = False if self.conf.assumeyes: rc = True elif callback: rc = callback({"repo": repo, "userid": info['userid'], "hexkeyid": info['hexkeyid'], "keyurl": keyurl, "fingerprint": info['fingerprint'], "timestamp": info['timestamp']}) if not rc: user_cb_fail = True continue # Import the key result = misc.import_key_to_pubring(info['raw_key'], info['hexkeyid'], gpgdir=destdir) if not result: raise Errors.YumBaseError, _('Key import failed') self.logger.info(_('Key imported successfully')) key_installed = True # write out the key id to imported_cakeys in the repos basedir if is_cakey and key_installed: if info['hexkeyid'] not in cakeys: ikfo = open(ikf, 'a') try: ikfo.write(info['hexkeyid']+'\n') ikfo.flush() ikfo.close() except (IOError, OSError): # maybe a warning - but in general this is not-critical, just annoying to the user pass if not key_installed and user_cb_fail: raise Errors.YumBaseError, _("Didn't install any keys for repo %s") % repo 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 getKeyForRepo(self, repo, callback=None): """ Retrieve a key for a repository If needed, prompt for if the key should be imported using callback @param repo: Repository object to retrieve the key of. @param callback: Callback function to use for asking for verification of a key. Takes a dictionary of key info. """ self._getAnyKeyForRepo(repo, repo.gpgdir, repo.gpgkey, is_cakey=False, callback=callback) def getCAKeyForRepo(self, repo, callback=None): """ Retrieve a key for a repository If needed, prompt for if the key should be imported using callback @param repo: Repository object to retrieve the key of. @param callback: Callback function to use for asking for verification of a key. Takes a dictionary of key info. """ self._getAnyKeyForRepo(repo, repo.gpgcadir, repo.gpgcakey, is_cakey=True, callback=callback) def _limit_installonly_pkgs(self): """ Limit packages based on conf.installonly_limit, if any of the packages being installed have a provide in conf.installonlypkgs. New in 3.2.24: Obey yumdb_info.installonly data. """ def _sort_and_filter_installonly(pkgs): """ Allow the admin to specify some overrides fo installonly pkgs. using the yumdb. """ ret_beg = [] ret_mid = [] ret_end = [] for pkg in sorted(pkgs): if 'installonly' not in pkg.yumdb_info: ret_mid.append(pkg) continue if pkg.yumdb_info.installonly == 'keep': continue if True: # Don't to magic sorting, yet ret_mid.append(pkg) continue if pkg.yumdb_info.installonly == 'remove-first': ret_beg.append(pkg) elif pkg.yumdb_info.installonly == 'remove-last': ret_end.append(pkg) else: ret_mid.append(pkg) return ret_beg + ret_mid + ret_end if self.conf.installonly_limit < 1 : return toremove = [] # We "probably" want to use either self.ts or self.rpmdb.ts if either # is available. However each ts takes a ref. on signals generally, and # SIGINT specifically, so we _must_ have got rid of all of the used tses # before we try downloading. This is called from buildTransaction() # so self.rpmdb.ts should be valid. ts = self.rpmdb.readOnlyTS() (cur_kernel_v, cur_kernel_r) = misc.get_running_kernel_version_release(ts) 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) # Add a dep relation to the new version of the package, causing this one to be erased # this way skipbroken, should clean out the old one, if the new one is skipped txmbr.depends_on.append(rel) def processTransaction(self, callback=None,rpmTestDisplay=None, rpmDisplay=None): ''' Process the current Transaction - Download Packages - Check GPG Signatures. - Run Test RPM Transaction - Run RPM Transaction callback.event method is called at start/end of each process. @param callback: callback object (must have an event method) @param rpmTestDisplay: Name of display class to use in RPM Test Transaction @param rpmDisplay: Name of display class to use in RPM Transaction ''' if not callback: callback = callbacks.ProcessTransNoOutputCallback() # Download Packages callback.event(callbacks.PT_DOWNLOAD) pkgs = self._downloadPackages(callback) # Check Package Signatures if pkgs != None: callback.event(callbacks.PT_GPGCHECK) self._checkSignatures(pkgs,callback) # Run Test Transaction callback.event(callbacks.PT_TEST_TRANS) self._doTestTransaction(callback,display=rpmTestDisplay) # Run Transaction callback.event(callbacks.PT_TRANSACTION) self._doTransaction(callback,display=rpmDisplay) def _downloadPackages(self,callback): ''' Download the need packages in the Transaction ''' # This can be overloaded by a subclass. dlpkgs = map(lambda x: x.po, filter(lambda txmbr: txmbr.ts_state in ("i", "u"), self.tsInfo.getMembers())) # Check if there is something to do if len(dlpkgs) == 0: return None # make callback with packages to download callback.event(callbacks.PT_DOWNLOAD_PKGS,dlpkgs) try: probs = self.downloadPkgs(dlpkgs) except IndexError: raise Errors.YumBaseError, [_("Unable to find a suitable mirror.")] if len(probs) > 0: errstr = [_("Errors were encountered while downloading packages.")] for key in probs: errors = misc.unique(probs[key]) for error in errors: errstr.append("%s: %s" % (key, error)) raise Errors.YumDownloadError, errstr return dlpkgs def _checkSignatures(self,pkgs,callback): ''' The the signatures of the downloaded packages ''' # This can be overloaded by a subclass. for po in pkgs: result, errmsg = self.sigCheckPkg(po) if result == 0: # Verified ok, or verify not req'd continue elif result == 1: self.getKeyForPackage(po, self._askForGPGKeyImport) else: raise Errors.YumGPGCheckError, errmsg return 0 def _askForGPGKeyImport(self, po, userid, hexkeyid): ''' Ask for GPGKeyImport This need to be overloaded in a subclass to make GPG Key import work ''' return False def _doTestTransaction(self,callback,display=None): ''' Do the RPM test transaction ''' self.initActionTs() # save our dsCallback out dscb = self.dsCallback self.dsCallback = None # dumb, dumb dumb dumb! self.populateTs( keepold=0 ) # sigh # This can be overloaded by a subclass. self.verbose_logger.log(logginglevels.INFO_2, _('Running Transaction Check')) msgs = self._run_rpm_check() if msgs: rpmlib_only = True for msg in msgs: if msg.startswith('rpmlib('): continue rpmlib_only = False if rpmlib_only: retmsgs = [_("ERROR You need to update rpm to handle:")] retmsgs.extend(msgs) raise Errors.YumRPMCheckError, retmsgs retmsgs = [_('ERROR with transaction check vs depsolve:')] retmsgs.extend(msgs) retmsgs.append(_('Please report this error at %s') % self.conf.bugtracker_url) raise Errors.YumRPMCheckError,retmsgs tsConf = {} for feature in ['diskspacecheck']: # more to come, I'm sure tsConf[feature] = getattr( self.conf, feature ) # testcb = RPMTransaction(self, test=True) # overwrite the default display class if display: testcb.display = display tserrors = self.ts.test( testcb, conf=tsConf ) del testcb if len( tserrors ) > 0: errstring = _('Test Transaction Errors: ') for descr in tserrors: errstring += ' %s\n' % descr raise Errors.YumTestTransactionError, errstring del self.ts # put back our depcheck callback self.dsCallback = dscb def _doTransaction(self,callback,display=None): ''' do the RPM Transaction ''' # This can be overloaded by a subclass. self.initActionTs() # make a new, blank ts to populate self.populateTs( keepold=0 ) # populate the ts self.ts.check() # required for ordering self.ts.order() # order cb = RPMTransaction(self,display=SimpleCliCallBack) # overwrite the default display class if display: cb.display = display self.runTransaction( cb=cb ) def _run_rpm_check(self): results = [] self.ts.check() for prob in self.ts.problems(): # Newer rpm (4.8.0+) has problem objects, older have just strings. # Should probably move to using the new objects, when we can. For # now just be compatible. results.append(to_str(prob)) return results def add_enable_repo(self, repoid, baseurls=[], mirrorlist=None, **kwargs): """add and enable a repo with just a baseurl/mirrorlist and repoid requires repoid and at least one of baseurl and mirrorlist additional optional kwargs are: variable_convert=bool (defaults to true) and any other attribute settable to the normal repo setup ex: metadata_expire, enable_groups, gpgcheck, cachedir, etc returns the repo object it added""" # out of place fixme - maybe we should make this the default repo addition # routine and use it from getReposFromConfigFile(), etc. newrepo = yumRepo.YumRepository(repoid) newrepo.name = repoid newrepo.basecachedir = self.conf.cachedir var_convert = kwargs.get('variable_convert', True) if baseurls: replaced = [] if var_convert: for baseurl in baseurls: if baseurl: replaced.append(varReplace(baseurl, self.conf.yumvar)) else: replaced = baseurls newrepo.baseurl = replaced if mirrorlist: if var_convert: mirrorlist = varReplace(mirrorlist, self.conf.yumvar) newrepo.mirrorlist = mirrorlist # setup the repo newrepo.setup(cache=self.conf.cache) # some reasonable defaults, (imo) newrepo.enablegroups = True newrepo.metadata_expire = 0 newrepo.gpgcheck = self.conf.gpgcheck newrepo.repo_gpgcheck = self.conf.repo_gpgcheck newrepo.basecachedir = self.conf.cachedir newrepo.base_persistdir = self.conf._repos_persistdir for key in kwargs.keys(): if not hasattr(newrepo, key): continue # skip the ones which aren't vars setattr(newrepo, key, kwargs[key]) # add the new repo self.repos.add(newrepo) # enable the main repo self.repos.enableRepo(newrepo.id) return newrepo 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: self.logger.critical(_('Could not set cachedir: %s') % str(e)) cachedir = None if cachedir is None: return False # Tried, but failed, to get a "user" cachedir cachedir += varReplace(suffix, self.conf.yumvar) 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 def _does_this_update(self, pkg1, pkg2): """returns True if pkg1 can update pkg2, False if not. This only checks if it can be an update it does not check if it is obsoleting or anything else.""" if pkg1.name != pkg2.name: return False if pkg1.verLE(pkg2): return False if pkg1.arch not in self.arch.archlist: return False if rpmUtils.arch.canCoinstall(pkg1.arch, pkg2.arch): return False if self.allowedMultipleInstalls(pkg1): return False 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 def save_ts(self, filename=None, auto=False): """saves out a transaction to .yumtx file to be loaded later""" if self.tsInfo._unresolvedMembers: if auto: self.logger.critical(_("Dependencies not solved. Will not save unresolved transaction.")) return raise Errors.YumBaseError(_("Dependencies not solved. Will not save unresolved transaction.")) if not filename: prefix = 'yum_save_tx-%s' % time.strftime('%Y-%m-%d-%H-%M') fd,filename = tempfile.mkstemp(suffix='.yumtx', prefix=prefix) f = os.fdopen(fd, 'w') else: f = open(filename, 'w') self._ts_save_file = filename msg = "%s\n" % self.rpmdb.simpleVersion(main_only=True)[0] msg += "%s\n" % self.ts.getTsFlags() if self.tsInfo.pkgSack is None: # rm Transactions don't have pkgSack msg += "0\n" else: msg += "%s\n" % len(self.repos.listEnabled()) for r in self.repos.listEnabled(): msg += "%s:%s:%s\n" % (r.id, len(r.sack), r.repoXML.revision) msg += "%s\n" % len(self.tsInfo.getMembers()) for txmbr in self.tsInfo.getMembers(): msg += txmbr._dump() try: f.write(msg) f.close() except (IOError, OSError), e: self._ts_save_file = None if auto: self.logger.critical(_("Could not save transaction file %s: %s") % (filename, str(e))) else: raise Errors.YumBaseError(_("Could not save transaction file %s: %s") % (filename, str(e))) def load_ts(self, filename, ignorerpm=None, ignoremissing=None): """loads a transaction from a .yumtx file""" # check rpmversion - if not match throw a fit # check repoversions (and repos)- if not match throw a fit # load each txmbr - if pkgs being updated don't exist, bail w/error # setup any ts flags # setup cmds for history/yumdb to know about # return txmbrs loaded try: data = open(filename, 'r').readlines() except (IOError, OSError), e: raise Errors.YumBaseError(_("Could not access/read saved transaction %s : %s") % (filename, str(e))) if ignorerpm is None: ignorerpm = self.conf.loadts_ignorerpm if ignoremissing is None: ignoremissing = self.conf.loadts_ignoremissing # data format # 0 == rpmdb version # 1 == tsflags # 2 == numrepos # 3:numrepos = repos # 3+numrepos = num pkgs # 3+numrepos+1 -> EOF= txmembers # rpm db ver rpmv = data[0].strip() if rpmv != str(self.rpmdb.simpleVersion(main_only=True)[0]): msg = _("rpmdb ver mismatched saved transaction version, ") if ignorerpm: msg += _(" ignoring, as requested.") self.logger.critical(_(msg)) else: msg += _(" aborting.") raise Errors.YumBaseError(msg) # tsflags # FIXME - probably should let other tsflags play nicely together # so someone can add --nogpgcheck or --nodocs or --nodiskspace or some nonsense and have it work try: tsflags = int(data[1].strip()) except (ValueError, IndexError), e: msg = _("cannot find tsflags or tsflags not integer.") raise Errors.YumBaseError(msg) self.ts.setFlags(tsflags) # repos numrepos = int(data[2].strip()) repos = [] rindex=3+numrepos for r in data[3:rindex]: repos.append(r.strip().split(':')) # pkgs/txmbrs numpkgs = int(data[rindex].strip()) pkgstart = rindex + 1 pkgcount = 0 pkgprob = False curpkg = None for l in data[pkgstart:]: l = l.rstrip() # our main txmbrs if l.startswith('mbr:'): if curpkg: self.tsInfo.add(curpkg) if curpkg in self.tsInfo._unresolvedMembers and not missingany: self.tsInfo._unresolvedMembers.remove(curpkg) missingany = False pkgtup, current_state = l.split(':')[1].strip().split(' ') current_state = int(current_state.strip()) pkgtup = tuple(pkgtup.strip().split(',')) try: if current_state == TS_INSTALL: po = self.getInstalledPackageObject(pkgtup) elif current_state == TS_AVAILABLE: po = self.getPackageObject(pkgtup) else: msg = _("Found txmbr in unknown current state: %s" % current_state) raise Errors.YumBaseError(msg) except Errors.YumBaseError, e: missingany = True msg = _("Could not find txmbr: %s in state %s" % (str(pkgtup), current_state)) if not ignoremissing: raise Errors.YumBaseError(msg) else: self.logger.critical(msg) else: pkgcount += 1 curpkg = transactioninfo.TransactionMember(po) curpkg.current_state = current_state continue l = l.strip() k,v = l.split(':', 1) v = v.lstrip() # attributes of our txmbrs if k in ('isDep', 'reinstall'): v = v.strip().lower() if v == 'false': setattr(curpkg, k, False) elif v == 'true': setattr(curpkg, k, True) elif k in ('output_state'): setattr(curpkg, k, int(v.strip())) elif k in ('groups'): curpkg.groups.extend(v.split(' ')) # the relationships to our main txmbrs elif k in ('updated_by', 'obsoleted_by', 'downgraded_by', 'downgrades', 'updates', 'obsoletes', 'depends_on'): for pkgspec in v.strip().split(' '): pkgtup, origin = pkgspec.split('@') try: if origin == 'i': po = self.getInstalledPackageObject(tuple(pkgtup.split(','))) else: po = self.getPackageObject(tuple(pkgtup.split(','))) except Errors.YumBaseError, e: msg = _("Could not find txmbr: %s from origin: %s" % (str(pkgtup), origin)) self.logger.critical(msg) missingany = True else: curlist = getattr(curpkg, k) curlist.append(po) setattr(curpkg, k, curlist) elif k in ('relatedto'): for item in v.split(' '): pkgspec, rel = item.split(':') pkgtup,origin = pkgspec.split('@') try: if origin == 'i': po = self.getInstalledPackageObject(tuple(pkgtup.split(','))) else: po = self.getPackageObject(tuple(pkgtup.split(','))) except Errors.YumBaseError, e: msg = _("Could not find txmbr: %s from origin: %s" % (str(pkgtup), origin)) self.logger.critical(msg) missingany = True else: curlist = getattr(curpkg, k) curlist.append((po,rel)) setattr(curpkg, k, curlist) # the plain strings else: #ts_state, reason setattr(curpkg, k, v.strip()) if missingany: pkgprob = True # make sure we get the last one in! self.tsInfo.add(curpkg) if curpkg in self.tsInfo._unresolvedMembers: self.tsInfo._unresolvedMembers.remove(curpkg) if numpkgs != pkgcount: pkgprob = True if pkgprob: msg = _("Transaction members, relations are missing or ts has been modified,") if ignoremissing: msg += _(" ignoring, as requested. You must redepsolve!") self.logger.critical(msg) else: msg += _(" aborting.") raise Errors.YumBaseError(msg) return self.tsInfo.getMembers() def _remove_old_deps(self): """take the set of pkgs being removed and remove any pkgs which are: 1. not required anymore 2. marked as a 'dep' in the 'reason' in the yumdb. """ found_leaves = set() checked = set() beingremoved = [ t.po for t in self.tsInfo.getMembersWithState(output_states=TS_REMOVE_STATES) ] # cache previously examined packages okay_to_remove = {} for i in self.rpmdb.returnPackages(): okay_to_remove[i] = True for pkg in beingremoved: # for each package required by the pkg being removed #print 'removal: %s' % pkg.name for required in pkg.required_packages(): #if required in checked: # continue # if we've already checked it, skip it. #checked.add(required) if required.yumdb_info.get('reason', '') != 'dep': # if the required pkg is not a dep, then skip it okay_to_remove[required] = False continue if required in beingremoved: continue if self._has_needed_revdeps(required, beingremoved, okay_to_remove): continue still_needed = False for requiring in required.requiring_packages(): # so we have required deps - look at all the pkgs which require them if requiring == required: # if they are self-requiring skip them continue # go through the stuff in the ts to be installed - make sure none of that needs the required pkg, either. for (provn,provf,provevr) in required.provides: if self.tsInfo.getNewRequires(provn, provf, provevr).keys(): still_needed = True okay_to_remove[required] = False break for fn in required.filelist + required.dirlist: if self.tsInfo.getNewRequires(fn, None,(None,None,None)).keys(): okay_to_remove[required] = False still_needed = True break #for tbi_pkg in self.tsInfo.getMembersWithState(output_states=TS_INSTALL_STATES): # for reqtuple in tbi_pkg.po.requires: # if required.provides_for(reqtuple): # still_needed = True # break if not still_needed: print '---> Marking %s to be removed - no longer needed by %s' % (required.name, pkg.name) txmbrs = self.remove(po=required) for txmbr in txmbrs: txmbr.setAsDep(po=pkg) if txmbr.po not in beingremoved: beingremoved.append(txmbr.po) found_leaves.add(txmbr) self.verbose_logger.log(logginglevels.INFO_2, "Found and removing %s unneeded dependencies" % len(found_leaves)) # Checks if pkg has any reverse deps which cannot be removed. # Currently this only checks the install reason for each revdep, # but we may want to check for other reasons that would # prevent the revdep from being removed (e.g. protected) def _has_needed_revdeps(self, pkg, beingremoved, ok_to_remove): # check if we've already found this package to have user-installed deps if not ok_to_remove[pkg]: # Debugging output self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has been visited already and cannot be removed."), pkg) return True # Debugging output self.verbose_logger.log(logginglevels.DEBUG_2, _("Examining revdeps of %s"), pkg) # track which pkgs we have visited already visited = {} for po in self.rpmdb.returnPackages(): visited[po] = False # no need to consider packages that are already being removed for po in beingremoved: visited[po] = True stack = [] stack.append(pkg) # depth-first search while stack: curpkg = stack[-1] if not visited[curpkg]: if not ok_to_remove[curpkg]: # Debugging output self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has been visited already and cannot be removed."), pkg) ok_to_remove[pkg] = False return True if curpkg.yumdb_info.get('reason', '') != 'dep': # Debugging output self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has revdep %s which was user-installed."), pkg, curpkg) ok_to_remove[pkg] = False return True visited[curpkg] = True all_leaves_visited = True leaves = curpkg.requiring_packages() for leaf in leaves: if not visited[leaf]: stack.append(leaf) all_leaves_visited = False break if all_leaves_visited: stack.pop() # Debugging output self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has no user-installed revdeps."), pkg) return False yum-3.4.3/yum/constants.py0000664000076400007640000000723511602434452014535 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """ Yum constants. Usually dealing with rpm magic numbers. """ #Constants YUM_PID_FILE = '/var/run/yum.pid' #transaction set states TS_UPDATE = 10 TS_INSTALL = 20 TS_TRUEINSTALL = 30 TS_ERASE = 40 TS_OBSOLETED = 50 TS_OBSOLETING = 60 TS_AVAILABLE = 70 TS_UPDATED = 90 TS_FAILED = 100 TS_INSTALL_STATES = [TS_INSTALL, TS_TRUEINSTALL, TS_UPDATE, TS_OBSOLETING] TS_REMOVE_STATES = [TS_ERASE, TS_OBSOLETED, TS_UPDATED] # Transaction Relationships TR_UPDATES = 1 TR_UPDATEDBY = 2 TR_OBSOLETES = 3 TR_OBSOLETEDBY = 4 TR_DEPENDS = 5 TR_DEPENDSON = 6 # Transaction Member Sort Colors # Each node in a topological sort is colored # White nodes are unseen, black nodes are seen # grey nodes are in progress TX_WHITE = 0 TX_GREY = 1 TX_BLACK = 2 # package object file types PO_FILE = 1 PO_DIR = 2 PO_GHOST = 3 PO_CONFIG = 4 PO_DOC = 5 # package object package types PO_REMOTEPKG = 1 PO_LOCALPKG = 2 PO_INSTALLEDPKG = 3 # FLAGS SYMBOLFLAGS = {'>':'GT', '<':'LT', '=': 'EQ', '==': 'EQ', '>=':'GE', '<=':'LE'} LETTERFLAGS = {'GT':'>', 'LT':'<', 'EQ':'=', 'GE': '>=', 'LE': '<='} # Constants for plugin config option registration PLUG_OPT_STRING = 0 PLUG_OPT_INT = 1 PLUG_OPT_FLOAT = 2 PLUG_OPT_BOOL = 3 PLUG_OPT_WHERE_MAIN = 0 PLUG_OPT_WHERE_REPO = 1 PLUG_OPT_WHERE_ALL = 2 # version of sqlite database schemas DBVERSION = '10' # boolean dict: BOOLEAN_STATES = {'1': True, 'yes': True, 'true': True, 'on': True, '0': False, 'no': False, 'false': False, 'off': False} RPM_TO_SQLITE = { 'packagesize' : 'size_package', 'archivesize' : 'size_archive', 'installedsize' : 'size_installed', 'buildtime' : 'time_build', 'hdrstart' : 'rpm_header_start', 'hdrend' : 'rpm_header_end', 'basepath' : 'location_base', 'relativepath': 'location_href', 'filetime' : 'time_file', 'packager' : 'rpm_packager', 'group' : 'rpm_group', 'buildhost' : 'rpm_buildhost', 'sourcerpm' : 'rpm_sourcerpm', 'vendor' : 'rpm_vendor', 'license' : 'rpm_license' } # Cut over for when we should just give up and load everything. # The main problem here is not so much SQLite dying (although that happens # at large values: http://sqlite.org/limits.html#max_variable_number) but that # but SQLite going really slow when it gets medium sized values (much slower # than just loading everything and filtering it in python). PATTERNS_MAX = 8 # We have another value here because name is indexed and sqlite is _much_ # faster even at large numbers of patterns. PATTERNS_INDEXED_MAX = 128 RPM_CHECKSUM_TYPES = { 1:'md5', 2:'sha1', 8:'sha256', 9:'sha384', 10:'sha512', 11:'sha224' } # from RFC 4880 # for repo verification/checks REPO_PROBLEM_REPOMD=1 REPO_PROBLEM_METADATA=2 REPO_PROBLEM_COMPS=3 REPO_PROBLEM_OTHER=4 REPO_PROBLEM_PACKAGE=5 yum-3.4.3/yum/history.py0000664000076400007640000014476011602434452014227 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Copyright 2009 Red Hat # # James Antill import time import os, os.path import glob from weakref import proxy as weakref from sqlutils import sqlite, executeSQL, sql_esc_glob 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, to_utf8 from rpmUtils.arch import getBaseArch _history_dir = '/var/lib/yum/history' # NOTE: That we don't list TS_FAILED, because pkgs shouldn't go into the # transaction with that. And if they come out with that we don't want to # match them to anything anyway. _stcode2sttxt = {TS_UPDATE : 'Update', TS_UPDATED : 'Updated', TS_ERASE: 'Erase', TS_INSTALL: 'Install', TS_TRUEINSTALL : 'True-Install', TS_OBSOLETED: 'Obsoleted', TS_OBSOLETING: 'Obsoleting'} _sttxt2stcode = {'Update' : TS_UPDATE, 'Updated' : TS_UPDATED, 'Erase' : TS_ERASE, 'Install' : TS_INSTALL, 'True-Install' : TS_TRUEINSTALL, 'Dep-Install' : TS_INSTALL, 'Reinstall' : TS_INSTALL, # Broken 'Downgrade' : TS_INSTALL, # Broken 'Downgraded' : TS_INSTALL, # Broken 'Obsoleted' : TS_OBSOLETED, 'Obsoleting' : TS_OBSOLETING} # ---- horrible Copy and paste from sqlitesack ---- def _setupHistorySearchSQL(patterns=None, ignore_case=False): """Setup need_full and patterns for _yieldSQLDataList, also see if we can get away with just using searchNames(). """ if patterns is None: patterns = [] fields = ['name', 'sql_nameArch', 'sql_nameVerRelArch', 'sql_nameVer', 'sql_nameVerRel', 'sql_envra', 'sql_nevra'] need_full = False for pat in patterns: if yum.misc.re_full_search_needed(pat): need_full = True break pat_max = PATTERNS_MAX if not need_full: fields = ['name'] pat_max = PATTERNS_INDEXED_MAX if len(patterns) > pat_max: patterns = [] if ignore_case: patterns = sql_esc_glob(patterns) else: tmp = [] need_glob = False for pat in patterns: if misc.re_glob(pat): tmp.append((pat, 'glob')) need_glob = True else: tmp.append((pat, '=')) if not need_full and not need_glob and patterns: return (need_full, patterns, fields, True) patterns = tmp return (need_full, patterns, fields, False) # ---- horrible Copy and paste from sqlitesack ---- class YumHistoryPackage(PackageObject): def __init__(self, name, arch, epoch, version, release, checksum=None): self.name = name self.version = version self.release = release self.epoch = epoch self.arch = arch self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release) if checksum is None: self._checksums = [] # (type, checksum, id(0,1) else: chk = checksum.split(':') self._checksums = [(chk[0], chk[1], 0)] # (type, checksum, id(0,1)) # Needed for equality comparisons in PackageObject self.repoid = "" class YumHistoryPackageState(YumHistoryPackage): def __init__(self, name,arch, epoch,version,release, state, checksum=None): YumHistoryPackage.__init__(self, name,arch, epoch,version,release, checksum) self.done = None self.state = state self.repoid = '' 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. """ def __init__(self, history, row): self._history = weakref(history) self.tid = row[0] self.beg_timestamp = row[1] self.beg_rpmdbversion = row[2] self.end_timestamp = row[3] self.end_rpmdbversion = row[4] self.loginuid = row[5] self.return_code = row[6] 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 self.altered_lt_rpmdb = None self.altered_gt_rpmdb = None def __cmp__(self, other): if other is None: return 1 ret = cmp(self.beg_timestamp, other.beg_timestamp) if ret: return -ret ret = cmp(self.end_timestamp, other.end_timestamp) if ret: return ret ret = cmp(self.tid, other.tid) return -ret def _getTransWith(self): if self._loaded_TW is None: self._loaded_TW = sorted(self._history._old_with_pkgs(self.tid)) return self._loaded_TW def _getTransData(self): 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: self._loaded_ER = self._history._load_errors(self.tid) return self._loaded_ER def _getOutput(self): if self._loaded_OT is None: self._loaded_OT = self._history._load_output(self.tid) return self._loaded_OT errors = property(fget=lambda self: self._getErrors()) output = property(fget=lambda self: self._getOutput()) class YumMergedHistoryTransaction(YumHistoryTransaction): def __init__(self, obj): self._merged_tids = set([obj.tid]) self._merged_objs = [obj] self.beg_timestamp = obj.beg_timestamp self.beg_rpmdbversion = obj.beg_rpmdbversion self.end_timestamp = obj.end_timestamp self.end_rpmdbversion = obj.end_rpmdbversion self._loaded_TW = None self._loaded_TD = None # Hack, this is difficult ... not sure if we want to list everything # that was skipped. Just those things which were skipped and then not # updated later ... or nothing. Nothing is much easier. self._loaded_TS = [] 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 self.altered_lt_rpmdb = None self.altered_gt_rpmdb = None def _getAllTids(self): return sorted(self._merged_tids) tid = property(fget=lambda self: self._getAllTids()) def _getLoginUIDs(self): ret = set((tid.loginuid for tid in self._merged_objs)) if len(ret) == 1: return list(ret)[0] return sorted(ret) loginuid = property(fget=lambda self: self._getLoginUIDs()) def _getReturnCodes(self): ret_codes = set((tid.return_code for tid in self._merged_objs)) if len(ret_codes) == 1 and 0 in ret_codes: return 0 if 0 in ret_codes: ret_codes.remove(0) return sorted(ret_codes) return_code = property(fget=lambda self: self._getReturnCodes()) def _getTransWith(self): ret = [] filt = set() for obj in self._merged_objs: for pkg in obj.trans_with: if pkg.pkgtup in filt: continue filt.add(pkg.pkgtup) ret.append(pkg) return sorted(ret) # This is the real tricky bit, we want to "merge" so that: # pkgA-1 => pkgA-2 # pkgA-2 => pkgA-3 # pkgB-1 => pkgB-2 # pkgB-2 => pkgB-1 # ...becomes: # pkgA-1 => pkgA-3 # pkgB-1 => pkgB-1 (reinstall) # ...note that we just give up if "impossible" things happen, Eg. # pkgA-1 => pkgA-2 # pkgA-4 => pkgA-5 @staticmethod def _p2sk(pkg, state=None): """ Take a pkg and return the key for it's state lookup. """ if state is None: state = pkg.state # Arch is needed so multilib. works, dito. getBaseArch() -- (so .i586 # => .i686 moves are seen) return (pkg.name, getBaseArch(pkg.arch), state) @staticmethod def _list2dict(pkgs): pkgtup2pkg = {} pkgstate2pkg = {} for pkg in pkgs: key = YumMergedHistoryTransaction._p2sk(pkg) pkgtup2pkg[pkg.pkgtup] = pkg pkgstate2pkg[key] = pkg return pkgtup2pkg, pkgstate2pkg @staticmethod def _conv_pkg_state(pkg, state): npkg = YumHistoryPackageState(pkg.name, pkg.arch, pkg.epoch,pkg.version,pkg.release, state) npkg._checksums = pkg._checksums npkg.done = pkg.done if _sttxt2stcode[npkg.state] in TS_INSTALL_STATES: npkg.state_installed = True if _sttxt2stcode[npkg.state] in TS_REMOVE_STATES: npkg.state_installed = False return npkg @staticmethod def _get_pkg(sk, pkgstate2pkg): if type(sk) != type((0,1)): sk = YumMergedHistoryTransaction._p2sk(sk) if sk not in pkgstate2pkg: return None return pkgstate2pkg[sk] def _move_pkg(self, sk, nstate, pkgtup2pkg, pkgstate2pkg): xpkg = self._get_pkg(sk, pkgstate2pkg) if xpkg is None: return del pkgstate2pkg[self._p2sk(xpkg)] xpkg = self._conv_pkg_state(xpkg, nstate) pkgtup2pkg[xpkg.pkgtup] = xpkg pkgstate2pkg[self._p2sk(xpkg)] = xpkg def _getTransData(self): def _get_pkg_f(sk): return self._get_pkg(sk, fpkgstate2pkg) def _get_pkg_n(sk): return self._get_pkg(sk, npkgstate2pkg) def _move_pkg_f(sk, nstate): self._move_pkg(sk, nstate, fpkgtup2pkg, fpkgstate2pkg) def _move_pkg_n(sk, nstate): self._move_pkg(sk, nstate, npkgtup2pkg, npkgstate2pkg) def _del1_n(pkg): del npkgtup2pkg[pkg.pkgtup] key = self._p2sk(pkg) if key in npkgstate2pkg: # For broken rpmdbv's and installonly del npkgstate2pkg[key] def _del1_f(pkg): del fpkgtup2pkg[pkg.pkgtup] key = self._p2sk(pkg) if key in fpkgstate2pkg: # For broken rpmdbv's and installonly del fpkgstate2pkg[key] def _del2(fpkg, npkg): assert fpkg.pkgtup == npkg.pkgtup _del1_f(fpkg) _del1_n(npkg) fpkgtup2pkg = {} fpkgstate2pkg = {} # We need to go from oldest to newest here, so we can see what happened # in the correct chronological order. for obj in self._merged_objs: npkgtup2pkg, npkgstate2pkg = self._list2dict(obj.trans_data) # Handle Erase => Install, as update/reinstall/downgrade for key in list(fpkgstate2pkg.keys()): (name, arch, state) = key if state not in ('Obsoleted', 'Erase'): continue fpkg = fpkgstate2pkg[key] for xstate in ('Install', 'True-Install', 'Dep-Install', 'Obsoleting'): npkg = _get_pkg_n(self._p2sk(fpkg, xstate)) if npkg is not None: break else: continue if False: pass elif fpkg > npkg: _move_pkg_f(fpkg, 'Downgraded') if xstate != 'Obsoleting': _move_pkg_n(npkg, 'Downgrade') elif fpkg < npkg: _move_pkg_f(fpkg, 'Updated') if xstate != 'Obsoleting': _move_pkg_n(npkg, 'Update') else: _del1_f(fpkg) if xstate != 'Obsoleting': _move_pkg_n(npkg, 'Reinstall') sametups = set(npkgtup2pkg.keys()).intersection(fpkgtup2pkg.keys()) for pkgtup in sametups: if pkgtup not in fpkgtup2pkg or pkgtup not in npkgtup2pkg: continue fpkg = fpkgtup2pkg[pkgtup] npkg = npkgtup2pkg[pkgtup] if False: pass elif fpkg.state == 'Reinstall': if npkg.state in ('Reinstall', 'Erase', 'Obsoleted', 'Downgraded', 'Updated'): _del1_f(fpkg) elif fpkg.state in ('Obsoleted', 'Erase'): # Should be covered by above loop which deals with # all goood state changes. good_states = ('Install', 'True-Install', 'Dep-Install', 'Obsoleting') assert npkg.state not in good_states elif fpkg.state in ('Install', 'True-Install', 'Dep-Install'): if False: pass elif npkg.state in ('Erase', 'Obsoleted'): _del2(fpkg, npkg) elif npkg.state == 'Updated': _del2(fpkg, npkg) # Move '*Install' state along to newer pkg. (not for # obsoletes). _move_pkg_n(self._p2sk(fpkg, 'Update'), fpkg.state) elif npkg.state == 'Downgraded': _del2(fpkg, npkg) # Move '*Install' state along to newer pkg. (not for # obsoletes). _move_pkg_n(self._p2sk(fpkg, 'Downgrade'), fpkg.state) elif fpkg.state in ('Downgrade', 'Update', 'Obsoleting'): if False: pass elif npkg.state == 'Reinstall': _del1_n(npkg) elif npkg.state in ('Erase', 'Obsoleted'): _del2(fpkg, npkg) # Move 'Erase'/'Obsoleted' state to orig. pkg. _move_pkg_f(self._p2sk(fpkg, 'Updated'), npkg.state) _move_pkg_f(self._p2sk(fpkg, 'Downgraded'), npkg.state) elif npkg.state in ('Downgraded', 'Updated'): xfpkg = _get_pkg_f(self._p2sk(fpkg, 'Updated')) if xfpkg is None: xfpkg = _get_pkg_f(self._p2sk(fpkg, 'Downgraded')) if xfpkg is None: if fpkg.state != 'Obsoleting': continue # Was an Install*/Reinstall with Obsoletes xfpkg = fpkg xnpkg = _get_pkg_n(self._p2sk(npkg, 'Update')) if xnpkg is None: xnpkg = _get_pkg_n(self._p2sk(npkg, 'Downgrade')) if xnpkg is None: xnpkg = _get_pkg_n(self._p2sk(npkg, 'Obsoleting')) if xnpkg is None: continue # Now we have 4 pkgs, f1, f2, n1, n2, and 3 pkgtups # f2.pkgtup == n1.pkgtup. So we need to find out if # f1 => n2 is an Update or a Downgrade. _del2(fpkg, npkg) if xfpkg == xnpkg: nfstate = 'Reinstall' if 'Obsoleting' in (fpkg.state, xnpkg.state): nfstate = 'Obsoleting' if xfpkg != fpkg: _move_pkg_f(xfpkg, nfstate) _del1_n(xnpkg) elif xfpkg < xnpkg: # Update... nfstate = 'Updated' nnstate = 'Update' if 'Obsoleting' in (fpkg.state, xnpkg.state): nnstate = 'Obsoleting' if xfpkg != fpkg: _move_pkg_f(xfpkg, nfstate) _move_pkg_n(xnpkg, nnstate) else: # Downgrade... nfstate = 'Downgraded' nnstate = 'Downgrade' if 'Obsoleting' in (fpkg.state, xnpkg.state): nnstate = 'Obsoleting' if xfpkg != fpkg: _move_pkg_f(xfpkg, nfstate) _move_pkg_n(xnpkg, nnstate) for x in npkgtup2pkg: fpkgtup2pkg[x] = npkgtup2pkg[x] for x in npkgstate2pkg: fpkgstate2pkg[x] = npkgstate2pkg[x] return sorted(fpkgtup2pkg.values()) def _getProblems(self): probs = set() for tid in self._merged_objs: for prob in tid.rpmdb_problems: probs.add(prob) return sorted(probs) def _getCmdline(self): cmdlines = [] for tid in self._merged_objs: if not tid.cmdline: continue if cmdlines and cmdlines[-1] == tid.cmdline: continue cmdlines.append(tid.cmdline) if not cmdlines: return None return cmdlines def _getErrors(self): ret = [] for obj in self._merged_objs: ret.extend(obj.errors) return ret def _getOutput(self): ret = [] for obj in self._merged_objs: ret.extend(obj.output) return ret def merge(self, obj): if obj.tid in self._merged_tids: return # Already done, signal an error? self._merged_tids.add(obj.tid) self._merged_objs.append(obj) # Oldest first... self._merged_objs.sort(reverse=True) if self.beg_timestamp > obj.beg_timestamp: self.beg_timestamp = obj.beg_timestamp self.beg_rpmdbversion = obj.beg_rpmdbversion if self.end_timestamp < obj.end_timestamp: self.end_timestamp = obj.end_timestamp self.end_rpmdbversion = obj.end_rpmdbversion class YumHistory: """ API for accessing the history sqlite data. """ def __init__(self, root='/', db_path=_history_dir): self._conn = None self.conf = yum.misc.GenericHolder() 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: os.makedirs(self.conf.db_path) except (IOError, OSError), e: # some sort of useful thing here? A warning? return self.conf.writable = True else: if os.access(self.conf.db_path, os.W_OK): self.conf.writable = True DBs = glob.glob('%s/history-*-*-*.sqlite' % self.conf.db_path) self._db_file = None for d in reversed(sorted(DBs)): fname = os.path.basename(d) fname = fname[len("history-"):-len(".sqlite")] pieces = fname.split('-', 4) if len(pieces) != 3: continue try: map(int, pieces) 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: 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 # Note that this is required due to changing the history DB in the # callback for removed txmbrs ... which happens inside the chroot, # as against all our other access which is outside the chroot. So # we need sqlite to not open the journal. # In theory this sucks, as history could be shared. In reality # it's deep yum stuff and there should only be one yum. executeSQL(self._conn.cursor(), "PRAGMA locking_mode = EXCLUSIVE") return self._conn.cursor() def _commit(self): return self._conn.commit() def close(self): if self._conn is not None: self._conn.close() self._conn = None def _pkgtup2pid(self, pkgtup, checksum=None): cur = self._get_cursor() executeSQL(cur, """SELECT pkgtupid, checksum FROM pkgtups WHERE name=? AND arch=? AND epoch=? AND version=? AND release=?""", pkgtup) for sql_pkgtupid, sql_checksum in cur: if checksum is None and sql_checksum is None: return sql_pkgtupid if checksum is None: continue if sql_checksum is None: continue if checksum == sql_checksum: return sql_pkgtupid (n,a,e,v,r) = pkgtup (n,a,e,v,r) = (to_unicode(n),to_unicode(a), to_unicode(e),to_unicode(v),to_unicode(r)) if checksum is not None: res = executeSQL(cur, """INSERT INTO pkgtups (name, arch, epoch, version, release, checksum) VALUES (?, ?, ?, ?, ?, ?)""", (n,a,e,v,r, checksum)) else: res = executeSQL(cur, """INSERT INTO pkgtups (name, arch, epoch, version, release) VALUES (?, ?, ?, ?, ?)""", (n,a,e,v,r)) return cur.lastrowid def _apkg2pid(self, po): csum = po.returnIdSum() if csum is not None: csum = "%s:%s" % (str(csum[0]), str(csum[1])) return self._pkgtup2pid(po.pkgtup, csum) def _ipkg2pid(self, po): csum = None yumdb = po.yumdb_info if 'checksum_type' in yumdb and 'checksum_data' in yumdb: csum = "%s:%s" % (yumdb.checksum_type, yumdb.checksum_data) return self._pkgtup2pid(po.pkgtup, csum) def pkg2pid(self, po): if isinstance(po, YumInstalledPackage): return self._ipkg2pid(po) if isinstance(po, YumAvailablePackage): return self._apkg2pid(po) return self._pkgtup2pid(po.pkgtup, None) @staticmethod def txmbr2state(txmbr): state = None if txmbr.output_state in (TS_INSTALL, TS_TRUEINSTALL): if txmbr.reinstall: state = 'Reinstall' elif txmbr.downgrades: state = 'Downgrade' if txmbr.output_state == TS_ERASE: if txmbr.downgraded_by: state = 'Downgraded' if state is None: state = _stcode2sttxt.get(txmbr.output_state) if state == 'Install' and txmbr.isDep: state = 'Dep-Install' return state 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) VALUES (?, ?, ?)""", (self._tid, pid, state)) return cur.lastrowid def trans_data_pid_end(self, pid, state): # State can be none here, Eg. TS_FAILED from rpmtrans 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, """UPDATE trans_data_pkgs SET done = ? WHERE tid = ? AND pkgtupid = ? AND state = ? """, ('TRUE', self._tid, pid, state)) self._commit() 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 # 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, uproblem)) 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, to_unicode(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) VALUES (?, ?, ?)""", (int(time.time()), str(rpmdb_version), yum.misc.getloginuid())) self._tid = cur.lastrowid for pkg in using_pkgs: pid = self._ipkg2pid(pkg) self.trans_with_pid(pid) for txmbr in txmbrs: pid = self.pkg2pid(txmbr.po) 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, """INSERT INTO trans_error (tid, msg) VALUES (?, ?)""", (self._tid, error)) self._commit() def log_scriptlet_output(self, data, msg): """ Note that data can be either a real pkg. ... or not. """ if msg is None or not hasattr(self, '_tid'): return # Not configured to run cur = self._get_cursor() 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 (tid, line) VALUES (?, ?)""", (self._tid, error)) self._commit() def _load_errors(self, tid): cur = self._get_cursor() executeSQL(cur, """SELECT msg FROM trans_error WHERE tid = ? ORDER BY mid ASC""", (tid,)) ret = [] for row in cur: ret.append(row[0]) return ret def _load_output(self, tid): cur = self._get_cursor() executeSQL(cur, """SELECT line FROM trans_script_stdout WHERE tid = ? ORDER BY lid ASC""", (tid,)) ret = [] for row in cur: ret.append(row[0]) return ret 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) VALUES (?, ?, ?, ?)""", (self._tid,int(time.time()), str(rpmdb_version), return_code)) self._commit() if not return_code: # Simple hack, if the transaction finished. Note that this # catches the erase cases (as we still don't get pkgtups for them), # Eg. Updated elements. executeSQL(cur, """UPDATE trans_data_pkgs SET done = ? WHERE tid = ?""", ('TRUE', self._tid,)) self._commit() if errors is not None: 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(to_utf8(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, """SELECT name, arch, epoch, version, release, checksum FROM trans_with_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_data_pkgs(self, tid): cur = self._get_cursor() executeSQL(cur, """SELECT name, arch, epoch, version, release, checksum, done, state FROM trans_data_pkgs JOIN pkgtups USING(pkgtupid) WHERE tid = ? ORDER BY name ASC, epoch ASC, state DESC""", (tid,)) ret = [] for row in cur: obj = YumHistoryPackageState(row[0],row[1],row[2],row[3],row[4], row[7], row[5]) obj.done = row[6] == 'TRUE' obj.state_installed = None if _sttxt2stcode[obj.state] in TS_INSTALL_STATES: obj.state_installed = True if _sttxt2stcode[obj.state] in TS_REMOVE_STATES: 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, trans_end.timestamp AS end_ts, trans_end.rpmdb_version AS end_rv, loginuid, return_code FROM trans_beg JOIN trans_end USING(tid)""" # NOTE: sqlite doesn't do OUTER JOINs ... *sigh*. So we have to do it # ourself. if not complete_transactions_only: sql = """SELECT tid, trans_beg.timestamp AS beg_ts, trans_beg.rpmdb_version AS beg_rv, NULL, NULL, loginuid, NULL FROM trans_beg""" params = None if tids and len(tids) <= yum.constants.PATTERNS_INDEXED_MAX: params = tids = list(set(tids)) sql += " WHERE tid IN (%s)" % ", ".join(['?'] * len(tids)) sql += " ORDER BY beg_ts DESC, tid ASC" if limit is not None: sql += " LIMIT " + str(limit) executeSQL(cur, sql, params) ret = [] tid2obj = {} for row in cur: if tids and len(tids) > yum.constants.PATTERNS_INDEXED_MAX: if row[0] not in tids: continue obj = YumHistoryTransaction(self, row) tid2obj[row[0]] = obj ret.append(obj) sql = """SELECT tid, trans_end.timestamp AS end_ts, trans_end.rpmdb_version AS end_rv, return_code FROM trans_end""" params = tid2obj.keys() if len(params) > yum.constants.PATTERNS_INDEXED_MAX: executeSQL(cur, sql) else: sql += " WHERE tid IN (%s)" % ", ".join(['?'] * len(params)) executeSQL(cur, sql, params) for row in cur: if row[0] not in tid2obj: continue tid2obj[row[0]].end_timestamp = row[1] tid2obj[row[0]].end_rpmdbversion = row[2] tid2obj[row[0]].return_code = row[3] # Go through backwards, and see if the rpmdb versions match las = None for obj in reversed(ret): cur_rv = obj.beg_rpmdbversion las_rv = None if las is not None: las_rv = las.end_rpmdbversion if las_rv is None or cur_rv is None or (las.tid + 1) != obj.tid: pass elif las_rv != cur_rv: obj.altered_lt_rpmdb = True las.altered_gt_rpmdb = True else: obj.altered_lt_rpmdb = False las.altered_gt_rpmdb = False las = obj return ret def last(self, complete_transactions_only=True): """ This is the last full transaction. So any incomplete transactions do not count, by default. """ ret = self.old([], 1, complete_transactions_only) if not ret: return None assert len(ret) == 1 return ret[0] def _yieldSQLDataList(self, patterns, fields, ignore_case): """Yields all the package data for the given params. """ cur = self._get_cursor() qsql = _FULL_PARSE_QUERY_BEG pat_sqls = [] pat_data = [] for (pattern, rest) in patterns: 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) assert pat_sqls qsql += " OR ".join(pat_sqls) executeSQL(cur, qsql, pat_data) for x in cur: yield x def search(self, patterns, ignore_case=True): """ Search for history transactions which contain specified 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, npatterns, fields, names) = data ret = [] pkgtupids = set() if npatterns: for row in self._yieldSQLDataList(npatterns, fields, ignore_case): pkgtupids.add(row[0]) else: # Too many patterns, *sigh* pat_max = PATTERNS_MAX if not need_full: pat_max = PATTERNS_INDEXED_MAX for npatterns in yum.misc.seq_max_split(patterns, pat_max): data = _setupHistorySearchSQL(npatterns, ignore_case) (need_full, nps, fields, names) = data assert nps for row in self._yieldSQLDataList(nps, fields, ignore_case): pkgtupids.add(row[0]) sql = """SELECT tid FROM trans_data_pkgs WHERE pkgtupid IN """ sql += "(%s)" % ",".join(['?'] * len(pkgtupids)) params = list(pkgtupids) tids = set() if len(params) > yum.constants.PATTERNS_INDEXED_MAX: executeSQL(cur, """SELECT tid FROM trans_data_pkgs""") for row in cur: if row[0] in params: tids.add(row[0]) return tids if not params: return tids executeSQL(cur, sql, params) for row in cur: 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 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_pkgs2 AS SELECT tid,rpid,name,epoch,version,release,arch,pkgtups.pkgtupid, main,problem,msg, name || '-' || epoch || ':' || version || '-' || release || '.' || arch AS nevra 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; '''] 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', self._db_date, 'sqlite') if self._db_file == _db_file: os.rename(_db_file, _db_file + '.old') # Just in case ... move the journal file too. if os.path.exists(_db_file + '-journal'): os.rename(_db_file + '-journal', _db_file + '-journal.old') self._db_file = _db_file if self.conf.writable and not os.path.exists(self._db_file): # make them default to 0600 - sysadmin can change it later # if they want fo = os.open(self._db_file, os.O_CREAT, 0600) os.close(fo) cur = self._get_cursor() ops = ['''\ CREATE TABLE trans_beg ( tid INTEGER PRIMARY KEY, timestamp INTEGER NOT NULL, rpmdb_version TEXT NOT NULL, loginuid INTEGER); ''', '''\ CREATE TABLE trans_end ( tid INTEGER PRIMARY KEY REFERENCES trans_beg, timestamp INTEGER NOT NULL, rpmdb_version TEXT NOT NULL, return_code INTEGER NOT NULL); ''', '''\ \ CREATE TABLE trans_with_pkgs ( tid INTEGER NOT NULL REFERENCES trans_beg, pkgtupid INTEGER NOT NULL REFERENCES pkgtups); ''', '''\ \ CREATE TABLE trans_error ( mid INTEGER PRIMARY KEY, tid INTEGER NOT NULL REFERENCES trans_beg, msg TEXT NOT NULL); ''', '''\ CREATE TABLE trans_script_stdout ( lid INTEGER PRIMARY KEY, tid INTEGER NOT NULL REFERENCES trans_beg, line TEXT NOT NULL); ''', '''\ \ CREATE TABLE trans_data_pkgs ( tid INTEGER NOT NULL REFERENCES trans_beg, pkgtupid INTEGER NOT NULL REFERENCES pkgtups, done BOOL NOT NULL DEFAULT FALSE, state TEXT NOT NULL); ''', '''\ \ CREATE TABLE pkgtups ( pkgtupid INTEGER PRIMARY KEY, name TEXT NOT NULL, arch TEXT NOT NULL, epoch TEXT NOT NULL, version TEXT NOT NULL, release TEXT NOT NULL, checksum TEXT); ''', '''\ CREATE INDEX i_pkgtup_naevr ON pkgtups (name, arch, epoch, version, release); '''] for op in ops: cur.execute(op) for op in self._update_ops_2: cur.execute(op) self._commit() # Pasted from sqlitesack _FULL_PARSE_QUERY_BEG = """ SELECT pkgtupid,name,epoch,version,release,arch, name || "." || arch AS sql_nameArch, name || "-" || version || "-" || release || "." || arch AS sql_nameVerRelArch, name || "-" || version AS sql_nameVer, name || "-" || version || "-" || release AS sql_nameVerRel, epoch || ":" || name || "-" || version || "-" || release || "." || arch AS sql_envra, name || "-" || epoch || ":" || version || "-" || release || "." || arch AS sql_nevra FROM pkgtups WHERE """ yum-3.4.3/yum/callbacks.py0000664000076400007640000001107211602434452014432 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # imports import logging from urlgrabber.progress import BaseMeter,format_time,format_number # ProcessTransaction States PT_DOWNLOAD = 10 # Start Download PT_DOWNLOAD_PKGS = 11 # Packages to download PT_GPGCHECK = 20 # Start Checkin Package Signatures PT_TEST_TRANS = 30 # Start Test Transaction PT_TRANSACTION = 40 # Start Transaction PT_MESSAGES = { PT_DOWNLOAD : "Downloading Packages", PT_GPGCHECK : "Check Package Signatures", PT_TEST_TRANS : "Running Test Transaction", PT_TRANSACTION : "Running Transaction"} class ProcessTransBaseCallback: def __init__(self): self.logger = logging.getLogger('yum.verbose.ProcessTrasactionBaseCallback') def event(self,state,data=None): if state in PT_MESSAGES.keys(): self.logger.info(PT_MESSAGES[state]) class ProcessTransNoOutputCallback: def __init__(self): pass def event(self,state,data=None): pass class DownloadBaseCallback( BaseMeter ): """ This is class is a base class to use by implement a download progress handler to be used with YumBase.repos.setProgressBar. Example: from yum.callbacks import DownloadBaseCallback class MyDownloadCallback( DownloadBaseCallback ): def updateProgress(self,name,frac,fread,ftime): ''' Update the progressbar @param name: filename @param frac: Progress fracment (0 -> 1) @param fread: formated string containing BytesRead @param ftime : formated string containing remaining or elapsed time ''' pct = int( frac*100 ) print " %s : %s " % (name,pct) if __name__ == '__main__': my = YumBase() my.doConfigSetup() dnlcb = MyDownloadCallback() my.repos.repos.setProgressBar( dnlcb ) for pkg in my.pkgSack: print pkg.name """ def __init__(self): BaseMeter.__init__( self ) self.totSize = "" # Total size to download in a formatted string (Kb, MB etc) def update( self, amount_read, now=None ): BaseMeter.update( self, amount_read, now ) def _do_start( self, now=None ): name = self._getName() self.updateProgress(name,0.0,"","") if not self.size is None: self.totSize = format_number( self.size ) def _do_update( self, amount_read, now=None ): fread = format_number( amount_read ) name = self._getName() if self.size is None: # Elapsed time etime = self.re.elapsed_time() fetime = format_time( etime ) frac = 0.0 self.updateProgress(name,frac,fread,fetime) else: # Remaining time rtime = self.re.remaining_time() frtime = format_time( rtime ) frac = self.re.fraction_read() self.updateProgress(name,frac,fread,frtime) def _do_end( self, amount_read, now=None ): total_time = format_time( self.re.elapsed_time() ) total_size = format_number( amount_read ) name = self._getName() self.updateProgress(name,1.0,total_size,total_time) def _getName(self): ''' Get the name of the package being downloaded ''' if self.text and type( self.text ) == type( "" ): name = self.text else: name = self.basename return name def updateProgress(self,name,frac,fread,ftime): ''' Update the progressbar (Overload in child class) @param name: filename @param frac: Progress fracment (0 -> 1) @param fread: formated string containing BytesRead @param ftime : formated string containing remaining or elapsed time ''' pass yum-3.4.3/yum/rpmtrans.py0000664000076400007640000005704511602434452014373 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University # Parts Copyright 2007 Red Hat, Inc import rpm import os import fcntl import time import logging import types import sys from yum.constants import * from yum import _ from yum.transactioninfo import TransactionMember import misc import tempfile class NoOutputCallBack: def __init__(self): pass def event(self, package, action, te_current, te_total, ts_current, ts_total): """ @param package: A yum package object or simple string of a package name @param action: A yum.constant transaction set state or in the obscure rpm repackage case it could be the string 'repackaging' @param te_current: current number of bytes processed in the transaction element being processed @param te_total: total number of bytes in the transaction element being processed @param ts_current: number of processes completed in whole transaction @param ts_total: total number of processes in the transaction. """ # this is where a progress bar would be called pass def scriptout(self, package, msgs): """package is the package. msgs is the messages that were output (if any).""" pass def errorlog(self, msg): """takes a simple error msg string""" pass def filelog(self, package, action): # check package object type - if it is a string - just output it """package is the same as in event() - a package object or simple string action is also the same as in event()""" pass class RPMBaseCallback: ''' Base class for a RPMTransaction display callback class ''' def __init__(self): self.action = { TS_UPDATE : _('Updating'), TS_ERASE: _('Erasing'), TS_INSTALL: _('Installing'), TS_TRUEINSTALL : _('Installing'), TS_OBSOLETED: _('Obsoleted'), TS_OBSOLETING: _('Installing'), TS_UPDATED: _('Cleanup'), 'repackaging': _('Repackaging')} # The fileaction are not translated, most sane IMHO / Tim self.fileaction = { TS_UPDATE: 'Updated', TS_ERASE: 'Erased', TS_INSTALL: 'Installed', TS_TRUEINSTALL: 'Installed', TS_OBSOLETED: 'Obsoleted', TS_OBSOLETING: 'Installed', TS_UPDATED: 'Cleanup'} self.logger = logging.getLogger('yum.filelogging.RPMInstallCallback') def event(self, package, action, te_current, te_total, ts_current, ts_total): """ @param package: A yum package object or simple string of a package name @param action: A yum.constant transaction set state or in the obscure rpm repackage case it could be the string 'repackaging' @param te_current: Current number of bytes processed in the transaction element being processed @param te_total: Total number of bytes in the transaction element being processed @param ts_current: number of processes completed in whole transaction @param ts_total: total number of processes in the transaction. """ raise NotImplementedError() def scriptout(self, package, msgs): """package is the package. msgs is the messages that were output (if any).""" pass def errorlog(self, msg): # FIXME this should probably dump to the filelog, too print >> sys.stderr, msg def filelog(self, package, action): # If the action is not in the fileaction list then dump it as a string # hurky but, sadly, not much else if action in self.fileaction: msg = '%s: %s' % (self.fileaction[action], package) else: msg = '%s: %s' % (package, action) self.logger.info(msg) class SimpleCliCallBack(RPMBaseCallback): def __init__(self): RPMBaseCallback.__init__(self) self.lastmsg = None self.lastpackage = None # name of last package we looked at def event(self, package, action, te_current, te_total, ts_current, ts_total): # this is where a progress bar would be called msg = '%s: %s %s/%s [%s/%s]' % (self.action[action], package, te_current, te_total, ts_current, ts_total) if msg != self.lastmsg: print msg self.lastmsg = msg self.lastpackage = package def scriptout(self, package, msgs): if msgs: print msgs, # This is ugly, but atm. rpm can go insane and run the "cleanup" phase # without the "install" phase if it gets an exception in it's callback. The # following means that we don't really need to know/care about that in the # display callback functions. # Note try/except's in RPMTransaction are for the same reason. class _WrapNoExceptions: def __init__(self, parent): self.__parent = parent def __getattr__(self, name): """ Wraps all access to the parent functions. This is so it'll eat all exceptions because rpm doesn't like exceptions in the callback. """ func = getattr(self.__parent, name) def newFunc(*args, **kwargs): try: func(*args, **kwargs) except: pass newFunc.__name__ = func.__name__ newFunc.__doc__ = func.__doc__ newFunc.__dict__.update(func.__dict__) return newFunc class RPMTransaction: def __init__(self, base, test=False, display=NoOutputCallBack): if not callable(display): self.display = display else: self.display = display() # display callback self.display = _WrapNoExceptions(self.display) self.base = base # base yum object b/c we need so much self.test = test # are we a test? self.trans_running = False self.fd = None self.total_actions = 0 self.total_installed = 0 self.complete_actions = 0 self.installed_pkg_names = set() self.total_removed = 0 self.logger = logging.getLogger('yum.filelogging.RPMInstallCallback') self.filelog = False self._setupOutputLogging(base.conf.rpmverbosity) if not os.path.exists(self.base.conf.persistdir): os.makedirs(self.base.conf.persistdir) # make the dir, just in case # Error checking? -- these should probably be where else def _fdSetNonblock(self, fd): """ Set the Non-blocking flag for a filedescriptor. """ flag = os.O_NONBLOCK current_flags = fcntl.fcntl(fd, fcntl.F_GETFL) if current_flags & flag: return fcntl.fcntl(fd, fcntl.F_SETFL, current_flags | flag) def _fdSetCloseOnExec(self, fd): """ Set the close on exec. flag for a filedescriptor. """ flag = fcntl.FD_CLOEXEC current_flags = fcntl.fcntl(fd, fcntl.F_GETFD) if current_flags & flag: return fcntl.fcntl(fd, fcntl.F_SETFD, current_flags | flag) def _setupOutputLogging(self, rpmverbosity="info"): # UGLY... set up the transaction to record output from scriptlets io_r = tempfile.NamedTemporaryFile() self._readpipe = io_r self._writepipe = open(io_r.name, 'w+b') self.base.ts.setScriptFd(self._writepipe) rpmverbosity = {'critical' : 'crit', 'emergency' : 'emerg', 'error' : 'err', 'information' : 'info', 'warn' : 'warning'}.get(rpmverbosity, rpmverbosity) rpmverbosity = 'RPMLOG_' + rpmverbosity.upper() if not hasattr(rpm, rpmverbosity): rpmverbosity = 'RPMLOG_INFO' rpm.setVerbosity(getattr(rpm, rpmverbosity)) rpm.setLogFile(self._writepipe) def _shutdownOutputLogging(self): # reset rpm bits from reording output rpm.setVerbosity(rpm.RPMLOG_NOTICE) rpm.setLogFile(sys.stderr) try: self._writepipe.close() except: pass def _scriptOutput(self): try: out = self._readpipe.read() if not out: return None return out except IOError: pass def _scriptout(self, data): msgs = self._scriptOutput() self.display.scriptout(data, msgs) self.base.history.log_scriptlet_output(data, msgs) def __del__(self): self._shutdownOutputLogging() def _dopkgtup(self, hdr): tmpepoch = hdr['epoch'] if tmpepoch is None: epoch = '0' else: epoch = str(tmpepoch) return (hdr['name'], hdr['arch'], epoch, hdr['version'], hdr['release']) # Find out txmbr based on the callback key. On erasures we dont know # the exact txmbr but we always have a name, so return (name, txmbr) # tuples so callers have less twists to deal with. def _getTxmbr(self, cbkey, erase=False): if isinstance(cbkey, TransactionMember): return (cbkey.name, cbkey) elif isinstance(cbkey, tuple): pkgtup = self._dopkgtup(cbkey[0]) txmbrs = self.base.tsInfo.getMembers(pkgtup=pkgtup) # if this is not one, somebody screwed up assert len(txmbrs) == 1 return (txmbrs[0].name, txmbrs[0]) elif isinstance(cbkey, basestring): ret = None # If we don't have a tuple, it's because this is an erase txmbr and # rpm doesn't provide one in that case. So we can "cheat" and look # through all our txmbrs for the name we have, and if we find a # single match ... that must be it. if not erase: return (cbkey, None) for txmbr in self.base.tsInfo.matchNaevr(name=cbkey): if txmbr.output_state not in TS_REMOVE_STATES: continue # If we have more than one match, then we don't know which one # it is ... so just give up. if ret is not None: return (cbkey, None) ret = txmbr return (cbkey, ret) else: return (None, None) def _fn_rm_installroot(self, filename): """ Remove the installroot from the filename. """ # to handle us being inside a chroot at this point # we hand back the right path to those 'outside' of the chroot() calls # but we're using the right path inside. if self.base.conf.installroot == '/': return filename return filename.replace(os.path.normpath(self.base.conf.installroot),'') def ts_done_open(self): """ Open the transaction done file, must be started outside the chroot. """ if self.test: return False if hasattr(self, '_ts_done'): return True self.ts_done_fn = '%s/transaction-done.%s' % (self.base.conf.persistdir, self._ts_time) ts_done_fn = self._fn_rm_installroot(self.ts_done_fn) try: self._ts_done = open(ts_done_fn, 'w') except (IOError, OSError), e: self.display.errorlog('could not open ts_done file: %s' % e) self._ts_done = None return False self._fdSetCloseOnExec(self._ts_done.fileno()) return True def ts_done_write(self, msg): """ Write some data to the transaction done file. """ if self._ts_done is None: return try: self._ts_done.write(msg) self._ts_done.flush() except (IOError, OSError), e: # Having incomplete transactions is probably worse than having # nothing. self.display.errorlog('could not write to ts_done file: %s' % e) self._ts_done = None misc.unlink_f(self.ts_done_fn) def ts_done(self, package, action): """writes out the portions of the transaction which have completed""" if not self.ts_done_open(): return # walk back through self._te_tuples # make sure the package and the action make some kind of sense # write it out and pop(0) from the list # make sure we have a list to work from if len(self._te_tuples) == 0: # if we don't then this is pretrans or postrans or a trigger # either way we have to respond correctly so just return and don't # emit anything return (t,e,n,v,r,a) = self._te_tuples[0] # what we should be on # make sure we're in the right action state msg = 'ts_done state is %s %s should be %s %s' % (package, action, t, n) if action in TS_REMOVE_STATES: if t != 'erase': self.display.filelog(package, msg) if action in TS_INSTALL_STATES: if t != 'install': self.display.filelog(package, msg) # check the pkg name out to make sure it matches if type(package) in types.StringTypes: name = package else: name = package.name if n != name: msg = 'ts_done name in te is %s should be %s' % (n, package) self.display.filelog(package, msg) # hope springs eternal that this isn't wrong msg = '%s %s:%s-%s-%s.%s\n' % (t,e,n,v,r,a) self.ts_done_write(msg) self._te_tuples.pop(0) def ts_all(self): """write out what our transaction will do""" # save the transaction elements into a list so we can run across them if not hasattr(self, '_te_tuples'): self._te_tuples = [] for te in self.base.ts: n = te.N() a = te.A() v = te.V() r = te.R() e = te.E() if e is None: e = '0' if te.Type() == 1: t = 'install' elif te.Type() == 2: t = 'erase' else: t = te.Type() # save this in a list self._te_tuples.append((t,e,n,v,r,a)) # write to a file self._ts_time = time.strftime('%Y-%m-%d.%H:%M.%S') tsfn = '%s/transaction-all.%s' % (self.base.conf.persistdir, self._ts_time) self.ts_all_fn = tsfn tsfn = self._fn_rm_installroot(tsfn) try: if not os.path.exists(os.path.dirname(tsfn)): os.makedirs(os.path.dirname(tsfn)) # make the dir, fo = open(tsfn, 'w') except (IOError, OSError), e: self.display.errorlog('could not open ts_all file: %s' % e) self._ts_done = None return try: for (t,e,n,v,r,a) in self._te_tuples: msg = "%s %s:%s-%s-%s.%s\n" % (t,e,n,v,r,a) fo.write(msg) fo.flush() fo.close() except (IOError, OSError), e: # Having incomplete transactions is probably worse than having # nothing. self.display.errorlog('could not write to ts_all file: %s' % e) misc.unlink_f(tsfn) self._ts_done = None def callback( self, what, bytes, total, h, user ): if what == rpm.RPMCALLBACK_TRANS_START: self._transStart( bytes, total, h ) elif what == rpm.RPMCALLBACK_TRANS_PROGRESS: self._transProgress( bytes, total, h ) elif what == rpm.RPMCALLBACK_TRANS_STOP: self._transStop( bytes, total, h ) elif what == rpm.RPMCALLBACK_INST_OPEN_FILE: return self._instOpenFile( bytes, total, h ) elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE: self._instCloseFile( bytes, total, h ) elif what == rpm.RPMCALLBACK_INST_PROGRESS: self._instProgress( bytes, total, h ) elif what == rpm.RPMCALLBACK_UNINST_START: self._unInstStart( bytes, total, h ) elif what == rpm.RPMCALLBACK_UNINST_PROGRESS: self._unInstProgress( bytes, total, h ) elif what == rpm.RPMCALLBACK_UNINST_STOP: self._unInstStop( bytes, total, h ) elif what == rpm.RPMCALLBACK_REPACKAGE_START: self._rePackageStart( bytes, total, h ) elif what == rpm.RPMCALLBACK_REPACKAGE_STOP: self._rePackageStop( bytes, total, h ) elif what == rpm.RPMCALLBACK_REPACKAGE_PROGRESS: self._rePackageProgress( bytes, total, h ) elif what == rpm.RPMCALLBACK_CPIO_ERROR: self._cpioError(bytes, total, h) elif what == rpm.RPMCALLBACK_UNPACK_ERROR: self._unpackError(bytes, total, h) # SCRIPT_ERROR is only in rpm >= 4.6.0 elif hasattr(rpm, "RPMCALLBACK_SCRIPT_ERROR") and what == rpm.RPMCALLBACK_SCRIPT_ERROR: self._scriptError(bytes, total, h) def _transStart(self, bytes, total, h): self.total_actions = total if self.test: return self.trans_running = True self.ts_all() # write out what transaction will do self.ts_done_open() def _transProgress(self, bytes, total, h): pass def _transStop(self, bytes, total, h): pass def _instOpenFile(self, bytes, total, h): self.lastmsg = None name, txmbr = self._getTxmbr(h) if txmbr is not None: rpmloc = txmbr.po.localPkg() try: self.fd = file(rpmloc) except IOError, e: self.display.errorlog("Error: Cannot open file %s: %s" % (rpmloc, e)) else: if self.trans_running: self.total_installed += 1 self.complete_actions += 1 self.installed_pkg_names.add(name) return self.fd.fileno() else: self.display.errorlog("Error: No Header to INST_OPEN_FILE") def _instCloseFile(self, bytes, total, h): name, txmbr = self._getTxmbr(h) if txmbr is not None: self.fd.close() self.fd = None if self.test: return if self.trans_running: self.display.filelog(txmbr.po, txmbr.output_state) self._scriptout(txmbr.po) pid = self.base.history.pkg2pid(txmbr.po) state = self.base.history.txmbr2state(txmbr) self.base.history.trans_data_pid_end(pid, state) self.ts_done(txmbr.po, txmbr.output_state) def _instProgress(self, bytes, total, h): name, txmbr = self._getTxmbr(h) if name is not None: # If we only have a name, we're repackaging. # Why the RPMCALLBACK_REPACKAGE_PROGRESS flag isn't set, I have no idea if txmbr is None: self.display.event(name, 'repackaging', bytes, total, self.complete_actions, self.total_actions) else: action = txmbr.output_state self.display.event(txmbr.po, action, bytes, total, self.complete_actions, self.total_actions) def _unInstStart(self, bytes, total, h): pass def _unInstProgress(self, bytes, total, h): pass def _unInstStop(self, bytes, total, h): name, txmbr = self._getTxmbr(h, erase=True) self.total_removed += 1 self.complete_actions += 1 if name not in self.installed_pkg_names: if txmbr is not None: self.display.filelog(txmbr.po, TS_ERASE) else: self.display.filelog(name, TS_ERASE) action = TS_ERASE else: action = TS_UPDATED # FIXME: Do we want to pass txmbr.po here too? self.display.event(name, action, 100, 100, self.complete_actions, self.total_actions) if self.test: return # and we're done if txmbr is not None: self._scriptout(txmbr.po) # Note that we are currently inside the chroot, which makes # sqlite panic when it tries to open it's journal file. # So let's have some "fun" and workaround that: _do_chroot = False if _do_chroot and self.base.conf.installroot != '/': os.chroot(".") pid = self.base.history.pkg2pid(txmbr.po) state = self.base.history.txmbr2state(txmbr) self.base.history.trans_data_pid_end(pid, state) if _do_chroot and self.base.conf.installroot != '/': os.chroot(self.base.conf.installroot) self.ts_done(txmbr.po, txmbr.output_state) else: self._scriptout(name) self.ts_done(name, action) def _rePackageStart(self, bytes, total, h): pass def _rePackageStop(self, bytes, total, h): pass def _rePackageProgress(self, bytes, total, h): pass def _cpioError(self, bytes, total, h): name, txmbr = self._getTxmbr(h) # In the case of a remove, we only have a name, not a txmbr if txmbr is not None: msg = "Error in cpio payload of rpm package %s" % txmbr.po txmbr.output_state = TS_FAILED self.display.errorlog(msg) # FIXME - what else should we do here? raise a failure and abort? def _unpackError(self, bytes, total, h): name, txmbr = self._getTxmbr(h) # In the case of a remove, we only have a name, not a txmbr if txmbr is not None: txmbr.output_state = TS_FAILED msg = "Error unpacking rpm package %s" % txmbr.po self.display.errorlog(msg) # FIXME - should we raise? I need a test case pkg to see what the # right behavior should be def _scriptError(self, bytes, total, h): # "bytes" carries the failed scriptlet tag, # "total" carries fatal/non-fatal status scriptlet_name = rpm.tagnames.get(bytes, "") name, txmbr = self._getTxmbr(h, erase=True) if txmbr is None: package_name = name else: package_name = txmbr.po if total: msg = ("Error in %s scriptlet in rpm package %s" % (scriptlet_name, package_name)) # In the case of a remove, we only have a name, not a txmbr if txmbr is not None: txmbr.output_state = TS_FAILED else: msg = ("Non-fatal %s scriptlet failure in rpm package %s" % (scriptlet_name, package_name)) self.display.errorlog(msg) # FIXME - what else should we do here? raise a failure and abort? yum-3.4.3/yum/sqlutils.py0000664000076400007640000001442611602434452014401 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of version 2 of the GNU General Public License # as published by the Free Software Foundation # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University """ utility functions to handle differences in pysqlite versions These are from Wichert Akkerman 's python-dhm http://www.wiggy.net/code/python-dhm """ try: import sqlite3 as sqlite except ImportError: import sqlite class TokenizeError(Exception): """Tokenizer error class""" pass def Tokenize(str, whitespace=" \t\r\n", quotes="\"", escapes="\\"): """String tokenizer This function tokenizes a string while taking quotation and escaping into account. >>> import dhm.strtools >>> dhm.strtools.Tokenize("this is a test") ['this', 'is', 'a', 'test'] >>> dhm.strtools.Tokenize("this \"is a\" test") ['this', 'is a', 'test'] >>> dhm.strtools.Tokenize("this \\\"is\\\" a test") ['this', '"is"', 'a', 'test'] >>> dhm.strtools.Tokenize("this \"is a test") Traceback (most recent call last): File "", line 1, in ? File "/usr/local/lib/python2.2/site-packages/dhm/strtools.py", line 80, in Tokenize raise TokenizeError, "Unexpected end of string in quoted text" dhm.strtools.TokenizeError: Unexecpted end of string in quoted text @param str: string to tokenize @type str: string @param whitespace: whitespace characters seperating tokens @type whitespace: string @param quotes: legal quoting characters @type quotes: string @param escapes: characters which can escape quoting characters @type escapes: string @return: list of tokens @rtype: sequence of strings """ (buffer, tokens, curtoken, quote)=(str, [], None, None) try: while buffer: if buffer[0]==quote: quote=None elif (quote==None) and (buffer[0] in quotes): quote=buffer[0] elif buffer[0] in whitespace: if quote!=None: curtoken+=buffer[0] else: tokens.append(curtoken) curtoken=None while buffer[1] in whitespace: buffer=buffer[1:] elif buffer[0] in escapes: if curtoken==None: curtoken=buffer[1] else: curtoken+=buffer[1] buffer=buffer[1:] else: if curtoken==None: curtoken=buffer[0] else: curtoken+=buffer[0] buffer=buffer[1:] except IndexError: raise TokenizeError, "Unexpected end of string" if quote: raise TokenizeError, "Unexpected end of string in quoted text" if curtoken!=None: tokens.append(curtoken) return tokens def QmarkToPyformat(query, params): """Convert from qmark to pyformat parameter style. The python DB-API 2.0 specifies four different possible parameter styles that can be used by drivers. This function converts from the qmark style to pyformat style. @param query: SQL query to transform @type query: string @param params: arguments to query @type params: sequence of strings @return: converted query and parameters @rtype: tuple with the new command and a dictionary of arguments """ tokens=Tokenize(query, quotes="'") output=[] count=1 for token in tokens: if token.endswith("?"): output.append(token[:-1] + "%%(param%d)s" % count) count+=1 elif token.endswith("?,") or token.endswith("?)"): ntoken = token[:-2] + "%%(param%d)s" % count ntoken += token[-1] output.append(ntoken) count+=1 else: output.append(token) dict={} count=1 for param in params: dict["param%d" % count]=param count+=1 return (" ".join(output), dict) def executeSQLPyFormat(cursor, query, params=None): """ Execute a python < 2.5 (external sqlite module) style query. @param cursor: A sqlite cursor @param query: The query to execute @param params: An optional list of parameters to the query """ if params is None: return cursor.execute(query) # Leading whitespace confuses QmarkToPyformat() query = query.strip() (q, p) = QmarkToPyformat(query, params) return cursor.execute(q, p) def executeSQLQmark(cursor, query, params=None): """ Execute a python 2.5 (sqlite3) style query. @param cursor: A sqlite cursor @param query: The query to execute @param params: An optional list of parameters to the query """ if params is None: return cursor.execute(query) return cursor.execute(query, params) if sqlite.version_info[0] > 1: executeSQL = executeSQLQmark else: executeSQL = executeSQLPyFormat def sql_esc(pattern): """ Apply SQLite escaping, if needed. Returns pattern and esc. """ esc = '' if "_" in pattern or "%" in pattern: esc = ' ESCAPE "!"' pattern = pattern.replace("!", "!!") pattern = pattern.replace("%", "!%") pattern = pattern.replace("_", "!_") return (pattern, esc) def sql_esc_glob(patterns): """ Converts patterns to SQL LIKE format, if required (or gives up if not possible). """ ret = [] for pattern in patterns: if '[' in pattern: # LIKE only has % and _, so [abc] can't be done. return [] # So Load everything # Convert to SQL LIKE format (pattern, esc) = sql_esc(pattern) pattern = pattern.replace("*", "%") pattern = pattern.replace("?", "_") ret.append((pattern, esc)) return ret yum-3.4.3/yum/comps.py0000775000076400007640000005044211602434452013643 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University import types import sys from constants import * 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 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): return BOOLEAN_STATES.get(strng.lower(), False) def parse_number(strng): return int(strng) class CompsObj(object): """ Group/Category helper object. """ # Could be the same as ui_name? def __str__(self): """ Return the "name" of the object for the C locale. """ return self.name @property def ui_name(self): """ Return the "name" of the object for the current locale. """ return self.nameByLang(get_my_lang_code()) @property def ui_description(self): """ Return the "description" of the object for the current locale. """ return self.descriptionByLang(get_my_lang_code()) def __cmp__(self, other): if other is None: return 1 if self.display_order > other.display_order: return 1 if self.display_order < other.display_order: return -1 return cmp(self.ui_name, other.ui_name) def _expand_languages(self, lang): import gettext languages = [lang] if 'C' not in languages: languages.append('C') # now normalize and expand the languages nelangs = [] for lang in languages: for nelang in gettext._expand_lang(lang): if nelang not in nelangs: nelangs.append(nelang) return nelangs def nameByLang(self, lang): for langcode in self._expand_languages(lang): if langcode in self.translated_name: return to_unicode(self.translated_name[langcode]) return to_unicode(self.name) def descriptionByLang(self, lang): for langcode in self._expand_languages(lang): if langcode in self.translated_description: return to_unicode(self.translated_description[langcode]) return to_unicode(self.description) class Group(CompsObj): """ Group object parsed from group data in each repo. and merged. """ def __init__(self, elem=None): self.user_visible = True self.default = False self.selected = False self.name = "" self.description = "" self.translated_name = {} self.translated_description = {} self.mandatory_packages = {} self.optional_packages = {} self.default_packages = {} self.conditional_packages = {} self.langonly = None ## what the hell is this? self.groupid = None self.display_order = 1024 self.installed = False self.toremove = False if elem: self.parse(elem) def _packageiter(self): # Gah, FIXME: real iterator/class lst = self.mandatory_packages.keys() + \ self.optional_packages.keys() + \ self.default_packages.keys() + \ self.conditional_packages.keys() return lst packages = property(_packageiter) def parse(self, elem): for child in elem: if child.tag == 'id': myid = child.text if self.groupid is not None: raise CompsException self.groupid = myid elif child.tag == 'name': text = child.text if text: text = text.encode('utf8') lang = child.attrib.get(lang_attr) if lang: self.translated_name[lang] = text else: self.name = text elif child.tag == 'description': text = child.text if text: text = text.encode('utf8') lang = child.attrib.get(lang_attr) if lang: self.translated_description[lang] = text else: if text: self.description = text elif child.tag == 'uservisible': self.user_visible = parse_boolean(child.text) elif child.tag == 'display_order': self.display_order = parse_number(child.text) elif child.tag == 'default': self.default = parse_boolean(child.text) elif child.tag in ['langonly', 'lang_only']: text = child.text if self.langonly is not None: raise CompsException self.langonly = text elif child.tag == 'packagelist': self.parse_package_list(child) def parse_package_list(self, packagelist_elem): for child in packagelist_elem: if child.tag == 'packagereq': genre = child.attrib.get('type') if not genre: genre = u'mandatory' if genre not in ('mandatory', 'default', 'optional', 'conditional'): # just ignore bad package lines continue package = child.text if genre == 'mandatory': self.mandatory_packages[package] = 1 elif genre == 'default': self.default_packages[package] = 1 elif genre == 'optional': self.optional_packages[package] = 1 elif genre == 'conditional': self.conditional_packages[package] = child.attrib.get('requires') def add(self, obj): """Add another group object to this object""" # we only need package lists and any translation that we don't already # have for pkg in obj.mandatory_packages: self.mandatory_packages[pkg] = 1 for pkg in obj.default_packages: self.default_packages[pkg] = 1 for pkg in obj.optional_packages: self.optional_packages[pkg] = 1 for pkg in obj.conditional_packages: self.conditional_packages[pkg] = obj.conditional_packages[pkg] # Handle cases where a comps.xml without name & decription tags # has been setup first, so the name & decription for this object is blank. if self.name == '' and obj.name != '': self.name = obj.name if self.description == '' and obj.description != '': self.description = obj.description # name and description translations for lang in obj.translated_name: if lang not in self.translated_name: self.translated_name[lang] = obj.translated_name[lang] for lang in obj.translated_description: if lang not in self.translated_description: self.translated_description[lang] = obj.translated_description[lang] def xml(self): """write out an xml stanza for the group object""" msg =""" %s %s %s %s\n""" % (self.groupid, str(self.default).lower(), str(self.user_visible).lower(), self.display_order) if self.langonly: msg += """ %s""" % self.langonly msg +=""" %s\n""" % self.name for (lang, val) in sorted(self.translated_name.items()): msg += """ %s\n""" % (lang, val) msg += """ %s\n""" % self.description for (lang, val) in sorted(self.translated_description.items()): msg += """ %s\n""" % (lang, val) msg += """ \n""" for pkg in sorted(self.mandatory_packages): msg += """ %s\n""" % pkg for pkg in sorted(self.default_packages): msg += """ %s\n""" % pkg for pkg in sorted(self.optional_packages): msg += """ %s\n""" % pkg for (pkg, req) in sorted(self.conditional_packages.items()): msg += """ %s\n""" % (req, pkg) msg += """ \n""" msg += """ """ return msg class Category(CompsObj): """ Category object parsed from group data in each repo. and merged. """ def __init__(self, elem=None): self.name = "" self.categoryid = None self.description = "" self.translated_name = {} self.translated_description = {} self.display_order = 1024 self._groups = {} if elem: self.parse(elem) def _groupiter(self): return self._groups.keys() groups = property(_groupiter) def parse(self, elem): for child in elem: if child.tag == 'id': myid = child.text if self.categoryid is not None: raise CompsException self.categoryid = myid elif child.tag == 'name': text = child.text if text: text = text.encode('utf8') lang = child.attrib.get(lang_attr) if lang: self.translated_name[lang] = text else: self.name = text elif child.tag == 'description': text = child.text if text: text = text.encode('utf8') lang = child.attrib.get(lang_attr) if lang: self.translated_description[lang] = text else: self.description = text elif child.tag == 'grouplist': self.parse_group_list(child) elif child.tag == 'display_order': self.display_order = parse_number(child.text) def parse_group_list(self, grouplist_elem): for child in grouplist_elem: if child.tag == 'groupid': groupid = child.text self._groups[groupid] = 1 def add(self, obj): """Add another category object to this object""" for grp in obj.groups: self._groups[grp] = 1 # name and description translations for lang in obj.translated_name: if lang not in self.translated_name: self.translated_name[lang] = obj.translated_name[lang] for lang in obj.translated_description: if lang not in self.translated_description: self.translated_description[lang] = obj.translated_description[lang] def xml(self): """write out an xml stanza for the category object""" msg =""" %s %s\n""" % (self.categoryid, self.display_order) msg +=""" %s\n""" % self.name for (lang, val) in self.translated_name.items(): msg += """ %s\n""" % (lang, val) msg += """ %s\n""" % self.description for (lang, val) in self.translated_description.items(): msg += """ %s\n""" % (lang, val) msg += """ \n""" for grp in self.groups: msg += """ %s\n""" % grp msg += """ \n""" msg += """ \n""" return msg class Comps(object): def __init__(self, overwrite_groups=False): self._groups = {} self._categories = {} self.compscount = 0 self.overwrite_groups = overwrite_groups self.compiled = False # have groups been compiled into avail/installed # lists, yet. def get_groups(self): grps = self._groups.values() grps.sort(key=lambda x: (x.display_order, x.name)) return grps def get_categories(self): cats = self._categories.values() cats.sort(key=lambda x: (x.display_order, x.name)) return cats groups = property(get_groups) categories = property(get_categories) def has_group(self, grpid): exists = self.return_groups(grpid) if exists: return True return False def return_group(self, grpid): """Return the first group which matches""" grps = self.return_groups(grpid) if grps: return grps[0] return None def return_groups(self, group_pattern, case_sensitive=False): """return all groups which match either by glob or exact match""" returns = {} for item in group_pattern.split(','): item = item.strip() if item in self._groups: thisgroup = self._groups[item] returns[thisgroup.groupid] = thisgroup continue if case_sensitive: match = re.compile(fnmatch.translate(item)).match else: match = re.compile(fnmatch.translate(item), flags=re.I).match done = False for group in self.groups: for name in group.name, group.groupid, group.ui_name: if match(name): done = True returns[group.groupid] = group break if done: continue # If we didn't match to anything in the current locale, try others for group in self.groups: for name in group.translated_name.values(): if match(name): returns[group.groupid] = group break return returns.values() # This is close to returnPackages() etc. API ... need to std. these names # the above return_groups uses different, but equal, API. def return_categories(self, pattern, ignore_case=True): """return all categories which match either by glob or exact match""" returns = {} for item in pattern.split(','): item = item.strip() if item in self._categories: cat = self._categories[item] returns[cat.categoryid] = cat continue if not ignore_case: match = re.compile(fnmatch.translate(item)).match else: match = re.compile(fnmatch.translate(item), flags=re.I).match done = False for cat in self.categories: for name in cat.name, cat.categoryid, cat.ui_name: if match(name): done = True returns[cat.categoryid] = cat break if done: continue for cat in self.categories: for name in cat.translated_name.values(): if match(name): returns[cat.categoryid] = cat break return returns.values() def add_group(self, group): 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 category.categoryid in self._categories: thatcat = self._categories[category.categoryid] thatcat.add(category) else: self._categories[category.categoryid] = category def add(self, srcfile = None): if not srcfile: raise CompsException if type(srcfile) in types.StringTypes: # srcfile is a filename string try: infile = open(srcfile, 'rt') except IOError, e: raise CompsException, 'open(%s): #%u %s' % (srcfile, e.errno, e.strerror) else: # srcfile is a file object infile = srcfile self.compscount += 1 self.compiled = False parser = iterparse(infile) try: for event, elem in parser: if elem.tag == "group": group = Group(elem) self.add_group(group) if elem.tag == "category": category = Category(elem) self.add_category(category) except SyntaxError, e: raise CompsException, "comps file is empty/damaged" del parser def compile(self, pkgtuplist): """ compile the groups into installed/available groups """ # convert the tuple list to a simple dict of pkgnames inst_pkg_names = {} for (n,a,e,v,r) in pkgtuplist: inst_pkg_names[n] = 1 for group in self.groups: # if there are mandatory packages in the group, then make sure # they're all installed. if any are missing, then the group # isn't installed. if len(group.mandatory_packages) > 0: group.installed = True for pkgname in group.mandatory_packages: if pkgname not in inst_pkg_names: group.installed = False break # if it doesn't have any of those then see if it has ANY of the # optional/default packages installed. # If so - then the group is installed else: check_pkgs = group.optional_packages.keys() + group.default_packages.keys() + group.conditional_packages.keys() group.installed = False for pkgname in check_pkgs: if pkgname in inst_pkg_names: group.installed = True break self.compiled = True def xml(self): """returns the xml of the comps files in this class, merged""" if not self._groups and not self._categories: return "" msg = """ """ for g in self.get_groups(): msg += g.xml() for c in self.get_categories(): msg += c.xml() msg += """\n\n""" return msg def main(): try: print sys.argv[1] p = Comps() for srcfile in sys.argv[1:]: p.add(srcfile) for group in p.groups: print group for pkg in group.packages: print ' ' + pkg for category in p.categories: print category.name for group in category.groups: print ' ' + group except IOError: print >> sys.stderr, "newcomps.py: No such file:\'%s\'" % sys.argv[1] sys.exit(1) if __name__ == '__main__': main() yum-3.4.3/yum/Errors.py0000664000076400007640000000722311602434452013772 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2004 Duke University """ Exceptions and Errors thrown by yum. """ from i18n import to_unicode class YumBaseError(Exception): """ Base Yum Error. All other Errors thrown by yum should inherit from this. """ def __init__(self, value=None): Exception.__init__(self) self.value = value def __str__(self): return "%s" %(self.value,) def __unicode__(self): return '%s' % to_unicode(self.value) class YumGPGCheckError(YumBaseError): pass class YumDownloadError(YumBaseError): pass class YumTestTransactionError(YumBaseError): pass 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, msg) self.errno = errno self.msg = msg self.pid = pid class DepError(YumBaseError): pass class RepoError(YumBaseError): pass class DuplicateRepoError(RepoError): pass class NoMoreMirrorsRepoError(RepoError): pass class ConfigError(YumBaseError): pass class MiscError(YumBaseError): pass class GroupsError(YumBaseError): pass class InstallError(YumBaseError): pass class UpdateError(YumBaseError): pass class RemoveError(YumBaseError): pass class ReinstallError(YumBaseError): pass class ReinstallRemoveError(ReinstallError): pass class ReinstallInstallError(ReinstallError): def __init__(self, value=None, failed_pkgs=[]): ReinstallError.__init__(self, value) self.failed_pkgs = failed_pkgs class DowngradeError(YumBaseError): pass class RepoMDError(YumBaseError): pass class PackageSackError(YumBaseError): pass class RpmDBError(YumBaseError): pass class CompsException(YumBaseError): pass class MediaError(YumBaseError): pass class PkgTagsError(YumBaseError): pass class YumDeprecationWarning(DeprecationWarning): """ Used to mark a method as deprecated. """ def __init__(self, value=None): DeprecationWarning.__init__(self, value) class YumFutureDeprecationWarning(YumDeprecationWarning): """ Used to mark a method as deprecated. Unlike YumDeprecationWarning, YumFutureDeprecationWarnings will not be shown on the console. """ def __init__(self, value=None): YumDeprecationWarning.__init__(self, value) yum-3.4.3/yum/update_md.py0000664000076400007640000004764211602434452014471 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University # # Seth Vidal # Luke Macken """ Update metadata (updateinfo.xml) parsing. """ import sys from yum.i18n import utf8_text_wrap, to_utf8, to_unicode from yum.yumRepo import YumRepository from yum.packages import FakeRepository from yum.misc import to_xml, decompress, repo_gen_decompress from yum.misc import cElementTree_iterparse as iterparse import Errors import rpmUtils.miscutils def safe_iterparse(filename): """ Works like iterparse, but hides XML errors (prints a warning). """ try: for event, elem in iterparse(filename): yield event, elem except SyntaxError: # Bad XML print >> sys.stderr, "File is not valid XML:", filename class UpdateNoticeException(Exception): """ An exception thrown for bad UpdateNotice data. """ pass class UpdateNotice(object): """ A single update notice (for instance, a security fix). """ def __init__(self, elem=None): self._md = { 'from' : '', 'type' : '', 'title' : '', 'release' : '', 'status' : '', 'version' : '', 'pushcount' : '', 'update_id' : '', 'issued' : '', 'updated' : '', 'description' : '', 'rights' : '', 'severity' : '', 'summary' : '', 'solution' : '', 'references' : [], 'pkglist' : [], 'reboot_suggested' : False } if elem: self._parse(elem) def __getitem__(self, item): """ Allows scriptable metadata access (ie: un['update_id']). """ return self._md.get(item) or None def __setitem__(self, item, val): self._md[item] = val def text(self, skip_data=('files', 'summary', 'rights', 'solution')): head = """ =============================================================================== %(title)s =============================================================================== Update ID : %(update_id)s Release : %(release)s Type : %(type)s Status : %(status)s Issued : %(issued)s """ % self._md if self._md['updated'] and self._md['updated'] != self._md['issued']: head += " Updated : %s" % self._md['updated'] # Add our bugzilla references bzs = filter(lambda r: r['type'] == 'bugzilla', self._md['references']) if len(bzs) and 'bugs' not in skip_data: buglist = " Bugs :" for bz in bzs: buglist += " %s%s\n\t :" % (bz['id'], 'title' in bz and ' - %s' % bz['title'] or '') head += buglist[: - 1].rstrip() + '\n' # Add our CVE references cves = filter(lambda r: r['type'] == 'cve', self._md['references']) if len(cves) and 'cves' not in skip_data: cvelist = " CVEs :" for cve in cves: cvelist += " %s\n\t :" % cve['id'] head += cvelist[: - 1].rstrip() + '\n' if self._md['summary'] and 'summary' not in skip_data: data = utf8_text_wrap(self._md['summary'], width=64, subsequent_indent=' ' * 12 + ': ') head += " Summary : %s\n" % '\n'.join(data) if self._md['description'] and 'description' not in skip_data: desc = utf8_text_wrap(self._md['description'], width=64, subsequent_indent=' ' * 12 + ': ') head += "Description : %s\n" % '\n'.join(desc) if self._md['solution'] and 'solution' not in skip_data: data = utf8_text_wrap(self._md['solution'], width=64, subsequent_indent=' ' * 12 + ': ') head += " Solution : %s\n" % '\n'.join(data) if self._md['rights'] and 'rights' not in skip_data: data = utf8_text_wrap(self._md['rights'], width=64, subsequent_indent=' ' * 12 + ': ') head += " Rights : %s\n" % '\n'.join(data) if self._md['severity'] and 'severity' not in skip_data: data = utf8_text_wrap(self._md['severity'], width=64, subsequent_indent=' ' * 12 + ': ') head += " Severity : %s\n" % '\n'.join(data) if 'files' in skip_data: return head[:-1] # chop the last '\n' # Get a list of arches we care about: #XXX ARCH CHANGE - what happens here if we set the arch - we need to # pass this in, perhaps arches = set(rpmUtils.arch.getArchList()) filelist = " Files :" for pkg in self._md['pkglist']: for file in pkg['packages']: if file['arch'] not in arches: continue filelist += " %s\n\t :" % file['filename'] head += filelist[: - 1].rstrip() return head def __str__(self): return to_utf8(self.text()) def __unicode__(self): return to_unicode(self.text()) def get_metadata(self): """ Return the metadata dict. """ return self._md def _parse(self, elem): """ Parse an update element:: """ if elem.tag == 'update': for attrib in ('from', 'type', 'status', 'version'): self._md[attrib] = elem.attrib.get(attrib) for child in elem: if child.tag == 'id': if not child.text: raise UpdateNoticeException("No id element found") self._md['update_id'] = child.text elif child.tag == 'pushcount': self._md['pushcount'] = child.text elif child.tag == 'issued': self._md['issued'] = child.attrib.get('date') elif child.tag == 'updated': self._md['updated'] = child.attrib.get('date') elif child.tag == 'references': self._parse_references(child) elif child.tag == 'description': self._md['description'] = child.text elif child.tag == 'rights': self._md['rights'] = child.text elif child.tag == 'severity': self._md[child.tag] = child.text elif child.tag == 'summary': self._md['summary'] = child.text elif child.tag == 'solution': self._md['solution'] = child.text elif child.tag == 'pkglist': self._parse_pkglist(child) elif child.tag == 'title': self._md['title'] = child.text elif child.tag == 'release': self._md['release'] = child.text else: raise UpdateNoticeException('No update element found') def _parse_references(self, elem): """ Parse the update references:: """ for reference in elem: if reference.tag == 'reference': data = {} for refattrib in ('id', 'href', 'type', 'title'): data[refattrib] = reference.attrib.get(refattrib) self._md['references'].append(data) else: raise UpdateNoticeException('No reference element found') def _parse_pkglist(self, elem): """ Parse the package list:: """ for collection in elem: data = { 'packages' : [] } if 'short' in collection.attrib: data['short'] = collection.attrib.get('short') for item in collection: if item.tag == 'name': data['name'] = item.text elif item.tag == 'package': data['packages'].append(self._parse_package(item)) self._md['pkglist'].append(data) def _parse_package(self, elem): """ Parse an individual package:: """ package = {} for pkgfield in ('arch', 'epoch', 'name', 'version', 'release', 'src'): package[pkgfield] = elem.attrib.get(pkgfield) # Bad epoch and arch data is the most common (missed) screwups. # Deal with bad epoch data. if not package['epoch'] or package['epoch'][0] not in '0123456789': package['epoch'] = None for child in elem: if child.tag == 'filename': package['filename'] = child.text elif child.tag == 'sum': package['sum'] = (child.attrib.get('type'), child.text) elif child.tag == 'reboot_suggested': self._md['reboot_suggested'] = True return package def xml(self): """Generate the xml for this update notice object""" msg = """ %s %s %s %s\n""" % (to_xml(self._md['from']), to_xml(self._md['status']), to_xml(self._md['type']), to_xml(self._md['version']), to_xml(self._md['update_id']), to_xml(self._md['title']), to_xml(self._md['release']), to_xml(self._md['issued'], attrib=True), to_xml(self._md['description'])) if self._md['summary']: msg += """ %s\n""" % (to_xml(self._md['summary'])) if self._md['solution']: msg += """ %s\n""" % (to_xml(self._md['solution'])) if self._md['rights']: msg += """ %s\n""" % (to_xml(self._md['rights'])) if self._md['severity']: msg += """ %s\n""" % (to_xml(self._md['severity'])) if self._md['references']: msg += """ \n""" for ref in self._md['references']: if ref['title']: msg += """ \n""" % ( to_xml(ref['href'], attrib=True), to_xml(ref['id'], attrib=True), to_xml(ref['title'], attrib=True), to_xml(ref['type'], attrib=True)) else: msg += """ \n""" % ( to_xml(ref['href'], attrib=True), to_xml(ref['id'], attrib=True), to_xml(ref['type'], attrib=True)) msg += """ \n""" if self._md['pkglist']: msg += """ \n""" for coll in self._md['pkglist']: msg += """ \n %s\n""" % ( to_xml(coll['short'], attrib=True), to_xml(coll['name'])) for pkg in coll['packages']: msg += """ %s \n""" % (to_xml(pkg['arch'], attrib=True), to_xml(pkg['name'], attrib=True), to_xml(pkg['release'], attrib=True), to_xml(pkg['src'], attrib=True), to_xml(pkg['version'], attrib=True), to_xml(pkg['filename'])) msg += """ \n""" msg += """ \n""" msg += """\n""" return msg def _rpm_tup_vercmp(tup1, tup2): """ Compare two "std." tuples, (n, a, e, v, r). """ return rpmUtils.miscutils.compareEVR((tup1[2], tup1[3], tup1[4]), (tup2[2], tup2[3], tup2[4])) class UpdateMetadata(object): """ The root update metadata object. """ def __init__(self, repos=[]): self._notices = {} self._cache = {} # a pkg nvr => notice cache for quick lookups self._no_cache = {} # a pkg name only => notice list self._repos = [] # list of repo ids that we've parsed for repo in repos: try: # attempt to grab the updateinfo.xml.gz from the repodata self.add(repo) except Errors.RepoMDError: continue # No metadata found for this repo def get_notices(self, name=None): """ Return all notices. """ if name is None: return self._notices.values() return name in self._no_cache and self._no_cache[name] or [] notices = property(get_notices) def get_notice(self, nvr): """ Retrieve an update notice for a given (name, version, release) string or tuple. """ if type(nvr) in (type([]), type(())): nvr = '-'.join(nvr) 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: [(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] arch = oldpkgtup[1] ret = [] for notice in self.get_notices(name): for upkg in notice['pkglist']: for pkg in upkg['packages']: if pkg['name'] != name or pkg['arch'] != arch: continue pkgtup = (pkg['name'], pkg['arch'], pkg['epoch'] or '0', pkg['version'], pkg['release']) if _rpm_tup_vercmp(pkgtup, oldpkgtup) <= 0: continue ret.append((pkgtup, notice)) ret.sort(cmp=_rpm_tup_vercmp, key=lambda x: x[0], reverse=True) return ret def add_notice(self, un): """ Add an UpdateNotice object. This should be fully populated with data, esp. update_id and pkglist/packages. """ if not un or not un["update_id"] or un['update_id'] in self._notices: return self._notices[un['update_id']] = un for pkg in un['pkglist']: for filedata in pkg['packages']: self._cache['%s-%s-%s' % (filedata['name'], filedata['version'], filedata['release'])] = un no = self._no_cache.setdefault(filedata['name'], set()) no.add(un) def add(self, obj, mdtype='updateinfo'): """ Parse a metadata from a given YumRepository, file, or filename. """ if not obj: raise UpdateNoticeException if type(obj) in (type(''), type(u'')): unfile = decompress(obj) infile = open(unfile, 'rt') 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() unfile = repo_gen_decompress(md, 'updateinfo.xml') infile = open(unfile, 'rt') elif isinstance(obj, FakeRepository): raise Errors.RepoMDError, "No updateinfo for local pkg" else: # obj is a file object infile = obj for event, elem in safe_iterparse(infile): if elem.tag == 'update': try: un = UpdateNotice(elem) except UpdateNoticeException, e: print >> sys.stderr, "An update notice is broken, skipping." # what else should we do? continue self.add_notice(un) def __unicode__(self): ret = u'' for notice in self.notices: ret += unicode(notice) return ret def __str__(self): return to_utf8(self.__unicode__()) def xml(self, fileobj=None): msg = """\n""" if fileobj: fileobj.write(msg) for notice in self._notices.values(): if fileobj: fileobj.write(notice.xml()) else: msg += notice.xml() end = """\n""" if fileobj: fileobj.write(end) else: msg += end if fileobj: return return msg def main(): """ update_md test function. """ import yum.misc yum.misc.setup_locale() def usage(): print >> sys.stderr, "Usage: %s ..." % sys.argv[0] sys.exit(1) if len(sys.argv) < 2: usage() try: print sys.argv[1] um = UpdateMetadata() for srcfile in sys.argv[1:]: um.add(srcfile) print unicode(um) except IOError: print >> sys.stderr, "%s: No such file:\'%s\'" % (sys.argv[0], sys.argv[1:]) usage() if __name__ == '__main__': main() yum-3.4.3/yum/repoMDObject.py0000775000076400007640000002322711602434452015040 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2006 Duke University from yum.misc import cElementTree_iterparse as iterparse from Errors import RepoMDError import sys import types from misc import AutoFileChecksums, to_xml def ns_cleanup(qn): if qn.find('}') == -1: return qn return qn.split('}')[1] class RepoData: """represents anything beneath a tag""" 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 self.timestamp = None self.dbversion = None self.size = None self.opensize = None if elem: self.parse(elem) def parse(self, elem): for child in elem: child_name = ns_cleanup(child.tag) if child_name == 'location': relative = child.attrib.get('href') base = child.attrib.get('base') self.location = (base, relative) elif child_name == 'checksum': csum_value = child.text csum_type = child.attrib.get('type') self.checksum = (csum_type,csum_value) elif child_name == 'open-checksum': csum_value = child.text csum_type = child.attrib.get('type') self.openchecksum = (csum_type, csum_value) elif child_name == 'timestamp': self.timestamp = child.text elif child_name == 'database_version': self.dbversion = child.text elif child_name == 'size': self.size = child.text elif child_name == 'open-size': self.opensize = child.text def dump_xml(self): msg = "" top = """\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\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 = """ \n""" % to_xml(val[1], attrib=True) if val[0]: loc = """ \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\n""" % (xmlname, to_xml(val), xmlname) msg += d_xml bottom = """\n""" msg += bottom return msg class RepoMD: """represents the repomd xml file""" def __init__(self, repoid, srcfile=None): """takes a repoid and a filename for the repomd.xml""" self.timestamp = 0 self.repoid = repoid self.repoData = {} self.checksums = {} self.length = 0 self.revision = None 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: infile = open(srcfile, 'rt') except IOError: raise RepoMDError, "Unable to open %s" %(srcfile,) else: # srcfile is a file object infile = srcfile # We trust any of these to mean the repomd.xml is valid. infile = AutoFileChecksums(infile, ['sha256', 'sha512'], ignore_missing=True, ignore_none=True) parser = iterparse(infile) try: for event, elem in parser: elem_name = ns_cleanup(elem.tag) if elem_name == "data": thisdata = RepoData(elem=elem) self.repoData[thisdata.type] = thisdata try: nts = int(thisdata.timestamp) if nts > self.timestamp: # max() not in old python self.timestamp = nts except: pass elif elem_name == "revision": self.revision = elem.text elif elem_name == "tags": for child in elem: child_name = ns_cleanup(child.tag) if child_name == 'content': self.tags['content'].add(child.text) if child_name == 'distro': cpeid = child.attrib.get('cpeid', '') distro = self.tags['distro'].setdefault(cpeid,set()) distro.add(child.text) self.checksums = infile.checksums.hexdigests() self.length = len(infile.checksums) except SyntaxError, e: raise RepoMDError, "Damaged repomd.xml file" def fileTypes(self): """return list of metadata file types available""" return self.repoData.keys() def getData(self, type): if type in self.repoData: return self.repoData[type] else: raise RepoMDError, "requested datatype %s not available" % type def dump(self): """dump fun output""" print "file timestamp: %s" % self.timestamp print "file length : %s" % self.length for csum in sorted(self.checksums): print "file checksum : %s/%s" % (csum, self.checksums[csum]) if self.revision is not None: print 'revision: %s' % self.revision if self.tags['content']: print 'tags content: %s' % ", ".join(sorted(self.tags['content'])) if self.tags['distro']: for distro in sorted(self.tags['distro']): print 'tags distro: %s' % distro tags = self.tags['distro'][distro] print ' tags: %s' % ", ".join(sorted(tags)) print '\n---- Data ----' for ft in sorted(self.fileTypes()): thisdata = self.repoData[ft] print ' datatype: %s' % thisdata.type print ' location : %s %s' % thisdata.location print ' timestamp : %s' % thisdata.timestamp print ' size : %s' % thisdata.size print ' open size : %s' % thisdata.opensize print ' checksum : %s - %s' % thisdata.checksum print ' open checksum: %s - %s' % thisdata.openchecksum print ' dbversion : %s' % thisdata.dbversion print '' def dump_xml(self): msg = "" top = """ \n""" msg += top if self.revision: rev = """ %s\n""" % to_xml(self.revision) msg += rev if self.tags['content'] or self.tags['distro'] or self.tags['repo']: tags = """ \n""" for item in self.tags['content']: tag = """ %s\n""" % (to_xml(item)) tags += tag for item in self.tags['repo']: tag = """ %s\n""" % (to_xml(item)) tags += tag for (cpeid, item) in self.tags['distro']: itemlist = list(item) # frellingsets. if cpeid: tag = """ %s\n""" % ( to_xml(cpeid, attrib=True), to_xml(itemlist[0])) else: tag = """ %s\n""" % (to_xml(itemlist[0])) tags += tag tags += """ \n""" msg += tags for md in self.repoData.values(): msg += md.dump_xml() msg += """\n""" return msg def main(): try: print "file : %s" % sys.argv[1] p = RepoMD('repoid', sys.argv[1]) p.dump() except IOError: print >> sys.stderr, "newcomps.py: No such file:\'%s\'" % sys.argv[1] sys.exit(1) if __name__ == '__main__': main() yum-3.4.3/yum/repos.py0000664000076400007640000003053511602434452013650 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2004 Duke University import re import fnmatch import types import logging import misc import Errors from packageSack import MetaSack from weakref import proxy as weakref class _wrap_ayum_getKeyForRepo: """ This is a wrapper for calling YumBase.getKeyForRepo() because otherwise we take a real reference through the bound method and that is d00m (this applies to YumBase and RepoStorage, hence why we have a seperate class). A "better" fix might be to explicitly pass the YumBase instance to the callback ... API change! """ def __init__(self, ayum, ca=False): self.ayum = weakref(ayum) self.ca = ca def __call__(self, repo, callback=None): if self.ca: return self.ayum.getCAKeyForRepo(repo, callback) return self.ayum.getKeyForRepo(repo, callback) class RepoStorage: """This class contains multiple repositories and core configuration data about them.""" def __init__(self, ayum): self.repos = {} # list of repos by repoid pointing a repo object # of repo options/misc data self.callback = None # progress callback used for populateSack() for importing the xml files self.cache = 0 self.pkgSack = MetaSack() self.logger = logging.getLogger("yum.RepoStorage") self._setup = False self.ayum = weakref(ayum) # callbacks for handling gpg key imports for repomd.xml sig checks # need to be set from outside of the repos object to do anything # even quasi-useful # defaults to what is probably sane-ish self.gpg_import_func = _wrap_ayum_getKeyForRepo(ayum) self.gpgca_import_func = _wrap_ayum_getKeyForRepo(ayum, ca=True) self.confirm_func = None # This allow listEnabled() to be O(1) most of the time. self._cache_enabled_repos = [] self.quick_enable_disable = {} def doSetup(self, thisrepo = None): self.ayum.plugins.run('prereposetup') if thisrepo is None: repos = self.listEnabled() else: repos = self.findRepos(thisrepo) if len(repos) < 1: self.logger.debug('No Repositories Available to Set Up') 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, gpgca_import_func = self.gpgca_import_func) # if we come back from setup NOT enabled then mark as disabled # so nothing else touches us if not repo.enabled: self.disableRepo(repo.id) self._setup = True self.ayum.plugins.run('postreposetup') def __str__(self): return str(self.repos.keys()) def __del__(self): self.close() def close(self): for repo in self.repos.values(): repo.close() def add(self, repoobj): if repoobj.id in self.repos: raise Errors.DuplicateRepoError, 'Repository %s is listed more than once in the configuration' % (repoobj.id) self.repos[repoobj.id] = repoobj if hasattr(repoobj, 'quick_enable_disable'): self.quick_enable_disable.update(repoobj.quick_enable_disable) repoobj.quick_enable_disable = self.quick_enable_disable else: self._cache_enabled_repos = None # At least pulp reuses RepoStorage but doesn't have a "real" YumBase() # so we can't guarantee new YumBase() attrs. exist. if not hasattr(self.ayum, '_override_sigchecks'): repoobj._override_sigchecks = False else: repoobj._override_sigchecks = self.ayum._override_sigchecks def delete(self, repoid): if repoid in self.repos: thisrepo = self.repos[repoid] thisrepo.close() del self.repos[repoid] def sort(self): repolist = self.repos.values() repolist.sort() return repolist def getRepo(self, repoid): try: return self.repos[repoid] except KeyError, e: raise Errors.RepoError, \ 'Error getting repository data for %s, repository not found' % (repoid) def findRepos(self,pattern): """find all repositories matching fnmatch `pattern`""" result = [] for item in pattern.split(','): item = item.strip() match = re.compile(fnmatch.translate(item)).match for name,repo in self.repos.items(): if match(name): result.append(repo) return result def disableRepo(self, repoid): """disable a repository from use fnmatch wildcards may be used to disable a group of repositories. returns repoid of disabled repos as list """ repos = [] if misc.re_glob(repoid) or repoid.find(',') != -1: for repo in self.findRepos(repoid): repos.append(repo.id) repo.disable() else: thisrepo = self.getRepo(repoid) repos.append(thisrepo.id) thisrepo.disable() return repos def enableRepo(self, repoid): """enable a repository for use fnmatch wildcards may be used to enable a group of repositories. returns repoid of enables repos as list """ repos = [] if misc.re_glob(repoid) or repoid.find(',') != -1: for repo in self.findRepos(repoid): repos.append(repo.id) repo.enable() else: thisrepo = self.getRepo(repoid) repos.append(thisrepo.id) thisrepo.enable() return repos def listEnabled(self): """return list of enabled repo objects""" if (self._cache_enabled_repos is not None and not self.quick_enable_disable): return self._cache_enabled_repos returnlist = [] for repo in self.repos.values(): if repo.isEnabled(): returnlist.append(repo) returnlist.sort() if self._cache_enabled_repos is not None: self._cache_enabled_repos = returnlist self.quick_enable_disable.clear() return returnlist def listGroupsEnabled(self): """return a list of repo objects that have groups enabled""" returnlist = [] for repo in self.listEnabled(): if repo.enablegroups: returnlist.append(repo) return returnlist def setCache(self, cacheval): """sets cache value in all repos""" self.cache = cacheval for repo in self.repos.values(): repo.cache = cacheval def setCacheDir(self, cachedir): """sets the cachedir value in all repos""" self._cachedir = cachedir for repo in self.repos.values(): repo.old_base_cache_dir = repo.basecachedir repo.basecachedir = cachedir def setProgressBar(self, obj): """sets the progress bar for downloading files from repos""" for repo in self.repos.values(): repo.setCallback(obj) def setFailureCallback(self, obj): """sets the failure callback for all repos""" for repo in self.repos.values(): repo.setFailureObj(obj) def setMirrorFailureCallback(self, obj): """sets the failure callback for all mirrors""" for repo in self.repos.values(): repo.setMirrorFailureObj(obj) def setInterruptCallback(self, callback): for repo in self.repos.values(): repo.setInterruptCallback(callback) def getPackageSack(self): return self.pkgSack def populateSack(self, which='enabled', mdtype='metadata', callback=None, cacheonly=0): """ This populates the package sack from the repositories, two optional arguments: - which='repoid, enabled, all' - mdtype='metadata, filelists, otherdata, all' """ if not self._setup: self.doSetup() if not callback: callback = self.callback myrepos = [] if which == 'enabled': myrepos = self.listEnabled() elif which == 'all': myrepos = self.repos.values() else: if type(which) == types.ListType: for repo in which: if isinstance(repo, Repository): myrepos.append(repo) else: repobj = self.getRepo(repo) myrepos.append(repobj) elif type(which) == types.StringType: repobj = self.getRepo(which) myrepos.append(repobj) if mdtype == 'all': data = ['metadata', 'filelists', 'otherdata'] else: data = [ mdtype ] for repo in myrepos: sack = repo.getPackageSack() try: sack.populate(repo, mdtype, callback, cacheonly) except Errors.RepoError, e: if mdtype in ['all', 'metadata'] and repo.skip_if_unavailable: self.disableRepo(repo.id) else: raise else: self.pkgSack.addSack(repo.id, sack) class Repository: """this is an actual repository object""" def __init__(self, repoid): self.id = repoid self.quick_enable_disable = {} self.disable() self._xml2sqlite_local = False def __cmp__(self, other): """ Sort base class repos. by alphanumeric on their id, also see __cmp__ in YumRepository(). """ if self.id > other.id: return 1 elif self.id < other.id: return -1 else: return 0 def __str__(self): return self.id def __hash__(self): return hash(self.id) def __del__(self): self.close() def close(self): pass def setAttribute(self, key, value): """sets a generic attribute of this repository""" setattr(self, key, value) def getAttribute(self, key): return getattr(self, key, None) def isEnabled(self): enabled = self.getAttribute('enabled') return enabled is not None and enabled def enable(self): self.setAttribute('enabled', 1) self.quick_enable_disable[self.id] = True def disable(self): self.setAttribute('enabled', 0) self.quick_enable_disable[self.id] = False def getExcludePkgList(self): excludeList = self.getAttribute('exclude') return excludeList or [] def getIncludePkgList(self): includeList = self.getAttribute('includepkgs') return includeList or [] # Abstract interface def ready(self): raise NotImplementedError() def getGroupLocation(self): raise NotImplementedError() def getPackageSack(self): raise NotImplementedError() def setup(self, cache): raise NotImplementedError() def setCallback(self, callback): raise NotImplementedError() def setFailureObj(self, obj): raise NotImplementedError() def setMirrorFailureObj(self, obj): raise NotImplementedError() def getPackage(self, package, checkfunc = None, text = None, cache = True): raise NotImplementedError() def getHeader(self, package, checkfunc = None, reget = 'simple', cache = True): raise NotImplementedError() yum-3.4.3/yum/misc.py0000664000076400007640000011057411602434452013455 0ustar jamesjames#! /usr/bin/python -tt """ Assorted utility functions for yum. """ import types import os import os.path from cStringIO import StringIO import base64 import struct import re import errno import Errors import constants import pgpmsg import tempfile import glob import pwd import fnmatch import bz2 import gzip import shutil _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: import gpgme import gpgme.editutil except ImportError: gpgme = None try: import hashlib _available_checksums = set(['md5', 'sha1', 'sha256', 'sha384', 'sha512']) _default_checksums = ['sha256'] except ImportError: # Python-2.4.z ... gah! import sha import md5 _available_checksums = set(['md5', 'sha1']) _default_checksums = ['sha1'] class hashlib: @staticmethod def new(algo): if algo == 'md5': return md5.new() if algo == 'sha1': return sha.new() raise ValueError, "Bad checksum type" from Errors import MiscError # These are API things, so we can't remove them even if they aren't used here. # pylint: disable-msg=W0611 from i18n import to_utf8, to_unicode # pylint: enable-msg=W0611 _share_data_store = {} _share_data_store_u = {} def share_data(value): """ Take a value and use the same value from the store, if the value isn't in the store this one becomes the shared version. """ # We don't want to change the types of strings, between str <=> unicode # and hash('a') == hash(u'a') ... so use different stores. # In theory eventaully we'll have all of one type, but don't hold breath. store = _share_data_store if isinstance(value, unicode): store = _share_data_store_u # hahahah, of course the above means that: # hash(('a', 'b')) == hash((u'a', u'b')) # ...which we have in deptuples, so just screw sharing those atm. if type(value) == types.TupleType: return value return store.setdefault(value, value) def unshare_data(): global _share_data_store global _share_data_store_u _share_data_store = {} _share_data_store_u = {} _re_compiled_glob_match = None def re_glob(s): """ Tests if a string is a shell wildcard. """ # TODO/FIXME maybe consider checking if it is a stringsType before going on - otherwise # returning None global _re_compiled_glob_match if _re_compiled_glob_match is None: _re_compiled_glob_match = re.compile('[*?]|\[.+\]').search return _re_compiled_glob_match(s) _re_compiled_filename_match = None def re_filename(s): """ Tests if a string could be a filename. We still get negated character classes wrong (are they supported), and ranges in character classes. """ global _re_compiled_filename_match if _re_compiled_filename_match is None: _re_compiled_filename_match = re.compile('[/*?]|\[[^]]*/[^]]*\]').match return _re_compiled_filename_match(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). 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. Note that this is a subset of re_primary_filename(). """ if 'bin/' in dirname: return True if dirname.startswith('/etc/'): return True return False _re_compiled_full_match = None def re_full_search_needed(s): """ Tests if a string needs a full nevra match, instead of just name. """ global _re_compiled_full_match if _re_compiled_full_match is None: # A glob, or a "." or "-" separator, followed by something (the ".") one = re.compile('.*([-.*?]|\[.+\]).').match # Any epoch, for envra two = re.compile('[0-9]+:').match _re_compiled_full_match = (one, two) for rec in _re_compiled_full_match: if rec(s): return True return False def re_remote_url(s): """ Tests if a string is a "remote" URL, http, https, ftp. """ s = s.lower() if s.startswith("http://"): return True if s.startswith("https://"): return True if s.startswith("ftp://"): return True return False ########### # Title: Remove duplicates from a sequence # Submitter: Tim Peters # From: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560 def unique(s): """Return a list of the elements in s, but without duplicates. For example, unique([1,2,3,1,2,3]) is some permutation of [1,2,3], unique("abcabc") some permutation of ["a", "b", "c"], and unique(([1, 2], [2, 3], [1, 2])) some permutation of [[2, 3], [1, 2]]. For best speed, all sequence elements should be hashable. Then unique() will usually work in linear time. If not possible, the sequence elements should enjoy a total ordering, and if list(s).sort() doesn't raise TypeError it's assumed that they do enjoy a total ordering. Then unique() will usually work in O(N*log2(N)) time. If that's not possible either, the sequence elements must support equality-testing. Then unique() will usually work in quadratic time. """ n = len(s) if n == 0: return [] # Try using a set first, as that's the fastest and will usually # work. If it doesn't work, it will usually fail quickly, so it # usually doesn't cost much to *try* it. It requires that all the # sequence elements be hashable, and support equality comparison. try: u = set(s) except TypeError: pass else: return list(u) # We can't hash all the elements. Second fastest is to sort, # which brings the equal elements together; then duplicates are # easy to weed out in a single pass. # NOTE: Python's list.sort() was designed to be efficient in the # presence of many duplicate elements. This isn't true of all # sort functions in all languages or libraries, so this approach # is more effective in Python than it may be elsewhere. try: t = list(s) t.sort() except TypeError: del t # move on to the next method else: assert n > 0 last = t[0] lasti = i = 1 while i < n: if t[i] != last: t[lasti] = last = t[i] lasti += 1 i += 1 return t[:lasti] # Brute force is all that's left. u = [] for x in s: if x not in u: u.append(x) return u class Checksums: """ Generate checksum(s), on given pieces of data. Producing the Length and the result(s) when complete. """ def __init__(self, checksums=None, ignore_missing=False, ignore_none=False): if checksums is None: checksums = _default_checksums self._sumalgos = [] self._sumtypes = [] self._len = 0 done = set() for sumtype in checksums: if sumtype == 'sha': sumtype = 'sha1' if sumtype in done: continue if sumtype in _available_checksums: sumalgo = hashlib.new(sumtype) elif ignore_missing: continue else: raise MiscError, 'Error Checksumming, bad checksum type %s' % sumtype done.add(sumtype) self._sumtypes.append(sumtype) self._sumalgos.append(sumalgo) if not done and not ignore_none: raise MiscError, 'Error Checksumming, no valid checksum type' def __len__(self): return self._len # Note that len(x) is assert limited to INT_MAX, which is 2GB on i686. length = property(fget=lambda self: self._len) def update(self, data): self._len += len(data) for sumalgo in self._sumalgos: sumalgo.update(data) def read(self, fo, size=2**16): data = fo.read(size) self.update(data) return data def hexdigests(self): ret = {} for sumtype, sumdata in zip(self._sumtypes, self._sumalgos): ret[sumtype] = sumdata.hexdigest() return ret def hexdigest(self, checksum=None): if checksum is None: if not self._sumtypes: return None checksum = self._sumtypes[0] if checksum == 'sha': checksum = 'sha1' return self.hexdigests()[checksum] def digests(self): ret = {} for sumtype, sumdata in zip(self._sumtypes, self._sumalgos): ret[sumtype] = sumdata.digest() return ret def digest(self, checksum=None): if checksum is None: if not self._sumtypes: return None checksum = self._sumtypes[0] if checksum == 'sha': checksum = 'sha1' return self.digests()[checksum] class AutoFileChecksums: """ Generate checksum(s), on given file/fileobject. Pretending to be a file object (overrrides read). """ def __init__(self, fo, checksums, ignore_missing=False, ignore_none=False): self._fo = fo self.checksums = Checksums(checksums, ignore_missing, ignore_none) def __getattr__(self, attr): return getattr(self._fo, attr) def read(self, size=-1): return self.checksums.read(self._fo, size) def checksum(sumtype, file, CHUNK=2**16, datasize=None): """takes filename, hand back Checksum of it sumtype = md5 or sha/sha1/sha256/sha512 (note sha == sha1) filename = /path/to/file CHUNK=65536 by default""" # chunking brazenly lifted from Ryan Tomayko try: if type(file) not in types.StringTypes: fo = file # assume it's a file-like-object else: fo = open(file, 'r', CHUNK) data = Checksums([sumtype]) while data.read(fo, CHUNK): if datasize is not None and data.length > datasize: break if type(file) is types.StringType: fo.close() del fo # This screws up the length, but that shouldn't matter. We only care # if this checksum == what we expect. if datasize is not None and datasize != data.length: return '!%u!%s' % (datasize, data.hexdigest(sumtype)) return data.hexdigest(sumtype) except (IOError, OSError), e: raise MiscError, 'Error opening file for checksum: %s' % file def getFileList(path, ext, filelist): """Return all files in path matching ext, store them in filelist, recurse dirs return list object""" extlen = len(ext) try: dir_list = os.listdir(path) except OSError, e: raise MiscError, ('Error accessing directory %s, %s') % (path, e) for d in dir_list: if os.path.isdir(path + '/' + d): filelist = getFileList(path + '/' + d, ext, filelist) else: if not ext or d[-extlen:].lower() == '%s' % (ext): newpath = os.path.normpath(path + '/' + d) filelist.append(newpath) return filelist class GenericHolder: """Generic Holder class used to hold other objects of known types It exists purely to be able to do object.somestuff, object.someotherstuff or object[key] and pass object to another function that will understand it""" def __init__(self, iter=None): self.__iter = iter def __iter__(self): if self.__iter is not None: return iter(self[self.__iter]) def __getitem__(self, item): if hasattr(self, item): return getattr(self, item) else: raise KeyError, item def procgpgkey(rawkey): '''Convert ASCII armoured GPG key to binary ''' # TODO: CRC checking? (will RPM do this anyway?) # Normalise newlines rawkey = re.sub('\r\n?', '\n', rawkey) # Extract block block = StringIO() inblock = 0 pastheaders = 0 for line in rawkey.split('\n'): if line.startswith('-----BEGIN PGP PUBLIC KEY BLOCK-----'): inblock = 1 elif inblock and line.strip() == '': pastheaders = 1 elif inblock and line.startswith('-----END PGP PUBLIC KEY BLOCK-----'): # Hit the end of the block, get out break elif pastheaders and line.startswith('='): # Hit the CRC line, don't include this and stop break elif pastheaders: block.write(line+'\n') # Decode and return return base64.decodestring(block.getvalue()) def getgpgkeyinfo(rawkey, multiple=False): '''Return a dict of info for the given ASCII armoured key text Returned dict will have the following keys: 'userid', 'keyid', 'timestamp' Will raise ValueError if there was a problem decoding the key. ''' # Catch all exceptions as there can be quite a variety raised by this call key_info_objs = [] try: keys = pgpmsg.decode_multiple_keys(rawkey) except Exception, e: raise ValueError(str(e)) if len(keys) == 0: raise ValueError('No key found in given key data') for key in keys: keyid_blob = key.public_key.key_id() info = { 'userid': key.user_id, 'keyid': struct.unpack('>Q', keyid_blob)[0], 'timestamp': key.public_key.timestamp, 'fingerprint' : key.public_key.fingerprint, 'raw_key' : key.raw_key, 'has_sig' : False, 'valid_sig': False, } # Retrieve the timestamp from the matching signature packet # (this is what RPM appears to do) for userid in key.user_ids[0]: if not isinstance(userid, pgpmsg.signature): continue if userid.key_id() == keyid_blob: # Get the creation time sub-packet if available if hasattr(userid, 'hashed_subpaks'): tspkt = \ userid.get_hashed_subpak(pgpmsg.SIG_SUB_TYPE_CREATE_TIME) if tspkt != None: info['timestamp'] = int(tspkt[1]) break key_info_objs.append(info) if multiple: return key_info_objs else: return key_info_objs[0] def keyIdToRPMVer(keyid): '''Convert an integer representing a GPG key ID to the hex version string used by RPM ''' return "%08x" % (keyid & 0xffffffffL) def keyInstalled(ts, keyid, timestamp): ''' Return if the GPG key described by the given keyid and timestamp are installed in the rpmdb. The keyid and timestamp should both be passed as integers. The ts is an rpm transaction set object Return values: - -1 key is not installed - 0 key with matching ID and timestamp is installed - 1 key with matching ID is installed but has a older timestamp - 2 key with matching ID is installed but has a newer timestamp No effort is made to handle duplicates. The first matching keyid is used to calculate the return result. ''' # Convert key id to 'RPM' form keyid = keyIdToRPMVer(keyid) # Search for hdr in ts.dbMatch('name', 'gpg-pubkey'): if hdr['version'] == keyid: installedts = int(hdr['release'], 16) if installedts == timestamp: return 0 elif installedts < timestamp: return 1 else: return 2 return -1 def import_key_to_pubring(rawkey, keyid, cachedir=None, gpgdir=None, make_ro_copy=True): # FIXME - cachedir can be removed from this method when we break api if gpgme is None: return False if not gpgdir: gpgdir = '%s/gpgdir' % cachedir if not os.path.exists(gpgdir): os.makedirs(gpgdir) key_fo = StringIO(rawkey) os.environ['GNUPGHOME'] = gpgdir # import the key ctx = gpgme.Context() fp = open(os.path.join(gpgdir, 'gpg.conf'), 'wb') fp.write('') fp.close() ctx.import_(key_fo) key_fo.close() # ultimately trust the key or pygpgme is definitionally stupid k = ctx.get_key(keyid) gpgme.editutil.edit_trust(ctx, k, gpgme.VALIDITY_ULTIMATE) if make_ro_copy: rodir = gpgdir + '-ro' if not os.path.exists(rodir): os.makedirs(rodir, mode=0755) for f in glob.glob(gpgdir + '/*'): basename = os.path.basename(f) ro_f = rodir + '/' + basename shutil.copy(f, ro_f) os.chmod(ro_f, 0755) fp = open(rodir + '/gpg.conf', 'w', 0755) # yes it is this stupid, why do you ask? opts="""lock-never no-auto-check-trustdb trust-model direct no-expensive-trust-checks no-permission-warning preserve-permissions """ fp.write(opts) fp.close() return True def return_keyids_from_pubring(gpgdir): if gpgme is None or not os.path.exists(gpgdir): return [] os.environ['GNUPGHOME'] = gpgdir ctx = gpgme.Context() keyids = [] for k in ctx.keylist(): for subkey in k.subkeys: if subkey.can_sign: keyids.append(subkey.keyid) return keyids def valid_detached_sig(sig_file, signed_file, gpghome=None): """takes signature , file that was signed and an optional gpghomedir""" if gpgme is None: return False if gpghome: if not os.path.exists(gpghome): return False os.environ['GNUPGHOME'] = gpghome if hasattr(sig_file, 'read'): sig = sig_file else: sig = open(sig_file, 'r') if hasattr(signed_file, 'read'): signed_text = signed_file else: signed_text = open(signed_file, 'r') plaintext = None ctx = gpgme.Context() try: sigs = ctx.verify(sig, signed_text, plaintext) except gpgme.GpgmeError, e: return False else: if not sigs: return False # is there ever a case where we care about a sig beyond the first one? thissig = sigs[0] if not thissig: return False if thissig.validity in (gpgme.VALIDITY_FULL, gpgme.VALIDITY_MARGINAL, gpgme.VALIDITY_ULTIMATE): return True return False def getCacheDir(tmpdir='/var/tmp', reuse=True, prefix='yum-'): """return a path to a valid and safe cachedir - only used when not running as root or when --tempcache is set""" uid = os.geteuid() try: usertup = pwd.getpwuid(uid) username = usertup[0] except KeyError: return None # if it returns None then, well, it's bollocksed if reuse: # check for /var/tmp/yum-username-* - prefix = '%s%s-' % (prefix, username) dirpath = '%s/%s*' % (tmpdir, prefix) cachedirs = sorted(glob.glob(dirpath)) for thisdir in cachedirs: stats = os.lstat(thisdir) if S_ISDIR(stats[0]) and S_IMODE(stats[0]) == 448 and stats[4] == uid: return thisdir # make the dir (tempfile.mkdtemp()) cachedir = tempfile.mkdtemp(prefix=prefix, dir=tmpdir) return cachedir def sortPkgObj(pkg1 ,pkg2): """sorts a list of yum package objects by name""" if pkg1.name > pkg2.name: return 1 elif pkg1.name == pkg2.name: return 0 else: return -1 def newestInList(pkgs): """ Return the newest in the list of packages. """ ret = [ pkgs.pop() ] newest = ret[0] for pkg in pkgs: if pkg.verGT(newest): ret = [ pkg ] newest = pkg elif pkg.verEQ(newest): ret.append(pkg) return ret def version_tuple_to_string(evrTuple): """ Convert a tuple representing a package version to a string. @param evrTuple: A 3-tuple of epoch, version, and release. Return the string representation of evrTuple. """ (e, v, r) = evrTuple s = "" if e not in [0, '0', None]: s += '%s:' % e if v is not None: s += '%s' % v if r is not None: s += '-%s' % r return s def prco_tuple_to_string(prcoTuple): """returns a text string of the prco from the tuple format""" (name, flag, evr) = prcoTuple flags = {'GT':'>', 'GE':'>=', 'EQ':'=', 'LT':'<', 'LE':'<='} if flag is None: return name return '%s %s %s' % (name, flags[flag], version_tuple_to_string(evr)) def string_to_prco_tuple(prcoString): """returns a prco tuple (name, flags, (e, v, r)) for a string""" if type(prcoString) == types.TupleType: (n, f, v) = prcoString else: n = prcoString f = v = None # We love GPG keys as packages, esp. awesome provides like: # gpg(Fedora (13) ) 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: n, f, v = prco_split # now we have 'n, f, v' where f and v could be None and None if f is not None and f not in constants.LETTERFLAGS: if f not in constants.SYMBOLFLAGS: try: f = flagToString(int(f)) except (ValueError,TypeError), e: raise Errors.MiscError, 'Invalid version flag: %s' % f else: f = constants.SYMBOLFLAGS[f] if type(v) in (types.StringType, types.NoneType, types.UnicodeType): (prco_e, prco_v, prco_r) = stringToVersion(v) elif type(v) in (types.TupleType, types.ListType): (prco_e, prco_v, prco_r) = v #now we have (n, f, (e, v, r)) for the thing specified return (n, f, (prco_e, prco_v, prco_r)) def refineSearchPattern(arg): """Takes a search string from the cli for Search or Provides and cleans it up so it doesn't make us vomit""" if re.search('[*{}?+]|\[.+\]', arg): restring = fnmatch.translate(arg) else: 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') destination = open(dest, 'w') while True: try: data = s_fn.read(1024000) except IOError: break if not data: break try: destination.write(data) except (OSError, IOError), e: msg = "Error writing to file %s: %s" % (dest, str(e)) raise Errors.MiscError, msg 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).""" ver = os.uname()[2] # we glob for the file that MIGHT have this kernel # and then look up the file in our rpmdb. fns = sorted(glob.glob('/boot/vmlinuz*%s*' % ver)) for fn in fns: mi = ts.dbMatch('basenames', fn) for h in mi: e = h['epoch'] if h['epoch'] is None: e = '0' return (h['name'], h['arch'], e, h['version'], h['release']) return (None, None, None, None, None) def get_running_kernel_version_release(ts): """This takes the output of uname and figures out the (version, release) tuple for the running kernel.""" pkgtup = get_running_kernel_pkgtup(ts) if pkgtup[0] is not None: return (pkgtup[3], pkgtup[4]) return (None, None) def find_unfinished_transactions(yumlibpath='/var/lib/yum'): """returns a list of the timestamps from the filenames of the unfinished transactions remaining in the yumlibpath specified. """ timestamps = [] tsallg = '%s/%s' % (yumlibpath, 'transaction-all*') tsdoneg = '%s/%s' % (yumlibpath, 'transaction-done*') tsalls = glob.glob(tsallg) tsdones = glob.glob(tsdoneg) for fn in tsalls: if fn.endswith('disabled'): continue trans = os.path.basename(fn) timestamp = trans.replace('transaction-all.','') timestamps.append(timestamp) timestamps.sort() return timestamps def find_ts_remaining(timestamp, yumlibpath='/var/lib/yum'): """this function takes the timestamp of the transaction to look at and the path to the yum lib dir (defaults to /var/lib/yum) returns a list of tuples(action, pkgspec) for the unfinished transaction elements. Returns an empty list if none. """ to_complete_items = [] tsallpath = '%s/%s.%s' % (yumlibpath, 'transaction-all', timestamp) tsdonepath = '%s/%s.%s' % (yumlibpath,'transaction-done', timestamp) tsdone_items = [] if not os.path.exists(tsallpath): # something is wrong, here, probably need to raise _something_ return to_complete_items if os.path.exists(tsdonepath): tsdone_fo = open(tsdonepath, 'r') tsdone_items = tsdone_fo.readlines() tsdone_fo.close() tsall_fo = open(tsallpath, 'r') tsall_items = tsall_fo.readlines() tsall_fo.close() for item in tsdone_items: # this probably shouldn't happen but it's worth catching anyway if item not in tsall_items: continue tsall_items.remove(item) for item in tsall_items: item = item.replace('\n', '') if item == '': continue 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 def seq_max_split(seq, max_entries): """ Given a seq, split into a list of lists of length max_entries each. """ ret = [] num = len(seq) seq = list(seq) # Trying to use a set/etc. here is bad beg = 0 while num > max_entries: end = beg + max_entries ret.append(seq[beg:end]) beg += max_entries num -= max_entries ret.append(seq[beg:]) return ret def _ugly_utf8_string_hack(item): """hands back a unicoded string""" # this is backward compat for handling non-utf8 filenames # and content inside packages. :( # content that xml can cope with but isn't really kosher # if we're anything obvious - do them first if item is None: return '' elif isinstance(item, unicode): return item # this handles any bogon formats we see du = False try: x = unicode(item, 'ascii') du = True except UnicodeError: encodings = ['utf-8', 'iso-8859-1', 'iso-8859-15', 'iso-8859-2'] for enc in encodings: try: x = unicode(item, enc) except UnicodeError: pass else: if x.encode(enc) == item: if enc != 'utf-8': print '\n%s encoding on %s\n' % (enc, item) return x.encode('utf-8') # Kill bytes (or libxml will die) not in the small byte portion of: # http://www.w3.org/TR/REC-xml/#NT-Char # we allow high bytes, if it passed the utf8 check above. Eg. # good chars = #x9 | #xA | #xD | [#x20-...] newitem = '' bad_small_bytes = range(0, 8) + [11, 12] + range(14, 32) for char in item: if ord(char) in bad_small_bytes: pass # Just ignore these bytes... elif not du and ord(char) > 127: newitem = newitem + '?' # byte by byte equiv of escape else: newitem = newitem + char return newitem __cached_saxutils = None def to_xml(item, attrib=False): 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 = __cached_saxutils.escape(item, entities={'"':"""}) else: item = __cached_saxutils.escape(item) return item def unlink_f(filename): """ Call os.unlink, but don't die if the file isn't there. This is the main difference between "rm -f" and plain "rm". """ try: os.unlink(filename) except OSError, e: if e.errno != errno.ENOENT: raise 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 not in (errno.ENOENT, errno.ENOTDIR): 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 # importing all of the audit module. And it doesn't work anyway: BZ 518721 try: fo = open("/proc/self/loginuid") except IOError: return None data = fo.read() try: return int(data) 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 def setup_locale(override_codecs=True, override_time=False): # This test needs to be before locale.getpreferredencoding() as that # does setlocale(LC_CTYPE, "") try: locale.setlocale(locale.LC_ALL, '') # set time to C so that we output sane things in the logs (#433091) if override_time: locale.setlocale(locale.LC_TIME, 'C') except locale.Error, e: # default to C locale if we get a failure. print >> sys.stderr, 'Failed to set locale, defaulting to C' os.environ['LC_ALL'] = 'C' locale.setlocale(locale.LC_ALL, 'C') if override_codecs: import codecs sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout) sys.stdout.errors = 'replace' def get_my_lang_code(): try: mylang = locale.getlocale(locale.LC_MESSAGES) except ValueError, e: # This is RHEL-5 python crack, Eg. en_IN can't be parsed properly mylang = (None, None) if mylang == (None, None): # odd :) mylang = 'C' else: mylang = '.'.join(mylang) return mylang def return_running_pids(): """return list of running processids, excluding this one""" mypid = os.getpid() pids = [] for fn in glob.glob('/proc/[0123456789]*'): if mypid == os.path.basename(fn): continue pids.append(os.path.basename(fn)) return pids def get_open_files(pid): """returns files open from this pid""" files = [] maps_f = '/proc/%s/maps' % pid try: maps = open(maps_f, 'r') except (IOError, OSError), e: return files for line in maps: if line.find('fd:') == -1: continue line = line.replace('\n', '') slash = line.find('/') filename = line[slash:] filename = filename.replace('(deleted)', '') #only mildly retarded filename = filename.strip() if filename not in files: files.append(filename) cli_f = '/proc/%s/cmdline' % pid try: cli = open(cli_f, 'r') except (IOError, OSError), e: return files cmdline = cli.read() if cmdline.find('\00') != -1: cmds = cmdline.split('\00') for i in cmds: if i.startswith('/'): files.append(i) return files def get_uuid(savepath): """create, store and return a uuid. If a stored one exists, report that if it cannot be stored, return a random one""" if os.path.exists(savepath): return open(savepath, 'r').read() else: try: from uuid import uuid4 except ImportError: myid = open('/proc/sys/kernel/random/uuid', 'r').read() else: myid = str(uuid4()) try: sf = open(savepath, 'w') sf.write(myid) sf.flush() sf.close() except (IOError, OSError), e: pass return myid def decompress(filename, dest=None, fn_only=False, check_timestamps=False): """take a filename and decompress it into the same relative location. if the file is not compressed just return the file""" out = dest if not dest: out = filename if filename.endswith('.gz'): ztype='gz' if not dest: out = filename.replace('.gz', '') 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: if check_timestamps: fi = stat_f(filename) fo = stat_f(out) if fi and fo and fo.st_mtime > fi.st_mtime: return out _decompress_chunked(filename, out, ztype) return out def repo_gen_decompress(filename, generated_name, cached=False): """ This is a wrapper around decompress, where we work out a cached generated name, and use check_timestamps. filename _must_ be from a repo. and generated_name is the type of the file. """ dest = os.path.dirname(filename) dest += '/gen' if not os.path.exists(dest): os.makedirs(dest, mode=0755) dest += '/' + generated_name return decompress(filename, dest=dest, check_timestamps=True,fn_only=cached) def read_in_items_from_dot_dir(thisglob, line_as_list=True): """takes a glob of a dir (like /etc/foo.d/*.foo) 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) yum-3.4.3/yum/depsolve.py0000664000076400007640000016700211602434452014341 0ustar jamesjames#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University """ Dependency resolution module for yum. """ import os.path import types import logging import rpmUtils.transaction 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 from constants import * import packages import logginglevels import Errors import warnings warnings.simplefilter("ignore", Errors.YumFutureDeprecationWarning) from yum import _, _rpm_ver_atleast try: assert max(2, 4) == 4 except: # Python-2.4.x doesn't have min/max ... *sigh* def min(x, *args): for y in args: if x > y: x = y return x def max(x, *args): for y in args: if x < y: x = y return x flags = {"GT": rpm.RPMSENSE_GREATER, "GE": rpm.RPMSENSE_EQUAL | rpm.RPMSENSE_GREATER, "LT": rpm.RPMSENSE_LESS, "LE": rpm.RPMSENSE_LESS | rpm.RPMSENSE_EQUAL, "EQ": rpm.RPMSENSE_EQUAL, None: 0 } class Depsolve(object): """ Dependency resolving class. """ def __init__(self): self._ts = None self._tsInfo = None self.dsCallback = None # Callback-style switch, default to legacy (hdr, file) mode self.use_txmbr_in_callback = False self.logger = logging.getLogger("yum.Depsolve") self.verbose_logger = logging.getLogger("yum.verbose.Depsolve") self.path = [] self.loops = [] self.installedFileRequires = None self.installedUnresolvedFileRequires = None def doTsSetup(self): warnings.warn(_('doTsSetup() will go away in a future version of Yum.\n'), Errors.YumFutureDeprecationWarning, stacklevel=2) return self._getTs() def _getTs(self, remove_only=False): """setup all the transaction set storage items we'll need This can't happen in __init__ b/c we don't know our installroot yet""" if self._tsInfo != None and self._ts != None: if not remove_only and self._tsInfo.pkgSack is None: self._tsInfo.setDatabases(self.rpmdb, self.pkgSack) return if not self.conf.installroot: raise Errors.YumBaseError, _('Setting up TransactionSets before config class is up') self._getTsInfo(remove_only) self.initActionTs() def _getTsInfo(self, remove_only=False): """ remove_only param. says if we are going to do _only_ remove(s) in the transaction. If so we don't need to setup the remote repos. """ if self._tsInfo is None: self._tsInfo = self._transactionDataFactory() if remove_only: pkgSack = None else: pkgSack = self.pkgSack self._tsInfo.setDatabases(self.rpmdb, pkgSack) self._tsInfo.installonlypkgs = self.conf.installonlypkgs # this kinda sucks # this REALLY sucks, sadly (needed for group conditionals) self._tsInfo.install_method = self.install self._tsInfo.update_method = self.update self._tsInfo.remove_method = self.remove return self._tsInfo def _setTsInfo(self, value): self._tsInfo = value def _delTsInfo(self): self._tsInfo = None def _getActionTs(self): if not self._ts: self.initActionTs() return self._ts def initActionTs(self): """sets up the ts we'll use for all the work""" self._ts = rpmUtils.transaction.TransactionWrapper(self.conf.installroot) ts_flags_to_rpm = { 'noscripts': rpm.RPMTRANS_FLAG_NOSCRIPTS, 'notriggers': rpm.RPMTRANS_FLAG_NOTRIGGERS, 'nodocs': rpm.RPMTRANS_FLAG_NODOCS, '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. for flag in self.conf.tsflags: if flag in ts_flags_to_rpm: self._ts.addTsFlag(ts_flags_to_rpm[flag]) else: self.logger.critical(_('Invalid tsflag in config file: %s'), flag) probfilter = 0 for flag in self.tsInfo.probFilterFlags: probfilter |= flag self._ts.setProbFilter(probfilter) def whatProvides(self, name, flags, version): """searches the packageSacks for what provides the arguments returns a ListPackageSack of providing packages, possibly empty""" self.verbose_logger.log(logginglevels.DEBUG_1, _('Searching pkgSack for dep: %s'), name) defSack = ListPackageSack(self.pkgSack.searchProvides((name, flags, version))) return defSack def allowedMultipleInstalls(self, po): """takes a packageObject, returns 1 or 0 depending on if the package should/can be installed multiple times with different vers like kernels and kernel modules, for example""" iopkgs = set(self.conf.installonlypkgs) if po.name in iopkgs: return True for prov in po.provides_names: if prov in iopkgs: return True return False def populateTs(self, test=0, keepold=1): """take transactionData class and populate transaction set""" if self.dsCallback: self.dsCallback.transactionPopulation() ts_elem = {} if self.ts.ts is None: self.initActionTs() if keepold: for te in self.ts: epoch = te.E() if epoch is None: epoch = '0' pkginfo = (te.N(), te.A(), epoch, te.V(), te.R()) if te.Type() == 1: mode = 'i' elif te.Type() == 2: mode = 'e' ts_elem[(pkginfo, mode)] = 1 for txmbr in self.tsInfo.getMembers(): self.verbose_logger.log(logginglevels.DEBUG_3, _('Member: %s'), txmbr) if txmbr.ts_state in ['u', 'i']: if (txmbr.pkgtup, 'i') in ts_elem: continue rpmfile = txmbr.po.localPkg() if os.path.exists(rpmfile): hdr = txmbr.po.returnHeaderFromPackage() else: self.downloadHeader(txmbr.po) hdr = txmbr.po.returnLocalHeader() if txmbr.ts_state == 'u': if self.allowedMultipleInstalls(txmbr.po): self.verbose_logger.log(logginglevels.DEBUG_2, _('%s converted to install'), txmbr.po) txmbr.ts_state = 'i' txmbr.output_state = TS_INSTALL # New-style callback with just txmbr instead of full headers? if self.use_txmbr_in_callback: cbkey = txmbr else: cbkey = (hdr, rpmfile) self.ts.addInstall(hdr, cbkey, txmbr.ts_state) self.verbose_logger.log(logginglevels.DEBUG_1, _('Adding Package %s in mode %s'), txmbr.po, 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: if txmbr.downgraded_by: continue self.dsCallback.pkgAdded(txmbr.pkgtup, 'e') self.verbose_logger.log(logginglevels.DEBUG_1, _('Removing Package %s'), txmbr.po) def _dscb_procReq(self, po, niceformatneed): """ Call the callback for processing requires, call the nicest one available. """ if not self.dsCallback: return if hasattr(self.dsCallback, 'procReqPo'): self.dsCallback.procReqPo(po, niceformatneed) else: self.dsCallback.procReq(po.name, niceformatneed) def _processReq(self, po, requirement): """processes a Requires dep from the resolveDeps functions, returns a tuple of (CheckDeps, missingdep, conflicts, errors) the last item is an array of error messages""" errormsgs = [] needname, flags, needversion = requirement niceformatneed = rpmUtils.miscutils.formatRequire(needname, needversion, flags) self.verbose_logger.log(logginglevels.DEBUG_1, _('%s requires: %s'), po, niceformatneed) self._dscb_procReq(po, niceformatneed) try: if po.repo.id != "installed": CheckDeps, missingdep = self._requiringFromTransaction(po, requirement, errormsgs) else: CheckDeps, missingdep = self._requiringFromInstalled(po, requirement, errormsgs) # Check packages with problems if missingdep: self.po_with_problems.add((po,self._working_po,errormsgs[-1])) except Errors.DepError,e: # FIXME: This is a hack, it don't solve the problem # of tries to update to a package the have been removed from the # pkgSack because of dep problems. # The real solution is to remove the package from the updates, when # it is remove from the pkgSack self.po_with_problems.add((po,self._working_po,str(e))) CheckDeps = 1 missingdep = 0 return (CheckDeps, missingdep, errormsgs) @staticmethod def _prco_req_nfv2req(rn, rf, rv): return (rn, flags[rf], version_tuple_to_string(rv)) def _prco_req2req(self, req): return self._prco_req_nfv2req(req[0], req[1], req[2]) def _err_missing_requires(self, reqPo, reqTup): if hasattr(self.dsCallback, 'format_missing_requires'): msg = self.dsCallback.format_missing_requires(reqPo, reqTup) if msg is not None: # PK return self.dsCallback.format_missing_requires(reqPo, reqTup) (needname, needflags, needversion) = reqTup ui_req = rpmUtils.miscutils.formatRequire(needname, needversion, needflags) return _('%s requires %s') % (reqPo, ui_req) def _requiringFromInstalled(self, requiringPo, requirement, errorlist): """processes the dependency resolution for a dep where the requiring package is installed""" checkdeps = 0 missingdep = 0 if self.tsInfo.getMembersWithState(requiringPo.pkgtup, TS_REMOVE_STATES): return checkdeps, missingdep name, arch, epoch, ver, rel = requiringPo.pkgtup needname, needflags, needversion = requirement niceformatneed = rpmUtils.miscutils.formatRequire(needname, needversion, needflags) # we must first find out why the requirement is no longer there # we must find out what provides/provided it from the rpmdb (if anything) # then check to see if that thing is being acted upon by the transaction set # if it is then we need to find out what is being done to it and act accordingly needmode = None # mode in the transaction of the needed pkg (if any) needpo = None providers = [] if (needname, needflags, needversion) in self.cheaterlookup: self.verbose_logger.log(logginglevels.DEBUG_2, _('Needed Require has already been looked up, cheating')) cheater_po = self.cheaterlookup[(needname, needflags, needversion)] providers = [cheater_po] elif self.rpmdb.contains(name=needname): txmbrs = self.tsInfo.matchNaevr(name=needname) for txmbr in txmbrs: providers.append(txmbr.po) else: self.verbose_logger.log(logginglevels.DEBUG_2, _('Needed Require is not a package name. Looking up: %s'), niceformatneed) providers = self.rpmdb.getProvides(needname, needflags, needversion) for inst_po in providers: self._working_po = inst_po # store the last provider inst_str = '%s.%s %s:%s-%s' % inst_po.pkgtup (i_n, i_a, i_e, i_v, i_r) = inst_po.pkgtup self.verbose_logger.log(logginglevels.DEBUG_2, _('Potential Provider: %s'), inst_str) thismode = self.tsInfo.getMode(name=i_n, arch=i_a, epoch=i_e, ver=i_v, rel=i_r) if thismode is None and i_n in self.conf.exactarchlist: # check for mode by the same name+arch thismode = self.tsInfo.getMode(name=i_n, arch=i_a) if thismode is None and i_n not in self.conf.exactarchlist: # check for mode by just the name thismode = self.tsInfo.getMode(name=i_n) # if this package is being obsoleted, it's just like if it's # being upgraded as far as checking for other providers if thismode is None: if filter(lambda x: x.obsoleted_by, self.tsInfo.matchNaevr(i_n, i_a, i_e, i_v, i_r)): thismode = 'u' if thismode is not None: needmode = thismode self.cheaterlookup[(needname, needflags, needversion)] = inst_po self.verbose_logger.log(logginglevels.DEBUG_2, _('Mode is %s for provider of %s: %s'), needmode, niceformatneed, inst_str) break self.verbose_logger.log(logginglevels.DEBUG_2, _('Mode for pkg providing %s: %s'), niceformatneed, needmode) if needmode in ['ud']: # the thing it needs is being updated or obsoleted away # try to update the requiring package in hopes that all this problem goes away :( self.verbose_logger.log(logginglevels.DEBUG_2, _('Trying to update %s to resolve dep'), requiringPo) # if the required pkg was updated, not obsoleted, then try to # only update the requiring po origobs = self.conf.obsoletes self.conf.obsoletes = 0 txmbrs = self.update(po=requiringPo, requiringPo=requiringPo) self.conf.obsoletes = origobs if not txmbrs: txmbrs = self.update(po=requiringPo, requiringPo=requiringPo) if not txmbrs: msg = self._err_missing_requires(requiringPo, requirement) self.verbose_logger.log(logginglevels.DEBUG_2, _('No update paths found for %s. Failure!'), requiringPo) return self._requiringFromTransaction(requiringPo, requirement, errorlist) checkdeps = 1 if needmode in ['od']: # the thing it needs is being updated or obsoleted away # try to update the requiring package in hopes that all this problem goes away :( self.verbose_logger.log(logginglevels.DEBUG_2, _('Trying to update %s to resolve dep'), requiringPo) txmbrs = self.update(po=requiringPo, requiringPo=requiringPo) if not txmbrs: msg = self._err_missing_requires(requiringPo, requirement) self.verbose_logger.log(logginglevels.DEBUG_2, _('No update paths found for %s. Failure!'), requiringPo) return self._requiringFromTransaction(requiringPo, requirement, errorlist) checkdeps = 1 if needmode in ['e']: self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: %s package requiring %s marked as erase'), requiringPo, needname) txmbrs = self.remove(po=requiringPo) for txmbr in txmbrs: txmbr.setAsDep(po=inst_po) checkdeps = 1 if needmode in ['i', 'u']: newupdates = self.update(name=name, epoch=epoch, version=ver, release=rel, requiringPo=requiringPo) txmbrs = self.tsInfo.getMembersWithState(requiringPo.pkgtup, TS_REMOVE_STATES) if newupdates and txmbrs: if txmbrs[0].output_state == TS_OBSOLETED: self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: Obsoleting %s with %s to resolve dep.'), requiringPo, txmbrs[0].obsoleted_by[0]) else: self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: Updating %s to resolve dep.'), requiringPo) # If the requirement is still there, try and solve it again # so we don't lose it for pkg in txmbrs[0].updated_by: if requirement in map(self._prco_req2req, pkg.returnPrco('requires')): return True, missingdep + self._requiringFromTransaction(pkg, requirement, errorlist)[1] checkdeps = True return checkdeps, missingdep self.verbose_logger.log(logginglevels.DEBUG_2, _('Cannot find an update path for dep for: %s'), niceformatneed) return self._requiringFromTransaction(requiringPo, requirement, errorlist) if needmode is None: reqpkg = (name, ver, rel, None) if self.pkgSack is None: return self._requiringFromTransaction(requiringPo, requirement, errorlist) else: msg = self._err_missing_requires(requiringPo, requirement) self.verbose_logger.log(logginglevels.DEBUG_2, msg) checkdeps = 0 missingdep = 1 errorlist.append(msg) return checkdeps, missingdep def _quickWhatProvides(self, name, flags, version): if self._last_req is None: return False if flags == 0: flags = None if type(version) in (types.StringType, types.NoneType, types.UnicodeType): (r_e, r_v, r_r) = rpmUtils.miscutils.stringToVersion(version) elif type(version) in (types.TupleType, types.ListType): # would this ever be a ListType? (r_e, r_v, r_r) = version # Quick lookup, lots of reqs for one pkg: po = self._last_req if po.checkPrco('provides', (name, flags, (r_e, r_v, r_r))): self.verbose_logger.debug(_('Quick matched %s to require for %s'), po, name) return True return False def _requiringFromTransaction(self, requiringPo, requirement, errorlist): """processes the dependency resolution for a dep where requiring package is in the transaction set""" (name, arch, epoch, version, release) = requiringPo.pkgtup (needname, needflags, needversion) = requirement checkdeps = 0 missingdep = 0 upgraded = {} #~ - if it's not available from some repository: #~ - mark as unresolveable. # #~ - if it's available from some repo: #~ - if there is an another version of the package currently installed then # - if the other version is marked in the transaction set # - if it's marked as erase # - mark the dep as unresolveable # - if it's marked as update or install # - check if the version for this requirement: # - if it is higher # - mark this version to be updated/installed # - remove the other version from the transaction set # - tell the transaction set to be rebuilt # - if it is lower # - mark the dep as unresolveable # - if they are the same # - be confused but continue if self._quickWhatProvides(needname, needflags, needversion): return checkdeps, missingdep provSack = self.whatProvides(needname, needflags, needversion) # get rid of things that are already in the rpmdb - b/c it's pointless to use them here for pkg in provSack.returnPackages(): if self.rpmdb.contains(po=pkg): # is it already installed? self.verbose_logger.log(logginglevels.DEBUG_2, _('%s is in providing packages but it is already installed, removing.'), pkg) provSack.delPackage(pkg) continue # we need to check to see, if we have anything similar to it (name-wise) # installed or in the ts, and this isn't a package that allows multiple installs # then if it's newer, fine - continue on, if not, then we're unresolveable # cite it and exit tspkgs = [] if not self.allowedMultipleInstalls(pkg): # from ts tspkgs = self.tsInfo.matchNaevr(name=pkg.name) for tspkg in tspkgs: if not canCoinstall(pkg.arch, tspkg.po.arch): # a comparable arch if tspkg.po.verGT(pkg): msg = _('Potential resolving package %s has newer instance in ts.') % pkg self.verbose_logger.log(logginglevels.DEBUG_2, msg) provSack.delPackage(pkg) continue elif tspkg.po.verLT(pkg): upgraded.setdefault(pkg.pkgtup, []).append(tspkg.pkgtup) # from rpmdb dbpkgs = self.rpmdb.searchNevra(name=pkg.name) for dbpkg in dbpkgs: if dbpkg.verGT(pkg) and not canCoinstall(pkg.arch, dbpkg.arch): msg = _('Potential resolving package %s has newer instance installed.') % pkg self.verbose_logger.log(logginglevels.DEBUG_2, msg) provSack.delPackage(pkg) continue if len(provSack) == 0: # unresolveable missingdep = 1 msg = self._err_missing_requires(requiringPo, requirement) errorlist.append(msg) return checkdeps, missingdep # iterate the provSack briefly, if we find the package is already in the # tsInfo then just skip this run for pkg in provSack.returnPackages(): (n,a,e,v,r) = pkg.pkgtup pkgmode = self.tsInfo.getMode(name=n, arch=a, epoch=e, ver=v, rel=r) if pkgmode in ['i', 'u']: self.verbose_logger.log(logginglevels.DEBUG_2, _('%s already in ts, skipping this one'), pkg) self._last_req = pkg return checkdeps, missingdep # find the best one # try updating the already install pkgs results = [] for pkg in provSack.returnNewestByName(): 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 self._last_req = pkg return checkdeps, missingdep pkgs = provSack.returnPackages() if len(pkgs) == 1: # Minor opt. best = pkgs[0] else: # Always do compare providers for multiple pkgs, it deals with # newest etc. ... so no need to do NewestNameArch() ... and it # stops compare_providers from being clever. pkgresults = self._compare_providers(pkgs, requiringPo) best = pkgresults[0][0] if self.rpmdb.contains(po=best): # is it already installed? missingdep = 1 checkdeps = 0 msg = self._err_missing_requires(requiringPo, requirement) errorlist.append(msg) 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) if len(inst) > 0: self.verbose_logger.debug(_('TSINFO: Marking %s as update for %s') %(best, requiringPo)) # FIXME: we should probably handle updating multiple packages... 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) 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 def _dscb_procConflict(self, po, niceformatneed): """ Call the callback for processing requires, call the nicest one available. """ if not self.dsCallback: return if hasattr(self.dsCallback, 'procConflictPo'): self.dsCallback.procConflictPo(po, niceformatneed) else: self.dsCallback.procConflict(po.name, niceformatneed) def _processConflict(self, po, conflict, conflicting_po): """processes a Conflict dep from the resolveDeps() method""" CheckDeps = True errormsgs = [] needname, flags, needversion = conflict (name, arch, epoch, ver, rel) = po.pkgtup niceformatneed = rpmUtils.miscutils.formatRequire(needname, needversion, flags) self._dscb_procConflict(po, niceformatneed) length = len(self.tsInfo) if flags & rpm.RPMSENSE_LESS: self.update(name=conflicting_po.name) txmbrs = self.tsInfo.getMembersWithState(conflicting_po.pkgtup, TS_REMOVE_STATES) if len(self.tsInfo) != length and txmbrs: return CheckDeps, errormsgs elif flags & rpm.RPMSENSE_GREATER: self.update(name=name) txmbrs = self.tsInfo.getMembersWithState(po.pkgtup, TS_REMOVE_STATES) if len(self.tsInfo) != length and txmbrs: return CheckDeps, errormsgs self.update(name=conflicting_po.name) txmbrs = self.tsInfo.getMembersWithState(conflicting_po.pkgtup, TS_REMOVE_STATES) if len(self.tsInfo) != length and txmbrs: return CheckDeps, errormsgs self.update(name=name) txmbrs = self.tsInfo.getMembersWithState(po.pkgtup, TS_REMOVE_STATES) if len(self.tsInfo) != length and txmbrs: return CheckDeps, errormsgs msg = '%s conflicts with %s' % (name, str(conflicting_po)) errormsgs.append(msg) self.verbose_logger.log(logginglevels.DEBUG_1, msg) CheckDeps = False # report the conflicting po, so skip-broken can remove it self.po_with_problems.add((po,conflicting_po,errormsgs[-1])) return CheckDeps, errormsgs def _undoDepInstalls(self): # clean up after ourselves in the case of failures for txmbr in self.tsInfo: if txmbr.isDep: self.tsInfo.remove(txmbr.pkgtup) def prof_resolveDeps(self): fn = "anaconda.prof.0" import hotshot, hotshot.stats prof = hotshot.Profile(fn) rc = prof.runcall(self.resolveDeps) prof.close() print "done running depcheck" stats = hotshot.stats.load(fn) stats.strip_dirs() stats.sort_stats('time', 'calls') stats.print_stats(20) return rc def cprof_resolveDeps(self): import cProfile, pstats prof = cProfile.Profile() rc = prof.runcall(self.resolveDeps) prof.dump_stats("yumprof") print "done running depcheck" p = pstats.Stats('yumprof') p.strip_dirs() p.sort_stats('time') p.print_stats(20) return rc def resolveDeps(self, full_check=True, skipping_broken=False): if not len(self.tsInfo): return (0, [_('Success - empty transaction')]) self.po_with_problems = set() self._working_po = None self._last_req = None self.tsInfo.resetResolved(hard=False) CheckDeps = True CheckRemoves = full_check CheckInstalls = full_check missingdep = 0 errors = [] if self.dsCallback: self.dsCallback.start() while True: CheckDeps = True # check Requires while CheckDeps: self.cheaterlookup = {} if self.dsCallback: self.dsCallback.tscheck() CheckDeps, checkinstalls, checkremoves, missing = self._resolveRequires(errors) CheckInstalls |= checkinstalls CheckRemoves |= checkremoves # check global FileRequires self._working_po = None # reset the working po if CheckRemoves: CheckRemoves = False for po, dep in self._checkFileRequires(): (checkdep, missing, errormsgs) = self._processReq(po, dep) CheckDeps |= checkdep errors += errormsgs if CheckDeps: if self.dsCallback: self.dsCallback.restartLoop() self.verbose_logger.log(logginglevels.DEBUG_1, _('Restarting Loop')) continue # check Conflicts self._working_po = None # reset the working po if CheckInstalls: CheckInstalls = False for conflict in self._checkConflicts(): (checkdep, errormsgs) = self._processConflict(*conflict) CheckDeps |= checkdep errors += errormsgs if checkdep: break # The next conflict might be the same pkg if CheckDeps: if self.dsCallback: self.dsCallback.restartLoop() self.verbose_logger.log(logginglevels.DEBUG_1, _('Restarting Loop')) continue break # FIXME: this doesn't belong here at all... for txmbr in self.tsInfo.getMembers(): if self.allowedMultipleInstalls(txmbr.po) and \ txmbr.ts_state == 'u': self.verbose_logger.log(logginglevels.DEBUG_2, _('%s converted to install'), txmbr.po) txmbr.ts_state = 'i' txmbr.output_state = TS_INSTALL if self.dsCallback: if not self.conf.skip_broken: self.dsCallback.end() elif not skipping_broken and not errors: self.dsCallback.end() self.verbose_logger.log(logginglevels.DEBUG_1, _('Dependency Process ending')) self.tsInfo.changed = False if len(errors) > 0: errors = unique(errors) # We immediately display this in cli, so don't show it twice. # Plus skip-broken can get here N times. Might be worth keeping # around for debugging? done = set() # Same as the unique above for po,wpo,err in self.po_with_problems: if (po,err) in done: continue done.add((po, err)) self.verbose_logger.log(logginglevels.DEBUG_4, "SKIPBROKEN: %s from %s has depsolving problems" % (po, po.repoid)) err = err.replace('\n', '\n --> ') self.verbose_logger.log(logginglevels.DEBUG_4,"SKIPBROKEN: --> %s" % err) return (1, errors) if not len(self.tsInfo): return (0, [_('Success - empty transaction')]) return (2, [_('Success - deps resolved')]) def _resolveRequires(self, errors): any_missing = False CheckDeps = False CheckInstalls = False CheckRemoves = False # we need to check the opposite of install and remove for regular # tsInfo members vs removed members for txmbr in self.tsInfo.getUnresolvedMembers(): if self.dsCallback and 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': if txmbr.output_state == TS_OBSOLETING: dscb_ts_state = 'o' elif 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,)) # store the primary po we currently are working on # so we can store it in self.po_with_problems. # it is useful when an update is breaking an require of an installed package # then we want to know who is causing the problem, not just who is having the problem. if not txmbr.updates and txmbr.relatedto: self._working_po = txmbr.relatedto[0][0] else: self._working_po = txmbr.po if (txmbr.output_state in TS_INSTALL_STATES) == (txmbr.po.state != None): thisneeds = self._checkInstall(txmbr) CheckInstalls = True else: thisneeds = self._checkRemove(txmbr) CheckRemoves = True 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 missing_in_pkg |= missing if not missing_in_pkg: self.tsInfo.markAsResolved(txmbr) any_missing |= missing_in_pkg return CheckDeps, CheckInstalls, CheckRemoves, any_missing @staticmethod def _sort_req_key(pkgtup): """ Get a sort key for a package requires from most "narrow" to least, this tries to ensure that if we have two reqs like "libfoo = 1.2.3-4" and "foo-api" (which is also provided by libxyz-foo) that we'll get just libfoo. There are other similar cases this "handles".""" mapper = {'EQ' : 1, 'LT' : 2, 'LE' : 3, 'GT' : 4, 'GE' : 5, None : 99} flagscore = mapper.get(pkgtup[1], 10) # This is pretty magic, basically we want an explicit: # # Requires: foo # # ...to happen before the implicit: # # Requires: libfoo.so.0() # # ...because sometimes the libfoo.so.0() is provided by multiple # packages. Do we need more magic for other implicit deps. here? namescore = 0 if pkgtup[0].startswith("lib") and \ (pkgtup[0].endswith("()") or pkgtup[0].endswith("()(64bit)")): namescore = 99 # Processes these last return (flagscore, namescore) def _checkInstall(self, txmbr): txmbr_reqs = txmbr.po.returnPrco('requires') # if this is an update, we should check what the old # requires were to make things faster oldreqs = [] for oldpo in txmbr.updates: oldreqs.extend(oldpo.returnPrco('requires')) oldreqs = set(oldreqs) ret = [] for req in sorted(txmbr_reqs, key=self._sort_req_key): if req[0].startswith('rpmlib('): continue if req in oldreqs: continue self.verbose_logger.log(logginglevels.DEBUG_2, _("looking for %s as a requirement of %s"), req, txmbr) provs = self.tsInfo.getProvides(*req) # 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 #Add relationship for po in provs: if txmbr.name == po.name: continue for member in self.tsInfo.getMembersWithState( pkgtup=po.pkgtup, output_states=TS_INSTALL_STATES): member.relatedto.append((txmbr.po, 'dependson')) return ret def _checkRemove(self, txmbr): po = txmbr.po provs = po.returnPrco('provides') # if this is an update, we should check what the new package # provides to make things faster newpoprovs = {} for newpo in txmbr.updated_by + txmbr.obsoleted_by: for p in newpo.provides: newpoprovs[p] = 1 ret = [] # iterate over the provides of the package being removed # and see what's actually going away for prov in provs: if prov[0].startswith('rpmlib('): # ignore rpmlib() provides continue 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 for newpo in txmbr.updated_by: if newpo.checkPrco('provides', hit): found = True break if found: continue for newpo in txmbr.obsoleted_by: if newpo.checkPrco('provides', hit): found = True break if found: continue # It doesn't, so see what else might... rn, rf, rv = hit if not self.tsInfo.getProvides(rn, rf, rv): ret.append( (pkg, self._prco_req_nfv2req(rn, rf, rv)) ) return ret def _checkFileRequires(self): fileRequires = set() nfileRequires = set() # These need to be looked up in the rpmdb. reverselookup = {} ret = [] # generate list of file requirement in rpmdb if self.installedFileRequires is None: self.installedFileRequires, \ self.installedUnresolvedFileRequires, \ self.installedFileProviders = self.rpmdb.fileRequiresData() # get file requirements from packages not deleted todel = [] for pkgtup, files in self.installedFileRequires.iteritems(): if self._tsInfo.getMembersWithState(pkgtup, output_states=TS_REMOVE_STATES): todel.append(pkgtup) else: fileRequires.update(files) for filename in files: reverselookup.setdefault(filename, []).append(pkgtup) for pkgtup in todel: del self.installedFileRequires[pkgtup] fileRequires -= self.installedUnresolvedFileRequires # get file requirements from new packages for txmbr in self._tsInfo.getMembersWithState(output_states=TS_INSTALL_STATES): for name, flag, evr in txmbr.po.requires: if name.startswith('/'): pt = txmbr.po.pkgtup self.installedFileRequires.setdefault(pt, []).append(name) # check if file requires was already unresolved in update if name in self.installedUnresolvedFileRequires: already_broken = False for oldpo in txmbr.updates: if oldpo.checkPrco('requires', (name, None, (None, None, None))): already_broken = True break if already_broken: continue if name not in fileRequires: nfileRequires.add(name) fileRequires.add(name) reverselookup.setdefault(name, []).append(txmbr.po.pkgtup) todel = [] for fname in self.installedFileProviders: niFP_fname = [] for pkgtup in self.installedFileProviders[fname]: if self._tsInfo.getMembersWithState(pkgtup, output_states=TS_REMOVE_STATES): continue niFP_fname.append(pkgtup) if not niFP_fname: todel.append(fname) continue self.installedFileProviders[fname] = niFP_fname for fname in todel: del self.installedFileProviders[fname] # check the file requires iFP = self.installedFileProviders for filename in fileRequires: # In theory we need this to be: # # nprov, filename in iFP (or new), oprov # # ...this keeps the cache exactly the same as the non-cached data. # However that also means that we'll always need the filelists, so # we do: # # filename in iFP (if found return), oprov (if found return), # nprov # # ...this means we'll always get the same _result_ (as we only need # to know if _something_ provides), but our cache will be off on # what does/doesn't provide the file. if filename in self.installedFileProviders: continue oprov = self.tsInfo.getOldProvides(filename) if oprov: iFP.setdefault(filename, []).extend([po.pkgtup for po in oprov]) continue nprov = self.tsInfo.getNewProvides(filename) if nprov: iFP.setdefault(filename, []).extend([po.pkgtup for po in nprov]) continue for pkgtup in reverselookup[filename]: po = self.tsInfo.getMembersWithState(pkgtup, TS_INSTALL_STATES) if po: po = po[0].po # Should only have one else: po = self.getInstalledPackageObject(pkgtup) ret.append( (po, (filename, 0, '')) ) self.rpmdb.transactionCacheFileRequires(self.installedFileRequires, self.installedUnresolvedFileRequires, self.installedFileProviders, ret) return ret def _checkConflicts(self): ret = [ ] cpkgs = [] for po in self.rpmdb.returnConflictPackages(): if self.tsInfo.getMembersWithState(po.pkgtup, output_states=TS_REMOVE_STATES): continue conflicts = po.returnPrco('conflicts') if not conflicts: # We broke this due to dbMatch() usage. continue cpkgs.append(po) for conflict in conflicts: (r, f, v) = conflict for conflicting_po in self.tsInfo.getNewProvides(r, f, v): if conflicting_po.pkgtup[0] == po.pkgtup[0] and conflicting_po.pkgtup[2:] == po.pkgtup[2:]: continue ret.append( (po, self._prco_req_nfv2req(r, f, v), conflicting_po) ) for txmbr in self.tsInfo.getMembersWithState(output_states=TS_INSTALL_STATES): po = txmbr.po done = False for conflict in txmbr.po.returnPrco('conflicts'): if not done: cpkgs.append(txmbr.po) done = True (r, f, v) = conflict for conflicting_po in self.tsInfo.getProvides(r, f, v): if conflicting_po.pkgtup[0] == po.pkgtup[0] and conflicting_po.pkgtup[2:] == po.pkgtup[2:]: continue ret.append( (po, self._prco_req_nfv2req(r, f, v), conflicting_po) ) if _rpm_ver_atleast((4, 9, 0)): return ret # Don't need the conflicts cache anymore self.rpmdb.transactionCacheConflictPackages(cpkgs) return ret def isPackageInstalled(self, pkgname): lst = self.tsInfo.matchNaevr(name = pkgname) for txmbr in lst: if txmbr.output_state in TS_INSTALL_STATES: return True if len(lst) > 0: # if we get here then it's in the tsInfo for an erase or obsoleted # --> not going to be installed return False if not self.rpmdb.contains(name=pkgname): return False return True _isPackageInstalled = isPackageInstalled def _compare_providers(self, pkgs, reqpo): """take the list of pkgs and score them based on the requesting package return a dictionary of po=score""" self.verbose_logger.log(logginglevels.DEBUG_4, _("Running compare_providers() for %s") %(str(pkgs))) def _common_prefix_len(x, y, minlen=2): num = min(len(x), len(y)) for off in range(num): if x[off] != y[off]: return max(off, minlen) return max(num, minlen) def _common_sourcerpm(x, y): if not hasattr(x, 'sourcerpm'): return False if not hasattr(y, 'sourcerpm'): return False return x.sourcerpm == y.sourcerpm def _compare_arch_distance(x, y, req_compare_arch): # take X and Y package objects # determine which has a closer archdistance to compare_arch # if they are equal to compare_arch, compare which is closer to the # running arch # return the package which is closer or None for equal, or equally useless x_dist = archDifference(req_compare_arch, x.arch) if self.arch.multilib: # only go to the next one if we're multilib - if x_dist == 0: # can't really use best's arch anyway... self.verbose_logger.log(logginglevels.DEBUG_4, _("better arch in po %s") %(y)) return y # just try the next one - can't be much worse y_dist = archDifference(req_compare_arch, y.arch) if y_dist > 0 and x_dist > y_dist: self.verbose_logger.log(logginglevels.DEBUG_4, _("better arch in po %s") %(y)) return y if y_dist == x_dist: return None return x # Actual start of _compare_providers(). # Do a NameArch filtering, based on repo. __cmp__ unique_nevra_pkgs = {} for pkg in pkgs: if (pkg.pkgtup in unique_nevra_pkgs and unique_nevra_pkgs[pkg.pkgtup].repo <= pkg.repo): continue unique_nevra_pkgs[pkg.pkgtup] = pkg pkgs = unique_nevra_pkgs.values() pkgresults = {} 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 # older than what we are comparing, because this then an update # so we give preference. If they are newer then obsoletes/etc. # could play a part ... this probably needs a better fix. newest = sorted(rpmdbpkgs)[-1] if newest.verLT(pkg): # give pkgs which are updates just a SLIGHT edge # we should also make sure that any pkg # 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 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 elif newest.verGT(pkg): # if the version we're looking at is older than what we have installed # score it down like we would an obsoleted pkg pkgresults[pkg] -= 1024 else: # just b/c they're not installed pkgs doesn't mean they should # be ignored entirely. Just not preferred pass pkgs = pkgresults.keys() # go through each pkg and compare to others # if it is same skip it # if the pkg is obsoleted by any other of the packages # then add -1024 to its score # don't need to look for mutual obsoletes b/c each package # is evaluated against all the others, so mutually obsoleting # packages will have their scores diminished equally # compare the arch vs each other pkg # give each time it returns with a better arch a +5 # look for common source vs the reqpo - give a +10 if it has it # look for common_prefix_len - add the length*2 to the score # add the negative of the length of the name to the score lpos = {} for po in pkgs: for nextpo in pkgs: if po == nextpo: continue # If this package isn't the latest version of said package, # treat it like it's obsoleted. The problem here is X-1 # accidentally provides FOO, so you release X-2 without the # provide, but X-1 is still picked over a real provider. if po.name not in lpos: lpos[po.name] = self.pkgSack.returnNewestByName(po.name)[:1] if not lpos[po.name] or not po.verEQ(lpos[po.name][0]): pkgresults[po] -= 1024 obsoleted = False if po.obsoletedBy([nextpo]): obsoleted = True pkgresults[po] -= 1024 self.verbose_logger.log(logginglevels.DEBUG_4, _("%s obsoletes %s") % (nextpo, po)) if reqpo: arches = (reqpo.arch, self.arch.bestarch) else: arches = (self.arch.bestarch,) for thisarch in arches: res = _compare_arch_distance(po, nextpo, thisarch) if not res: continue self.verbose_logger.log(logginglevels.DEBUG_4, _('archdist compared %s to %s on %s\n Winner: %s' % (po, nextpo, thisarch, res))) 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))) pkgresults[po] += 20 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 before - - but off of base package name if reqpo: cpl = _common_prefix_len(po.name, reqpo.name) if cpl > 2: self.verbose_logger.log(logginglevels.DEBUG_4, _('common prefix of %s between %s and %s' % (cpl, po, reqpo))) 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(), key=lambda x: (x[1], x[0]), reverse=True) self.verbose_logger.log(logginglevels.DEBUG_4, _('Best Order: %s' % str(bestorder))) return bestorder class DepCheck(object): """object that YumDepsolver uses to see what things are needed to close the transaction set. attributes: requires, conflicts are a list of requires are conflicts in the current transaction set. Each item in the lists are a requires or conflicts object""" def __init__(self): self.requires = [] self.conflicts = [] def addRequires(self, po, req_tuple_list): # fixme - do checking for duplicates or additions in here to zip things along reqobj = Requires(po, req_tuple_list) self.requires.append(reqobj) def addConflicts(self, conflict_po_list, conflict_item): confobj = Conflicts(conflict_po_list, conflict_item) self.conflicts.append(confobj) class Requires(object): """ A pure data class for holding a package and the list of things it requires. """ def __init__(self, pkg,requires): self.pkg = pkg # po of requiring pkg self.requires = requires # list of things it requires that are un-closed in the ts class Conflicts(object): """ A pure data class for holding a package and the list of things it conflicts. """ def __init__(self, pkglist, conflict): self.pkglist = pkglist # list of conflicting package objects self.conflict = conflict # what the conflict was between them yum-3.4.3/yum/packageSack.py0000664000076400007640000012162711602434452014720 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2006 Duke University """ Classes for manipulating and querying groups of packages. """ from Errors import PackageSackError import warnings import re import fnmatch import misc from packages import parsePackages import rpmUtils.miscutils from rpmUtils.miscutils import compareEVR class PackageSackVersion: def __init__(self): self._num = 0 self._chksum = misc.Checksums(['sha1']) def __str__(self): return "%u:%s" % (self._num, self._chksum.hexdigest()) def __eq__(self, other): if other is None: return False if type(other) in (type(''), type(u'')): return str(self) == other if self._num != other._num: return False if self._chksum.digest() != other._chksum.digest(): return False return True def __ne__(self, other): return not (self == other) def update(self, pkg, csum): self._num += 1 self._chksum.update(str(pkg)) if csum is not None: self._chksum.update(csum[0]) self._chksum.update(csum[1]) class PackageSackBase(object): """Base class that provides the interface for PackageSacks.""" def __init__(self): self.added = {} def __len__(self): return len(self.returnPackages()) def __iter__(self): ret = self.returnPackages() if hasattr(ret, '__iter__'): return ret.__iter__() else: return iter(ret) def __cmp__(self, other): if other is None: return 1 s_repos = list(self.added) o_repos = list(other.added) if len(s_repos) != len(o_repos): return len(s_repos) - len(o_repos) for (s_repo, o_repo) in zip(sorted(s_repos), sorted(o_repos)): ret = cmp(s_repo, o_repo) if ret: return ret return 0 def setCompatArchs(self, compatArchs): raise NotImplementedError() def populate(self, repo, mdtype, callback, cacheOnly): raise NotImplementedError() def packagesByTuple(self, pkgtup): """return a list of package objects by (n,a,e,v,r) tuple""" warnings.warn('packagesByTuple() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) return self.searchPkgTuple(pkgtup) def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None): """return list of pkgobjects matching the nevra requested""" raise NotImplementedError() def searchNames(self, names=[], return_pkgtups=False): raise NotImplementedError() def searchPO(self, po): """return list of package objects matching the name, epoch, ver, rel, arch of the package object passed in""" return self.searchNevra(name=po.name, epoch=po.epoch, ver=po.ver, rel=po.rel, arch=po.arch) def searchPkgTuple(self, pkgtup): """return list of pkgobject matching the (n,a,e,v,r) tuple""" (n,a,e,v,r) = pkgtup return self.searchNevra(name=n, arch=a, epoch=e, ver=v, rel=r) def contains(self, name=None, arch=None, epoch=None, ver=None, rel=None, po=None): """return if there are any packages in the sack that match the given NAEVR or the NAEVR of the given po""" if po: name = po.name arch = po.arch epoch = po.epoch ver = po.version rel = po.release return bool(self.searchNevra(name=name, arch=arch, epoch=epoch, ver=ver, rel=rel)) def getProvides(self, name, flags=None, version=(None, None, None)): """return dict { packages -> list of matching provides }""" raise NotImplementedError() def getRequires(self, name, flags=None, version=(None, None, None)): """return dict { packages -> list of matching requires }""" raise NotImplementedError() def searchRequires(self, name): """return list of package requiring the name (any evr and flag)""" raise NotImplementedError() def searchProvides(self, name): """return list of package providing the name (any evr and flag)""" raise NotImplementedError() def searchConflicts(self, name): """return list of package conflicting with the name (any evr and flag)""" raise NotImplementedError() def searchObsoletes(self, name): """return list of package obsoleting the name (any evr and flag)""" raise NotImplementedError() def returnObsoletes(self, newest=False): """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() def addPackage(self, obj): """add a pkgobject to the packageSack""" raise NotImplementedError() def buildIndexes(self): """builds the useful indexes for searching/querying the packageSack This should be called after all the necessary packages have been added/deleted""" raise NotImplementedError() def delPackage(self, obj): """delete a pkgobject""" raise NotImplementedError() def returnPackages(self, repoid=None, patterns=None, ignore_case=False): """return list of all packages""" raise NotImplementedError() def addPackageExcluder(self, repoid, excluderid, excluder, *args): """ Add an "excluder" for all packages in the repo/sack. Can basically do anything based on nevra, changes lots of exclude decisions from "preload package; test; delPackage" into "load excluder". Excluderid is used so the caller doesn't have to track "have I loaded the excluder for this repo.", it's probably only useful when repoid is None ... if it turns out utterly worthless then it's still not a huge wart. """ raise NotImplementedError() def simpleVersion(self, main_only=False, groups={}): """ Return a simple version for all available packages. """ def _up_revs(arepos, repoid, rev, pkg, csum): arevs = arepos.setdefault(repoid, {}) rpsv = arevs.setdefault(None, PackageSackVersion()) rpsv.update(pkg, csum) if rev is not None: rpsv = arevs.setdefault(rev, PackageSackVersion()) rpsv.update(pkg, csum) main = PackageSackVersion() arepos = {} main_grps = {} arepos_grps = {} for pkg in sorted(self.returnPackages()): csum = pkg.returnIdSum() main.update(pkg, csum) for group in groups: if pkg.name in groups[group]: if group not in main_grps: main_grps[group] = PackageSackVersion() arepos_grps[group] = {} main_grps[group].update(pkg, csum) if main_only: continue rev = pkg.repo.repoXML.revision _up_revs(arepos, pkg.repoid, rev, pkg, csum) for group in groups: if pkg.name in groups[group]: _up_revs(arepos_grps[group], pkg.repoid, rev, pkg, csum) if groups: return [main, arepos, main_grps, arepos_grps] return [main, arepos] def returnNewestByNameArch(self, naTup=None, patterns=None, ignore_case=False): """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 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.""" raise NotImplementedError() def simplePkgList(self, patterns=None, ignore_case=False): """returns a list of pkg tuples (n, a, e, v, r)""" raise NotImplementedError() def printPackages(self): raise NotImplementedError() def excludeArchs(self, archlist): """exclude incompatible arches. archlist is a list of compatible arches""" raise NotImplementedError() def searchPackages(self, fields, criteria_re, callback): raise NotImplementedError() def searchAll(self, arg, query_type): raise NotImplementedError() def matchPackageNames(self, pkgspecs): """take a list strings and match the packages in the sack against it this will match against: name name.arch name-ver-rel.arch name-ver name-ver-rel epoch:name-ver-rel.arch name-epoch:ver-rel.arch return [exact matches], [glob matches], [unmatch search terms] """ # Setup match() for the search we're doing matched = [] exactmatch = [] unmatched = set(pkgspecs) specs = {} for p in pkgspecs: if misc.re_glob(p): restring = fnmatch.translate(p) specs[p] = re.compile(restring) else: specs[p] = p # We don't use simplePkgList() here because that loads all of the # rpmdb, if we are Eg. doing a "remove PackageKit". pkgs = self.returnPackages(patterns=unmatched) for pkgtup in [pkg.pkgtup for pkg in pkgs]: (n,a,e,v,r) = pkgtup names = set(( n, '%s.%s' % (n, a), '%s-%s-%s.%s' % (n, v, r, a), '%s-%s' % (n, v), '%s-%s-%s' % (n, v, r), '%s:%s-%s-%s.%s' % (e, n, v, r, a), '%s-%s:%s-%s.%s' % (n, e, v, r, a), )) for (term,query) in specs.items(): if term == query: if query in names: exactmatch.append(self.searchPkgTuple(pkgtup)[0]) unmatched.discard(term) else: for n in names: if query.match(n): matched.append(self.searchPkgTuple(pkgtup)[0]) unmatched.discard(term) return misc.unique(exactmatch), misc.unique(matched), list(unmatched) def returnLeafNodes(self, repoid=None): """returns a list of package objects that are not required by any other package in this repository""" def _return_all_provides(po): """ Return all the provides, via. yield. """ # These are done one by one, so that we get lazy loading for prov in po.provides_names: yield prov for prov in po.filelist: yield prov for prov in po.dirlist: yield prov for prov in po.ghostlist: yield prov # fixme - maybe cache this list? req = {} orphans = [] # prebuild the req dict for po in self.returnPackages(repoid=repoid): if not po.requires_names: continue for r in po.requires_names: if r not in req: req[r] = set() if len(req[r]) > 1: # We only need to know if another pkg. continue # reqs. the provide. So 2 pkgs. is enough. req[r].add(po.name) for po in self.returnPackages(repoid=repoid): preq = 0 for p in _return_all_provides(po): 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. if len(req[p]) > 1 or po.name not in req[p]: preq += 1 break if preq == 0: orphans.append(po) return orphans class MetaSack(PackageSackBase): """Represents the aggregate of multiple package sacks, such that they can all be treated as one unified sack.""" def __init__(self): PackageSackBase.__init__(self) self.sacks = {} self.compatarchs = None def __len__(self): ret = 0 for sack in sorted(self.sacks.values()): ret += len(sack) return ret def dropCachedData(self): for sack in self.sacks.values(): if hasattr(sack, 'dropCachedData'): sack.dropCachedData() def addSack(self, repoid, sack): """Adds a repository's packageSack to this MetaSack.""" self.sacks[repoid] = sack # Make sure the new sack follows the same rules we have been given. sack.setCompatArchs(self.compatarchs) def populate(self, repo, mdtype, callback, cacheOnly): self.sacks[repo.id].populate(repo, mdtype, callback, cacheOnly) def setCompatArchs(self, compatArchs): for sack in self.sacks.values(): sack.setCompatArchs(compatArchs) def packagesByTuple(self, pkgtup): """return a list of package objects by (n,a,e,v,r) tuple""" warnings.warn('packagesByTuple() will go away in a future version of Yum.\n', DeprecationWarning, stacklevel=2) return self._computeAggregateListResult("packagesByTuple", pkgtup) def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None): """return list of pkgobjects matching the nevra requested""" return self._computeAggregateListResult("searchNevra", name, epoch, ver, rel, arch) def searchNames(self, names=[], return_pkgtups=False): return self._computeAggregateListResult("searchNames", names, return_pkgtups) def getProvides(self, name, flags=None, version=(None, None, None)): """return dict { packages -> list of matching provides }""" return self._computeAggregateDictResult("getProvides", name, flags, version) def getRequires(self, name, flags=None, version=(None, None, None)): """return dict { packages -> list of matching requires }""" return self._computeAggregateDictResult("getRequires", name, flags, version) def searchRequires(self, name): """return list of package requiring the name (any evr and flag)""" return self._computeAggregateListResult("searchRequires", name) def searchProvides(self, name): """return list of package providing the name (any evr and flag)""" return self._computeAggregateListResult("searchProvides", name) def searchConflicts(self, name): """return list of package conflicting with the name (any evr and flag)""" return self._computeAggregateListResult("searchConflicts", name) def searchObsoletes(self, name): """return list of package obsoleting the name (any evr and flag)""" return self._computeAggregateListResult("searchObsoletes", name) def returnObsoletes(self, newest=False): """returns a dict of obsoletes dict[obsoleting pkgtuple] = [list of obs]""" if not newest: return self._computeAggregateDictResult("returnObsoletes") obsdict = self._computeAggregateDictResult("returnObsoletes") names = set((obstup[0] for obstup in obsdict)) nobsdict = {} last_name = '' last_pkg = None # It takes about 0.2 of a second to convert these into packages, just # so we can sort them, which is ~40% of this functions time. So we sort # the pkgtups "by hand". def _pkgtup_nevr_cmp(x, y): """ Compare two pkgtup's (ignore arch): n, a, e, v, r. """ ret = cmp(x[0], y[0]) if ret: return ret # This is negated so we get higher versions first, in the list. return -compareEVR((x[2], x[3], x[4]), (y[2], y[3], y[4])) def _pkgtup_nevr_eq(x, y): return _pkgtup_nevr_cmp(x, y) == 0 for pkgtup in sorted(self.searchNames(names, return_pkgtups=True), cmp=_pkgtup_nevr_cmp): name = pkgtup[0] if last_name == name and not _pkgtup_nevr_eq(last_pkgtup, pkgtup): continue last_name = name last_pkgtup = pkgtup if pkgtup in obsdict: nobsdict[pkgtup] = obsdict[pkgtup] return nobsdict def searchFiles(self, name): """return list of packages by filename""" return self._computeAggregateListResult("searchFiles", name) def addPackage(self, obj): """Add a pkgobject to the packageSack. This is a meaningless operation for the MetaSack.""" pass def buildIndexes(self): """builds the useful indexes for searching/querying the packageSack This should be called after all the necessary packages have been added/deleted""" for sack in self.sacks.values(): sack.buildIndexes() def delPackage(self, obj): """Delete a pkgobject if it exists in every sub-sack.""" obj.repo.sack.delPackage(obj) def returnPackages(self, repoid=None, patterns=None, ignore_case=False): """Returns a list of packages. Note that the packages are always filtered to those matching the patterns/case. An optional repoid allows you to easily get data for a specific repo. """ if not repoid: return self._computeAggregateListResult("returnPackages", None, patterns, ignore_case) return self.sacks[repoid].returnPackages(patterns=patterns, ignore_case=ignore_case) def addPackageExcluder(self, repoid, excluderid, excluder, *args): """ Add an "excluder" for all packages in the repo/sack. Can basically do anything based on nevra, changes lots of exclude decisions from "preload package; test; delPackage" into "load excluder". Excluderid is used so the caller doesn't have to track "have I loaded the excluder for this repo.", it's probably only useful when repoid is None ... if it turns out utterly worthless then it's still not a huge wart. """ if not repoid: calr = self._computeAggregateListResult return calr("addPackageExcluder", None, excluderid, excluder, *args) return self.sacks[repoid].addPackageExcluder(None, excluderid,excluder, *args) def returnNewestByNameArch(self, naTup=None, patterns=None, ignore_case=False): """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. 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) if not pkgs and (naTup or patterns): ui_pats = ", ".join(patterns or []) raise PackageSackError, 'No Package Matching %s' % ui_pats return pkgs 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.""" pkgs = self._computeAggregateListResult("returnNewestByName", name, patterns, ignore_case) pkgs = packagesNewestByName(pkgs) if not pkgs and (name or patterns): if name: ui_pats = name else: ui_pats = ", ".join(patterns or []) raise PackageSackError, 'No Package Matching %s' % ui_pats return pkgs def simplePkgList(self, patterns=None, ignore_case=False): """returns a list of pkg tuples (n, a, e, v, r)""" return self._computeAggregateListResult("simplePkgList", patterns, ignore_case) def printPackages(self): for sack in self.sacks.values(): sack.printPackages() def excludeArchs(self, archlist): """exclude incompatible arches. archlist is a list of compatible arches""" for sack in self.sacks.values(): sack.excludeArchs(archlist) def searchPackages(self, fields, criteria_re, callback): return self._computeAggregateDictResult("searchPackages", fields, criteria_re, callback) def searchAll(self, arg, query_type): return self._computeAggregateListResult("searchAll", arg, query_type) def matchPackageNames(self, pkgspecs): matched = [] exactmatch = [] unmatched = None for sack in self.sacks.values(): if hasattr(sack, "matchPackageNames"): e, m, u = [], [], [] try: e, m, u = sack.matchPackageNames(pkgspecs) except PackageSackError: continue exactmatch.extend(e) matched.extend(m) if unmatched is None: unmatched = set(u) else: unmatched = unmatched.intersection(set(u)) matched = misc.unique(matched) exactmatch = misc.unique(exactmatch) if unmatched is None: unmatched = [] else: unmatched = list(unmatched) return exactmatch, matched, unmatched def _computeAggregateListResult(self, methodName, *args): result = [] for sack in sorted(self.sacks.values()): if hasattr(sack, methodName): method = getattr(sack, methodName) try: sackResult = apply(method, args) except PackageSackError: continue if sackResult: result.extend(sackResult) return result def _computeAggregateDictResult(self, methodName, *args): result = {} for sack in sorted(self.sacks.values()): if hasattr(sack, methodName): method = getattr(sack, methodName) try: sackResult = apply(method, args) except PackageSackError: continue if sackResult: result.update(sackResult) return result class PackageSack(PackageSackBase): """represents sets (sacks) of Package Objects""" def __init__(self): self.nevra = {} #nevra[(Name, Epoch, Version, Release, Arch)] = [] self.obsoletes = {} #obs[obsoletename] = [pkg1, pkg2, pkg3] #the package lists are packages that obsolete the key name self.requires = {} #req[reqname] = [pkg1, pkg2, pkg3] #the package lists are packages that require the key name self.provides = {} #ditto of above but for provides self.conflicts = {} #ditto of above but for conflicts self.filenames = {} # duh self.pkgsByRepo = {} #pkgsByRepo['repoid']= [pkg1, pkg2, pkg3] self.pkgsByID = {} #pkgsById[pkgid] = [pkg1, pkg2] (should really only ever be one value but #you might have repos with the same package in them self.compatarchs = None # dict of compatible archs for addPackage self.indexesBuilt = 0 def __len__(self): ret = 0 for repo in self.pkgsByRepo: ret += len(self.pkgsByRepo[repo]) return ret def _checkIndexes(self, failure='error'): """check to see if the indexes are built, if not do what failure demands either error out or build the indexes, default is to error out""" if not self.indexesBuilt: if failure == 'error': raise PackageSackError, 'Indexes not yet built, cannot search' elif failure == 'build': self.buildIndexes() def dropCachedData(self): """ Do nothing, mainly for the testing code. """ self.clearIndexes() def setCompatArchs(self, compatarchs): self.compatarchs = compatarchs def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None): """return list of pkgobjects matching the nevra requested""" self._checkIndexes(failure='build') if (name, epoch, ver, rel, arch) in self.nevra: return self.nevra[(name, epoch, ver, rel, arch)] elif name is not None: pkgs = self.nevra.get((name, None, None, None, None), []) else: pkgs = [] for pkgsbyRepo in self.pkgsByRepo.itervalues(): pkgs.extend(pkgsbyRepo) result = [ ] for po in pkgs: if ((name and name!=po.name) or (epoch and epoch!=po.epoch) or (ver and ver!=po.ver) or (rel and rel!=po.rel) or (arch and arch!=po.arch)): continue result.append(po) return result def searchNames(self, names=[], return_pkgtups=False): """return list of pkgobjects matching the names requested""" self._checkIndexes(failure='build') result = [] done = set() for name in names: if name in done: continue done.add(name) result.extend(self.nevra.get((name, None, None, None, None), [])) if return_pkgtups: return [pkg.pkgtup for pkg in result] return result def getProvides(self, name, flags=None, version=(None, None, None)): """return dict { packages -> list of matching provides }""" self._checkIndexes(failure='build') if version is None: version = (None, None, None) elif type(version) in (str, type(None), unicode): version = rpmUtils.miscutils.stringToVersion(version) result = { } for po in self.provides.get(name, []): hits = po.matchingPrcos('provides', (name, flags, version)) if hits: result[po] = hits if name[0] == '/': hit = (name, None, (None, None, None)) for po in self.searchFiles(name): result.setdefault(po, []).append(hit) return result def getRequires(self, name, flags=None, version=(None, None, None)): """return dict { packages -> list of matching requires }""" self._checkIndexes(failure='build') if version is None: version = (None, None, None) elif type(version) in (str, type(None), unicode): version = rpmUtils.miscutils.stringToVersion(version) result = { } for po in self.requires.get(name, []): hits = po.matchingPrcos('requires', (name, flags, version)) if hits: result[po] = hits return result def searchPrco(self, name, prcotype): self._checkIndexes(failure='build') prcodict = getattr(self, prcotype) (n,f,(e,v,r)) = misc.string_to_prco_tuple(name) basic_results = [] results = [] if n in prcodict: basic_results.extend(prcodict[n]) for po in basic_results: if po.checkPrco(prcotype, (n, f, (e,v,r))): results.append(po) if prcotype != "provides": return results if not misc.re_filename(n): return results results.extend(self.searchFiles(n)) return misc.unique(results) def searchRequires(self, name): """return list of package requiring the item requested""" return self.searchPrco(name, 'requires') def searchProvides(self, name): """return list of package providing the item requested""" return self.searchPrco(name, 'provides') def searchConflicts(self, name): """return list of package conflicting with item requested""" return self.searchPrco(name, 'conflicts') def searchObsoletes(self, name): """return list of package obsoleting the item requested""" return self.searchPrco(name, 'obsoletes') def returnObsoletes(self, newest=False): """returns a dict of obsoletes dict[obsoleting pkgtuple] = [list of obs]""" obs = {} for po in self.returnPackages(): if len(po.obsoletes) == 0: continue obs.setdefault(po.pkgtup, []).extend(po.obsoletes) if not newest: return obs # FIXME - this is slooooooooooooooooooooooooooooooow # get the dict back newest_tups = set((pkg.pkgtup for pkg in self.returnNewestByName())) # go through each of the keys of the obs dict and see if it is in the # sack of newest pkgs - if it is not - remove the entry togo = [] for obstup in obs: if obstup not in newest_tups: togo.append(obstup) for obstup in togo: del obs[obstup] 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. """ self._checkIndexes(failure='build') if name in self.filenames: return self.filenames[name] else: return [] def _addToDictAsList(self, dict, key, data): 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 dict[key].append(data) def _delFromListOfDict(self, dict, key, data): if key not in dict: return try: dict[key].remove(data) except ValueError: pass if len(dict[key]) == 0: # if it's an empty list of the dict, then kill it del dict[key] def addPackage(self, obj): """add a pkgobject to the packageSack""" repoid = obj.repoid (name, arch, epoch, ver, rel) = obj.pkgtup if not self.compatarchs or arch in self.compatarchs: self._addToDictAsList(self.pkgsByRepo, repoid, obj) if self.indexesBuilt: self._addPackageToIndex(obj) def buildIndexes(self): """builds the useful indexes for searching/querying the packageSack This should be called after all the necessary packages have been added/deleted""" self.clearIndexes() for repoid in self.pkgsByRepo: for obj in self.pkgsByRepo[repoid]: self._addPackageToIndex(obj) self.indexesBuilt = 1 def clearIndexes(self): # blank out the indexes self.obsoletes = {} self.requires = {} self.provides = {} self.conflicts = {} self.filenames = {} self.nevra = {} self.pkgsByID = {} self.indexesBuilt = 0 def _addPackageToIndex(self, obj): # store the things provided just on name, not the whole require+version # this lets us reduce the set of pkgs to search when we're trying to depSolve for (n, fl, (e,v,r)) in obj.returnPrco('obsoletes'): self._addToDictAsList(self.obsoletes, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('requires'): self._addToDictAsList(self.requires, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('provides'): self._addToDictAsList(self.provides, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('conflicts'): self._addToDictAsList(self.conflicts, n, obj) for ftype in obj.returnFileTypes(): for file in obj.returnFileEntries(ftype): self._addToDictAsList(self.filenames, file, obj) self._addToDictAsList(self.pkgsByID, obj.id, obj) (name, arch, epoch, ver, rel) = obj.pkgtup self._addToDictAsList(self.nevra, (name, epoch, ver, rel, arch), obj) self._addToDictAsList(self.nevra, (name, None, None, None, None), obj) def _delPackageFromIndex(self, obj): for (n, fl, (e,v,r)) in obj.returnPrco('obsoletes'): self._delFromListOfDict(self.obsoletes, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('requires'): self._delFromListOfDict(self.requires, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('provides'): self._delFromListOfDict(self.provides, n, obj) for (n, fl, (e,v,r)) in obj.returnPrco('conflicts'): self._delFromListOfDict(self.conflicts, n, obj) for ftype in obj.returnFileTypes(): for file in obj.returnFileEntries(ftype): self._delFromListOfDict(self.filenames, file, obj) self._delFromListOfDict(self.pkgsByID, obj.id, obj) (name, arch, epoch, ver, rel) = obj.pkgtup self._delFromListOfDict(self.nevra, (name, epoch, ver, rel, arch), obj) self._delFromListOfDict(self.nevra, (name, None, None, None, None), obj) def delPackage(self, obj): """delete a pkgobject""" self._delFromListOfDict(self.pkgsByRepo, obj.repoid, obj) if self.indexesBuilt: self._delPackageFromIndex(obj) def returnPackages(self, repoid=None, patterns=None, ignore_case=False): """return list of all packages, takes optional repoid""" returnList = [] if repoid is None: for repo in self.pkgsByRepo: returnList.extend(self.pkgsByRepo[repo]) else: try: returnList = self.pkgsByRepo[repoid] except KeyError: # nothing to return pass if patterns: returnList = parsePackages(returnList, patterns, not ignore_case, unique='repo-pkgkey') returnList = returnList[0] + returnList[1] return returnList def returnNewestByNameArch(self, naTup=None, patterns=None, ignore_case=False): """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 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 if (naTup): self._checkIndexes(failure='build') where = self.nevra.get((naTup[0],None,None,None,None)) if (not where): raise PackageSackError, 'No Package Matching %s.%s' % naTup else: where = self.returnPackages(patterns=patterns, ignore_case=ignore_case) for pkg in where: if (pkg.name, pkg.arch) not in highdict: highdict[(pkg.name, pkg.arch)] = pkg else: pkg2 = highdict[(pkg.name, pkg.arch)] if pkg.verGT(pkg2): highdict[(pkg.name, pkg.arch)] = pkg if naTup: if naTup in highdict: return [highdict[naTup]] else: raise PackageSackError, 'No Package Matching %s.%s' % naTup return highdict.values() 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.""" highdict = {} 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): highdict[pkg.name] = [pkg] if pkg.verEQ(pkg2): highdict[pkg.name].append(pkg) if name: if name in highdict: return highdict[name] else: raise PackageSackError, 'No Package Matching %s' % name #this is a list of lists - break it back out into a single list returnlist = [] for polst in highdict.values(): for po in polst: returnlist.append(po) return returnlist def simplePkgList(self, patterns=None, ignore_case=False): """returns a list of pkg tuples (n, a, e, v, r) optionally from a single repoid""" # Don't cache due to excludes return [pkg.pkgtup for pkg in self.returnPackages(patterns=patterns, ignore_case=False)] def printPackages(self): for pkg in self.returnPackages(): print pkg def excludeArchs(self, archlist): """exclude incompatible arches. archlist is a list of compatible arches""" for pkg in self.returnPackages(): if pkg.arch not in archlist: self.delPackage(pkg) def searchPackages(self, fields, criteria_re, callback): matches = {} for po in self.returnPackages(): tmpvalues = [] for field in fields: value = getattr(po, field) if value and criteria_re.search(value): tmpvalues.append(value) if len(tmpvalues) > 0: if callback: callback(po, tmpvalues) matches[po] = tmpvalues return matches def packagesNewestByName(pkgs): """ Does the same as PackageSack.returnNewestByName(). Note that given: foo-1.i386; foo-2.i386 and foo-3.x86_64""" newest = {} for pkg in pkgs: key = pkg.name # Can't use pkg.__cmp__ because it takes .arch into account cval = 1 if key in newest: cval = pkg.verCMP(newest[key][0]) if cval > 0: newest[key] = [pkg] elif cval == 0: newest[key].append(pkg) ret = [] for vals in newest.itervalues(): ret.extend(vals) return ret def packagesNewestByNameArch(pkgs): """ 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) if key in newest and pkg.verLE(newest[key]): continue newest[key] = pkg return newest.values() class ListPackageSack(PackageSack): """Derived class from PackageSack to build new Sack from list of pkgObjects - like one returned from self.returnNewestByNameArch() or self.returnNewestByName()""" def __init__(self, Objlist=None): PackageSack.__init__(self) if Objlist is not None: self.addList(Objlist) def addList(self, ObjList): for pkgobj in ObjList: self.addPackage(pkgobj) yum-3.4.3/yum/plugins.py0000664000076400007640000005631211602434452014202 0ustar jamesjames#! /usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2005 Duke University import os import glob import imp import warnings import atexit import gettext import logging import logginglevels from constants import * import config from config import ParsingError, ConfigParser import Errors from parser import ConfigPreProcessor from textwrap import fill import fnmatch from weakref import proxy as weakref from yum import _ from yum.i18n import utf8_width # TODO: expose rpm package sack objects to plugins (once finished) # TODO: allow plugins to use the existing config stuff to define options for # their own configuration files (would replace confString() etc). # TODO: expose progress bar interface # TODO "log" slot? To allow plugins to do customised logging/history (say to a # SQL db) # TODO: consistent case of YumPlugins methods # TODO: allow plugins to extend shell commands # TODO: allow plugins to define new repository types # TODO: More developer docs: use epydoc as API begins to stablise # The API_VERSION constant defines the current plugin API version. It is used # to decided whether or not plugins can be loaded. It is compared against the # 'requires_api_version' attribute of each plugin. The version number has the # format: "major_version.minor_version". # # For a plugin to be loaded the major version required by the plugin must match # the major version in API_VERSION. Additionally, the minor version in # API_VERSION must be greater than or equal the minor version required by the # plugin. # # If a change to yum is made that break backwards compatibility wrt the plugin # API, the major version number must be incremented and the minor version number # reset to 0. If a change is made that doesn't break backwards compatibility, # then the minor number must be incremented. API_VERSION = '2.6' class DeprecatedInt(int): ''' A simple int subclass that used to check when a deprecated constant is used. ''' # Plugin types TYPE_CORE = 0 TYPE_INTERACTIVE = 1 TYPE_INTERFACE = DeprecatedInt(1) ALL_TYPES = (TYPE_CORE, TYPE_INTERACTIVE) # Mapping of slots to conduit classes SLOT_TO_CONDUIT = { 'config': 'ConfigPluginConduit', 'postconfig': 'PostConfigPluginConduit', 'init': 'InitPluginConduit', 'args': 'ArgsPluginConduit', 'predownload': 'DownloadPluginConduit', 'postdownload': 'DownloadPluginConduit', 'prereposetup': 'PreRepoSetupPluginConduit', 'postreposetup': 'PostRepoSetupPluginConduit', 'close': 'PluginConduit', '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 = sorted(SLOT_TO_CONDUIT.keys()) class PluginYumExit(Exception): '''Used by plugins to signal that yum should stop ''' def __init__(self, value="", translation_domain=""): self.value = value self.translation_domain = translation_domain def __str__(self): if self.translation_domain: return gettext.dgettext(self.translation_domain, self.value) else: return self.value class YumPlugins: ''' Manager class for Yum plugins. ''' def __init__(self, base, searchpath, optparser=None, types=None, pluginconfpath=None,disabled=None,enabled=None): '''Initialise the instance. @param base: The @param searchpath: A list of paths to look for plugin modules. @param optparser: The OptionParser instance for this run (optional). Use to allow plugins to extend command line options. @param types: A sequence specifying the types of plugins to load. This should be sequnce containing one or more of the TYPE_... constants. If None (the default), all plugins will be loaded. @param pluginconfpath: A list of paths to look for plugin configuration files. Defaults to "/etc/yum/pluginconf.d". ''' if not pluginconfpath: pluginconfpath = ['/etc/yum/pluginconf.d'] self.searchpath = searchpath self.pluginconfpath = pluginconfpath self.base = weakref(base) self.optparser = optparser self.cmdline = (None, None) self.verbose_logger = logging.getLogger("yum.verbose.YumPlugins") self.disabledPlugins = disabled self.enabledPlugins = enabled if types is None: types = ALL_TYPES if not isinstance(types, (list, tuple)): types = (types,) if id(TYPE_INTERFACE) in [id(t) for t in types]: self.verbose_logger.log(logginglevels.INFO_2, 'Deprecated constant TYPE_INTERFACE during plugin ' 'initialization.\nPlease use TYPE_INTERACTIVE instead.') self._importplugins(types) self.cmdlines = {} # Call close handlers when yum exit's atexit.register(self.run, 'close') # Let plugins register custom config file options self.run('config') def run(self, slotname, **kwargs): '''Run all plugin functions for the given slot. ''' # Determine handler class to use conduitcls = SLOT_TO_CONDUIT.get(slotname, None) if conduitcls is None: raise ValueError('unknown slot name "%s"' % slotname) conduitcls = eval(conduitcls) # Convert name to class object for modname, func in self._pluginfuncs[slotname]: self.verbose_logger.log(logginglevels.DEBUG_4, 'Running "%s" handler for "%s" plugin', slotname, modname) _, conf = self._plugins[modname] func(conduitcls(self, self.base, conf, **kwargs)) def _importplugins(self, types): '''Load plugins matching the given types. ''' # Initialise plugin dict self._plugins = {} self._pluginfuncs = {} for slot in SLOTS: self._pluginfuncs[slot] = [] # Import plugins self._used_disable_plugin = set() self._used_enable_plugin = set() for dir in self.searchpath: if not os.path.isdir(dir): continue for modulefile in sorted(glob.glob('%s/*.py' % dir)): self._loadplugin(modulefile, types) # If we are in verbose mode we get the full 'Loading "blah" plugin' lines if (self._plugins and not self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3)): # Mostly copied from YumOutput._outKeyValFill() key = _("Loaded plugins: ") val = ", ".join(sorted(self._plugins)) nxt = ' ' * (utf8_width(key) - 2) + ': ' width = 80 if hasattr(self.base, 'term'): width = self.base.term.columns self.verbose_logger.log(logginglevels.INFO_2, fill(val, width=width, initial_indent=key, subsequent_indent=nxt)) if self.disabledPlugins: for wc in self.disabledPlugins: if wc not in self._used_disable_plugin: self.verbose_logger.log(logginglevels.INFO_2, _("No plugin match for: %s") % wc) del self._used_disable_plugin if self.enabledPlugins: for wc in self.enabledPlugins: if wc not in self._used_enable_plugin: self.verbose_logger.log(logginglevels.INFO_2, _("No plugin match for: %s") % wc) del self._used_enable_plugin @staticmethod def _plugin_cmdline_match(modname, plugins, used): """ Check if this plugin has been temporary enabled/disabled. """ if plugins is None: return False for wc in plugins: if fnmatch.fnmatch(modname, wc): used.add(wc) return True return False def _loadplugin(self, modulefile, types): '''Attempt to import a plugin module and register the hook methods it uses. ''' dir, modname = os.path.split(modulefile) modname = modname.split('.py')[0] conf = self._getpluginconf(modname) if (not conf or (not config.getOption(conf, 'main', 'enabled', config.BoolOption(False)) and not self._plugin_cmdline_match(modname, self.enabledPlugins, self._used_enable_plugin))): self.verbose_logger.debug(_('Not loading "%s" plugin, as it is disabled'), modname) return try: fp, pathname, description = imp.find_module(modname, [dir]) try: module = imp.load_module(modname, fp, pathname, description) finally: fp.close() except: if self.verbose_logger.isEnabledFor(logginglevels.DEBUG_4): raise # Give full backtrace: self.verbose_logger.error(_('Plugin "%s" can\'t be imported') % modname) return # Check API version required by the plugin if not hasattr(module, 'requires_api_version'): self.verbose_logger.error( _('Plugin "%s" doesn\'t specify required API version') % modname) return if not apiverok(API_VERSION, module.requires_api_version): self.verbose_logger.error( _('Plugin "%s" requires API %s. Supported API is %s.') % ( modname, module.requires_api_version, API_VERSION, )) return # Check plugin type against filter plugintypes = getattr(module, 'plugin_type', ALL_TYPES) if not isinstance(plugintypes, (list, tuple)): plugintypes = (plugintypes,) if len(plugintypes) < 1: return for plugintype in plugintypes: if id(plugintype) == id(TYPE_INTERFACE): self.verbose_logger.log(logginglevels.INFO_2, 'Plugin "%s" uses deprecated constant ' 'TYPE_INTERFACE.\nPlease use TYPE_INTERACTIVE ' 'instead.', modname) if plugintype not in types: return # This should really work like enable/disable repo. and be based on the # cmd line order ... but the API doesn't really allow that easily. # FIXME: Fix for 4.* if (self._plugin_cmdline_match(modname, self.disabledPlugins, self._used_disable_plugin) and not self._plugin_cmdline_match(modname, self.enabledPlugins, self._used_enable_plugin)): return self.verbose_logger.log(logginglevels.DEBUG_3, _('Loading "%s" plugin'), modname) # Store the plugin module and its configuration file if modname not in self._plugins: self._plugins[modname] = (module, conf) else: raise Errors.ConfigError(_('Two or more plugins with the name "%s" ' \ 'exist in the plugin search path') % modname) for slot in SLOTS: funcname = slot+'_hook' if hasattr(module, funcname): self._pluginfuncs[slot].append( (modname, getattr(module, funcname)) ) def _getpluginconf(self, modname): '''Parse the plugin specific configuration file and return a IncludingConfigParser instance representing it. Returns None if there was an error reading or parsing the configuration file. ''' for dir in self.pluginconfpath: conffilename = os.path.join(dir, modname + ".conf") if os.access(conffilename, os.R_OK): # Found configuration file break self.verbose_logger.log(logginglevels.INFO_2, _("Configuration file %s not found") % conffilename) else: # for # Configuration files for the plugin not found self.verbose_logger.log(logginglevels.INFO_2, _("Unable to find configuration file for plugin %s") % modname) return None parser = ConfigParser() confpp_obj = ConfigPreProcessor(conffilename) try: parser.readfp(confpp_obj) except ParsingError, e: raise Errors.ConfigError("Couldn't parse %s: %s" % (conffilename, str(e))) return parser def setCmdLine(self, opts, commands): '''Set the parsed command line options so that plugins can access them ''' self.cmdline = (opts, commands) class DummyYumPlugins: ''' This class provides basic emulation of the YumPlugins class. It exists so that calls to plugins.run() don't fail if plugins aren't in use. ''' def run(self, *args, **kwargs): pass def setCmdLine(self, *args, **kwargs): pass class PluginConduit: def __init__(self, parent, base, conf): self._parent = parent self._base = base self._conf = conf self.logger = logging.getLogger("yum.plugin") self.verbose_logger = logging.getLogger("yum.verbose.plugin") def info(self, level, msg): converted_level = logginglevels.logLevelFromDebugLevel(level) self.verbose_logger.log(converted_level, msg) def error(self, level, msg): converted_level = logginglevels.logLevelFromErrorLevel(level) self.logger.log(converted_level, msg) def promptYN(self, msg): self.info(2, msg) if self._base.conf.assumeyes: return 1 else: return self._base.userconfirm() def getYumVersion(self): import yum return yum.__version__ def getOptParser(self): '''Return the optparse.OptionParser instance for this execution of Yum In the "config" and "init" slots a plugin may add extra options to this instance to extend the command line options that Yum exposes. In all other slots a plugin may only read the OptionParser instance. Any modification of the instance at this point will have no effect. See the getCmdLine() method for details on how to retrieve the parsed values of command line options. @return: the global optparse.OptionParser instance used by Yum. May be None if an OptionParser isn't in use. ''' # ' xemacs highlighting hack # This isn't API compatible :( # return self._parent.optparser.plugin_option_group return self._parent.optparser def confString(self, section, opt, default=None): '''Read a string value from the plugin's own configuration file @param section: Configuration file section to read. @param opt: Option name to read. @param default: Value to read if option is missing. @return: String option value read, or default if option was missing. ''' # ' xemacs highlighting hack return config.getOption(self._conf, section, opt, config.Option(default)) def confInt(self, section, opt, default=None): '''Read an integer value from the plugin's own configuration file @param section: Configuration file section to read. @param opt: Option name to read. @param default: Value to read if option is missing. @return: Integer option value read, or default if option was missing or could not be parsed. ''' return config.getOption(self._conf, section, opt, config.IntOption(default)) def confFloat(self, section, opt, default=None): '''Read a float value from the plugin's own configuration file @param section: Configuration file section to read. @param opt: Option name to read. @param default: Value to read if option is missing. @return: Float option value read, or default if option was missing or could not be parsed. ''' return config.getOption(self._conf, section, opt, config.FloatOption(default)) def confBool(self, section, opt, default=None): '''Read a boolean value from the plugin's own configuration file @param section: Configuration file section to read. @param opt: Option name to read. @param default: Value to read if option is missing. @return: Boolean option value read, or default if option was missing or could not be parsed. ''' return config.getOption(self._conf, section, opt, config.BoolOption(default)) def registerPackageName(self, name): self._base.run_with_package_names.add(name) class ConfigPluginConduit(PluginConduit): def registerOpt(self, name, valuetype, where, default): '''Register a yum configuration file option. @param name: Name of the new option. @param valuetype: Option type (PLUG_OPT_BOOL, PLUG_OPT_STRING ...) @param where: Where the option should be available in the config file. (PLUG_OPT_WHERE_MAIN, PLUG_OPT_WHERE_REPO, ...) @param default: Default value for the option if not set by the user. ''' warnings.warn('registerOpt() will go away in a future version of Yum.\n' 'Please manipulate config.YumConf and config.RepoConf directly.', DeprecationWarning) type2opt = { PLUG_OPT_STRING: config.Option, PLUG_OPT_INT: config.IntOption, PLUG_OPT_BOOL: config.BoolOption, PLUG_OPT_FLOAT: config.FloatOption, } if where == PLUG_OPT_WHERE_MAIN: setattr(config.YumConf, name, type2opt[valuetype](default)) elif where == PLUG_OPT_WHERE_REPO: setattr(config.RepoConf, name, type2opt[valuetype](default)) elif where == PLUG_OPT_WHERE_ALL: option = type2opt[valuetype](default) setattr(config.YumConf, name, option) setattr(config.RepoConf, name, config.Inherit(option)) def registerCommand(self, command): if hasattr(self._base, 'registerCommand'): self._base.registerCommand(command) else: raise Errors.ConfigError(_('registration of commands not supported')) class PostConfigPluginConduit(ConfigPluginConduit): def getConf(self): return self._base.conf class InitPluginConduit(PluginConduit): def getConf(self): return self._base.conf def getRepos(self): '''Return Yum's container object for all configured repositories. @return: Yum's RepoStorage instance ''' return self._base.repos class ArgsPluginConduit(InitPluginConduit): def __init__(self, parent, base, conf, args): InitPluginConduit.__init__(self, parent, base, conf) self._args = args def getArgs(self): return self._args class PreRepoSetupPluginConduit(InitPluginConduit): def getCmdLine(self): '''Return parsed command line options. @return: (options, commands) as returned by OptionParser.parse_args() ''' return self._parent.cmdline def getRpmDB(self): '''Return a representation of local RPM database. This allows querying of installed packages. @return: rpmUtils.RpmDBHolder instance ''' return self._base.rpmdb class PostRepoSetupPluginConduit(PreRepoSetupPluginConduit): def getGroups(self): '''Return group information. @return: yum.comps.Comps instance ''' return self._base.comps class DownloadPluginConduit(PostRepoSetupPluginConduit): def __init__(self, parent, base, conf, pkglist, errors=None): PostRepoSetupPluginConduit.__init__(self, parent, base, conf) self._pkglist = pkglist self._errors = errors def getDownloadPackages(self): '''Return a list of package objects representing packages to be downloaded. ''' return self._pkglist def getErrors(self): '''Return a dictionary of download errors. The returned dictionary is indexed by package object. Each element is a list of strings describing the error. ''' if not self._errors: return {} return self._errors class MainPluginConduit(PostRepoSetupPluginConduit): def getPackages(self, repo=None): if repo: arg = repo.id else: arg = None return self._base.pkgSack.returnPackages(arg) def getPackageByNevra(self, nevra): '''Retrieve a package object from the packages loaded by Yum using nevra information @param nevra: A tuple holding (name, epoch, version, release, arch) for a package @return: A PackageObject instance (or subclass) ''' return self._base.getPackageObject(nevra) def delPackage(self, po): po.repo.sack.delPackage(po) def getTsInfo(self): return self._base.tsInfo class DepsolvePluginConduit(MainPluginConduit): def __init__(self, parent, base, conf, rescode=None, restring=[]): MainPluginConduit.__init__(self, parent, base, conf) 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('.') return int(maj), int(min) def apiverok(a, b): '''Return true if API version "a" supports API version "b" ''' a = parsever(a) b = parsever(b) if a[0] != b[0]: return 0 if a[1] >= b[1]: return 1 return 0 yum-3.4.3/yum/pkgtag_db.py0000664000076400007640000001153311602434452014437 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2009 Red Hat, Inc # written by seth vidal # parse sqlite tag database # return pkgnames and tag that was matched from sqlutils import sqlite, executeSQL, sql_esc from Errors import PkgTagsError import sqlutils import sys import misc def catchSqliteException(func): """This decorator converts sqlite exceptions into PkgTagsError""" def newFunc(*args, **kwargs): try: return func(*args, **kwargs) except sqlutils.sqlite.Error, e: # 2.4.x requires this, but 2.6.x complains about even hasattr() # of e.message ... *sigh* if sys.hexversion < 0x02050000: if hasattr(e,'message'): raise PkgTagsError, str(e.message) else: raise PkgTagsError, str(e) raise PkgTagsError, str(e) newFunc.__name__ = func.__name__ newFunc.__doc__ = func.__doc__ newFunc.__dict__.update(func.__dict__) return newFunc class PackageTagDB(object): def __init__(self, repoid, sqlite_file): self.sqlite_file = sqlite_file self.repoid = repoid # take a path to the sqlite tag db # open it and leave a cursor in place for the db self._conn = sqlite.connect(sqlite_file) self.cur = self._conn.cursor() def _getTagsCount(self): ''' Unused, so no need to cache. ''' for n in self._sql_exec("select count(*) from packagetags",): return n[0] count = property(fget=lambda self: self._getTagsCount(), doc="Number of entries in the pkgtag DB") @catchSqliteException def _sql_exec(self, sql, *args): """ Exec SQL against an MD of the repo, return a cursor. """ executeSQL(self.cur, sql, *args) return self.cur def search_tags(self, tag): """Search by tag name/glob Return dict of dict[packagename] = [stringmatched, stringmatched, ...]""" res = {} (tag, esc) = sql_esc(tag) query = "SELECT name, tag, score FROM packagetags where tag like ? %s" % esc tag = '%' + tag + '%' rows = self._sql_exec(query, (tag,)) for (name, tag, score) in rows: if name not in res: res[name] = [] res[name].append(tag) return res def search_names(self, name): """Search by package name/glob. Return dict of dict[packagename] = [tag1, tag2, tag3, tag4, ...]""" res = {} (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,)) for (name, tag, score) in rows: if name not in res: res[name] = [] res[name].append(tag) return res class PackageTags(object): def __init__(self): self.db_objs = {} def add(self, repoid, sqlite_file): if repoid in self.db_objs: raise PkgTagsError, "Already added tags from %s" % repoid dbobj = PackageTagDB(repoid, sqlite_file) self.db_objs[repoid] = dbobj def remove(self, repoid): if repoid in self.db_objs: del self.db_objs[repoid] else: raise PkgTagsError, "No tag db for %s" % repoid def search_names(self, name): res = {} for ptd in self.db_objs.values(): for (name, taglist) in ptd.search_names(name).items(): if not name in res: res[name] = [] res[name].extend(taglist) out = {} for (name, taglist) in res.items(): out[name] = misc.unique(taglist) return out def search_tags(self, tagname): res = {} for ptd in self.db_objs.values(): for (name, taglist) in ptd.search_tags(tagname).items(): if not name in res: res[name] = [] res[name].extend(taglist) out = {} for (name, taglist) in res.items(): out[name] = misc.unique(taglist) return out yum-3.4.3/yum/packages.py0000664000076400007640000024221011602434452014271 0ustar jamesjames#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2004 Duke University # Written by Seth Vidal """ Classes and functions dealing with rpm package representations. """ import rpm import os import os.path import misc import i18n import re import fnmatch import stat import warnings from subprocess import Popen, PIPE from rpmUtils import RpmUtilsError import rpmUtils.miscutils from rpmUtils.miscutils import flagToString, stringToVersion, compareVerOnly import Errors import errno import struct from constants import * from operator import itemgetter import urlparse urlparse.uses_fragment.append("media") from urlgrabber.grabber import URLGrabber, URLGrabError try: import xattr if not hasattr(xattr, 'get'): xattr = None # This is a "newer" API. except ImportError: xattr = None # For verify import pwd import grp def comparePoEVR(po1, po2): """ Compare two Package or PackageEVR objects. """ (e1, v1, r1) = (po1.epoch, po1.version, po1.release) (e2, v2, r2) = (po2.epoch, po2.version, po2.release) return rpmUtils.miscutils.compareEVR((e1, v1, r1), (e2, v2, r2)) def comparePoEVREQ(po1, po2): """ Compare two Package or PackageEVR objects for equality. """ (e1, v1, r1) = (po1.epoch, po1.version, po1.release) (e2, v2, r2) = (po2.epoch, po2.version, po2.release) if r1 != r2: return False if v1 != v2: return False if e1 != e2: return False return True def buildPkgRefDict(pkgs, casematch=True): """take a list of pkg objects and return a dict the contains all the possible naming conventions for them eg: for (name,i386,0,1,1) dict[name] = (name, i386, 0, 1, 1) dict[name.i386] = (name, i386, 0, 1, 1) dict[name-1-1.i386] = (name, i386, 0, 1, 1) dict[name-1] = (name, i386, 0, 1, 1) dict[name-1-1] = (name, i386, 0, 1, 1) dict[0:name-1-1.i386] = (name, i386, 0, 1, 1) dict[name-0:1-1.i386] = (name, i386, 0, 1, 1) """ pkgdict = {} for pkg in pkgs: (n, a, e, v, r) = pkg.pkgtup if not casematch: n = n.lower() a = a.lower() e = e.lower() v = v.lower() r = r.lower() name = n nameArch = '%s.%s' % (n, a) nameVerRelArch = '%s-%s-%s.%s' % (n, v, r, a) nameVer = '%s-%s' % (n, v) nameVerRel = '%s-%s-%s' % (n, v, r) 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 item not in pkgdict: pkgdict[item] = [] pkgdict[item].append(pkg) return pkgdict def parsePackages(pkgs, usercommands, casematch=0, unique='repo-epoch-name-version-release-arch'): """matches up the user request versus a pkg list: for installs/updates available pkgs should be the 'others list' for removes it should be the installed list of pkgs takes an optional casematch option to determine if case should be matched exactly. Defaults to not matching.""" pkgdict = buildPkgRefDict(pkgs, bool(casematch)) exactmatch = [] matched = [] unmatched = [] for command in usercommands: if not casematch: command = command.lower() if command in pkgdict: exactmatch.extend(pkgdict[command]) del pkgdict[command] else: # anything we couldn't find a match for # could mean it's not there, could mean it's a wildcard if misc.re_glob(command): trylist = pkgdict.keys() # command and pkgdict are already lowered if not casematch # so case sensitive is always fine restring = fnmatch.translate(command) regex = re.compile(restring) foundit = 0 for item in trylist: if regex.match(item): matched.extend(pkgdict[item]) del pkgdict[item] foundit = 1 if not foundit: unmatched.append(command) else: unmatched.append(command) unmatched = misc.unique(unmatched) if unique == 'repo-epoch-name-version-release-arch': # pkg.__hash__ matched = misc.unique(matched) exactmatch = misc.unique(exactmatch) elif unique == 'repo-pkgkey': # So we get all pkg entries from a repo def pkgunique(pkgs): u = {} for pkg in pkgs: mark = "%s%s" % (pkg.repo.id, pkg.pkgKey) u[mark] = pkg return u.values() matched = pkgunique(matched) exactmatch = pkgunique(exactmatch) else: raise ValueError, "Bad value for unique: %s" % unique return exactmatch, matched, unmatched class FakeSack: """ Fake PackageSack to use with FakeRepository""" 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 class FakeRepository: """Fake repository class for use in rpmsack package objects""" def _set_cleanup_repoid(self, repoid): """ Set the repoid, but because it can be random ... clean it up. """ # We don't want repoids to contain random bytes that can be # in the FS directories. It's also nice if they aren't "huge". So # just chop to the rpm name. pathbased = False if '/' in repoid: repoid = os.path.basename(repoid) pathbased = True if repoid.endswith(".rpm"): repoid = repoid[:-4] pathbased = True bytes = [] # Just in case someone uses mv to be evil: if pathbased: bytes.append('/') for byte in repoid: if ord(byte) >= 128: byte = '?' bytes.append(byte) self.id = "".join(bytes) def __init__(self, repoid): self._set_cleanup_repoid(repoid) self.name = self.id self.sack = FakeSack() def __cmp__(self, other): if self.id > other.id: return 1 elif self.id < other.id: return -1 else: return 0 def __hash__(self): return hash(self.id) def __str__(self): return self.id # 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""" def __init__(self): self.name = None self.version = None self.release = None self.epoch = None self.arch = None # self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release) self._checksums = [] # (type, checksum, id(0,1) def _ui_envra(self): if self.epoch == '0': out = '%s-%s-%s.%s' % (self.name, self.version, self.release, self.arch) else: out = '%s:%s-%s-%s.%s' % (self.epoch, self.name, self.version, self.release, self.arch) return out ui_envra = property(fget=lambda self: self._ui_envra()) def _ui_nevra(self): if self.epoch == '0': out = '%s-%s-%s.%s' % (self.name, self.version, self.release, self.arch) else: out = '%s-%s:%s-%s.%s' % (self.name, self.epoch, self.version, self.release, self.arch) return out ui_nevra = property(fget=lambda self: self._ui_nevra()) def __str__(self): return self.ui_envra def printVer(self): """returns a printable version string - including epoch, if it's set""" if self.epoch != '0': ver = '%s:%s-%s' % (self.epoch, self.version, self.release) else: ver = '%s-%s' % (self.version, self.release) return ver def verCMP(self, other): """ Compare package to another one, only rpm-version ordering. """ if not other: return 1 ret = cmp(self.name, other.name) if ret == 0: ret = comparePoEVR(self, other) return ret def __cmp__(self, other): """ Compare packages, this is just for UI/consistency. """ ret = self.verCMP(other) if ret == 0: ret = cmp(self.arch, other.arch) if ret == 0 and hasattr(self, 'repoid') and hasattr(other, 'repoid'): ret = cmp(self.repoid, other.repoid) # We want 'installed' to appear over 'abcd' and 'xyz', so boost that if ret and self.repoid == 'installed': return 1 if ret and other.repoid == 'installed': return -1 return ret def __eq__(self, other): """ Compare packages for yes/no equality, includes everything in the UI package comparison. """ if not other: return False if self.pkgtup != other.pkgtup: return False if hasattr(self, 'repoid') and hasattr(other, 'repoid'): if self.repoid != other.repoid: return False return True def __ne__(self, other): if not (self == other): return True return False def __getitem__(self, key): return getattr(self, key) def verEQ(self, other): """ Compare package to another one, only rpm-version equality. """ if not other: 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 def verLE(self, other): """ Uses verCMP, tests if the other _rpm-version_ is <= ours. """ return self.verCMP(other) <= 0 def verGT(self, other): """ Uses verCMP, tests if the other _rpm-version_ is > ours. """ return self.verCMP(other) > 0 def verGE(self, other): """ Uses verCMP, tests if the other _rpm-version_ is >= ours. """ return self.verCMP(other) >= 0 def __repr__(self): return "<%s : %s (%s)>" % (self.__class__.__name__, str(self),hex(id(self))) def returnSimple(self, varname): warnings.warn("returnSimple() will go away in a future version of Yum.\n", Errors.YumFutureDeprecationWarning, stacklevel=2) return getattr(self, varname) def returnChecksums(self): return self._checksums checksums = property(fget=lambda self: self.returnChecksums()) def returnIdSum(self): for (csumtype, csum, csumid) in self.checksums: if csumid: return (csumtype, csum) _not_found_repo = FakeRepository('-') _not_found_repo.cost = 0 class YumNotFoundPackage(PackageObject): def __init__(self, pkgtup): self.name = pkgtup[0] self.arch = pkgtup[1] self.epoch = pkgtup[2] self.version = pkgtup[3] self.release = pkgtup[4] self.pkgtup = pkgtup self.size = 0 self._checksums = [] # (type, checksum, id(0,1) self.repo = _not_found_repo self.repoid = _not_found_repo.id # Fakeout output.py that it's a real pkg. ... def _ui_from_repo(self): """ This just returns '-' """ return self.repoid ui_from_repo = property(fget=lambda self: self._ui_from_repo()) def verifyLocalPkg(self): """check the package checksum vs the localPkg return True if pkg is good, False if not""" return False # 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""" def __init__(self): self.prco = {} self.prco['obsoletes'] = [] # (name, flag, (e,v,r)) self.prco['conflicts'] = [] # (name, flag, (e,v,r)) self.prco['requires'] = [] # (name, flag, (e,v,r)) self.prco['provides'] = [] # (name, flag, (e,v,r)) self.files = {} self.files['file'] = [] self.files['dir'] = [] self.files['ghost'] = [] self._changelog = [] # (ctime, cname, ctext) self.licenses = [] self._hash = None # FIXME: This is identical to PackageObject.__eq__ and __ne__, should be # remove (is .repoid fine here? ... we need it, maybe .repo.id). def __eq__(self, other): if not other: # check if other not is a package object. return False if self.pkgtup != other.pkgtup: return False if self.repoid != other.repoid: return False return True def __ne__(self, other): if not (self == other): return True return False def returnEVR(self): return PackageEVR(self.epoch, self.version, self.release) def __hash__(self): if self._hash is None: mystr = '%s - %s:%s-%s-%s.%s' % (self.repo.id, self.epoch, self.name, self.version, self.release, self.arch) self._hash = hash(mystr) return self._hash def returnPrco(self, prcotype, printable=False): """return list of provides, requires, conflicts or obsoletes""" 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 return prcos def checkPrco(self, prcotype, prcotuple): """returns 1 or 0 if the pkg contains the requested tuple/tuple range""" # get rid of simple cases - nothing if prcotype not in self.prco: return 0 # First try and exact match, then search # Make it faster, if it's "big". if len(self.prco[prcotype]) <= 8: if prcotuple in self.prco[prcotype]: return 1 else: if not hasattr(self, '_prco_lookup'): self._prco_lookup = {'obsoletes' : None, 'conflicts' : None, 'requires' : None, 'provides' : None} if self._prco_lookup[prcotype] is None: self._prco_lookup[prcotype] = set(self.prco[prcotype]) if prcotuple in self._prco_lookup[prcotype]: return 1 if True: # Keep indentation for patch smallness... # make us look it up and compare (reqn, reqf, (reqe, reqv ,reqr)) = prcotuple if reqf is not None: return self.inPrcoRange(prcotype, prcotuple) else: for (n, f, (e, v, r)) in self.returnPrco(prcotype): if i18n.str_eq(reqn, n): return 1 return 0 def inPrcoRange(self, prcotype, reqtuple): """returns true if the package has a the prco that satisfies the reqtuple range, assume false. Takes: prcotype, requested prco tuple""" return bool(self.matchingPrcos(prcotype, reqtuple)) def matchingPrcos(self, prcotype, reqtuple): (reqn, reqf, (reqe, reqv, reqr)) = reqtuple # find the named entry in pkgobj, do the comparsion result = [] for (n, f, (e, v, r)) in self.returnPrco(prcotype): if not i18n.str_eq(reqn, n): continue if f == '=': f = 'EQ' if f != 'EQ' and prcotype == 'provides': # isn't this odd, it's not 'EQ' and it is a provides # - it really should be EQ # use the pkgobj's evr for the comparison if e is None: e = self.epoch if v is None: v = self.ver if r is None: r = self.rel #(e, v, r) = (self.epoch, self.ver, self.rel) matched = rpmUtils.miscutils.rangeCompare( reqtuple, (n, f, (e, v, r))) if matched: result.append((n, f, (e, v, r))) 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 for ftype in ('file', 'dir', 'ghost'): if reqtuple[0] in self.returnFileEntries(ftype, pri_only): return True return False def returnChangelog(self): """return changelog entries""" 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 self.files: if ftype in self.files: if primary_only: if ftype == 'dir': match = misc.re_primary_dirname else: match = misc.re_primary_filename return [fn for fn in self.files[ftype] if match(fn)] return self.files[ftype] return [] 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): if not hasattr(self, '_cache_prco_names_' + prcotype): data = [n for (n, f, v) in self.returnPrco(prcotype)] setattr(self, '_cache_prco_names_' + prcotype, data) return getattr(self, '_cache_prco_names_' + prcotype) def getProvidesNames(self): warnings.warn('getProvidesNames() will go away in a future version of Yum.\n', Errors.YumDeprecationWarning, stacklevel=2) return self.provides_names def simpleFiles(self, ftype='files'): warnings.warn('simpleFiles() will go away in a future version of Yum.' 'Use returnFileEntries(primary_only=True)\n', Errors.YumDeprecationWarning, stacklevel=2) if self.files and ftype in self.files: return self.files[ftype] return [] filelist = property(fget=lambda self: self.returnFileEntries(ftype='file')) dirlist = property(fget=lambda self: self.returnFileEntries(ftype='dir')) ghostlist = property(fget=lambda self: self.returnFileEntries(ftype='ghost')) requires = property(fget=lambda self: self.returnPrco('requires')) provides = property(fget=lambda self: self.returnPrco('provides')) obsoletes = property(fget=lambda self: self.returnPrco('obsoletes')) conflicts = property(fget=lambda self: self.returnPrco('conflicts')) provides_names = property(fget=lambda self: self.returnPrcoNames('provides')) requires_names = property(fget=lambda self: self.returnPrcoNames('requires')) conflicts_names = property(fget=lambda self: self.returnPrcoNames('conflicts')) obsoletes_names = property(fget=lambda self: self.returnPrcoNames('obsoletes')) provides_print = property(fget=lambda self: self.returnPrco('provides', True)) requires_print = property(fget=lambda self: self.returnPrco('requires', True)) conflicts_print = property(fget=lambda self: self.returnPrco('conflicts', True)) obsoletes_print = property(fget=lambda self: self.returnPrco('obsoletes', True)) changelog = property(fget=lambda self: self.returnChangelog()) EVR = property(fget=lambda self: self.returnEVR()) def _getBaseName(self): """ Return the "base name" of the package, atm. we can only look at the sourcerpm. """ if hasattr(self, '_base_package_name_ret'): return self._base_package_name_ret if hasattr(self, 'sourcerpm') and self.sourcerpm: (n, v, r, e, a) = rpmUtils.miscutils.splitFilename(self.sourcerpm) if n != self.name: self._base_package_name_ret = n return n # If there is no sourcerpm, or sourcerpm == us, use .name self._base_package_name_ret = self.name return self._base_package_name_ret 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. Note that you almost certainly want to use pkg.verEQ() or pkg.verGT() etc. instead. """ def __init__(self,e,v,r): self.epoch = e self.ver = v self.version = v self.rel = r self.release = r def compare(self,other): return rpmUtils.miscutils.compareEVR((self.epoch, self.ver, self.rel), (other.epoch, other.ver, other.rel)) def __lt__(self, other): if self.compare(other) < 0: return True return False def __gt__(self, other): if self.compare(other) > 0: return True return False def __le__(self, other): if self.compare(other) <= 0: return True return False def __ge__(self, other): if self.compare(other) >= 0: return True return False def __eq__(self, other): return comparePoEVREQ(self, other) def __ne__(self, other): if not (self == other): return True 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""" def __init__(self, repo, pkgdict = None): PackageObject.__init__(self) RpmBase.__init__(self) self.repoid = repo.id self.repo = repo self.state = None self._loadedfiles = False self._verify_local_pkg_cache = None if pkgdict != None: self.importFromDict(pkgdict) self.ver = self.version self.rel = self.release self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release) def _ui_from_repo(self): """ This reports the repo the package is from, we integrate YUMDB info. for RPM packages so a package from "fedora" that is installed has a ui_from_repo of "@fedora". Note that, esp. with the --releasever option, "fedora" or "rawhide" isn't authoritive. So we also check against the current releasever and if it is different we also print the YUMDB releasever. This means that installing from F12 fedora, while running F12, would report as "@fedora/13". """ if self.repoid == 'installed' and 'from_repo' in self.yumdb_info: end = '' if (self.rpmdb.releasever is not None and 'releasever' in self.yumdb_info and self.yumdb_info.releasever != self.rpmdb.releasever): end = '/' + self.yumdb_info.releasever return '@' + self.yumdb_info.from_repo + end return self.repoid ui_from_repo = property(fget=lambda self: self._ui_from_repo()) def exclude(self): """remove self from package sack""" self.repo.sack.delPackage(self) def printVer(self): """returns a printable version string - including epoch, if it's set""" if self.epoch != '0': ver = '%s:%s-%s' % (self.epoch, self.version, self.release) else: ver = '%s-%s' % (self.version, self.release) return ver def compactPrint(self): ver = self.printVer() return "%s.%s %s" % (self.name, self.arch, ver) def _size(self): return self.packagesize def _remote_path(self): return self.relativepath def _remote_url(self): """returns a URL that can be used for downloading the package. Note that if you're going to download the package in your tool, you should use self.repo.getPackage.""" base = self.basepath if base: # urljoin sucks in the reverse way that os.path.join sucks :) if base[-1] != '/': base = base + '/' return urlparse.urljoin(base, self.remote_path) return urlparse.urljoin(self.repo.urls[0], self.remote_path) size = property(fget=lambda self: self._size()) remote_path = property(_remote_path) remote_url = property(_remote_url) def _committer(self): "Returns the name of the last person to do a commit to the changelog." if hasattr(self, '_committer_ret'): return self._committer_ret def _nf2ascii(x): """ does .encode("ascii", "replace") but it never fails. """ ret = [] for val in x: if ord(val) >= 128: val = '?' ret.append(val) return "".join(ret) if not len(self.changelog): # Empty changelog is _possible_ I guess self._committer_ret = self.packager return self._committer_ret val = self.changelog[0][1] # Chagnelog data is in multiple locale's, so we convert to ascii # ignoring "bad" chars. val = _nf2ascii(val) # Hacky way to get rid of version numbers... ix = val.find('> ') if ix != -1: val = val[0:ix+1] self._committer_ret = val return self._committer_ret committer = property(_committer) def _committime(self): "Returns the time of the last commit to the changelog." if hasattr(self, '_committime_ret'): return self._committime_ret if not len(self.changelog): # Empty changelog is _possible_ I guess self._committime_ret = self.buildtime return self._committime_ret self._committime_ret = self.changelog[0][0] return self._committime_ret committime = property(_committime) # FIXME test this to see if it causes hell elsewhere def _checksum(self): "Returns the 'default' checksum" return self.checksums[0][1] checksum = property(_checksum) def getDiscNum(self): if self.basepath is None: return None (scheme, netloc, path, query, fragid) = urlparse.urlsplit(self.basepath) if scheme == "media": if len(fragid) == 0: return 0 return int(fragid) return None def returnHeaderFromPackage(self): rpmfile = self.localPkg() ts = rpmUtils.transaction.initReadOnlyTransaction() try: hdr = rpmUtils.miscutils.hdrFromPackage(ts, rpmfile) except rpmUtils.RpmUtilsError: raise Errors.RepoError, 'Package Header %s: RPM Cannot open' % self return hdr def returnLocalHeader(self): """returns an rpm header object from the package object's local header cache""" if os.path.exists(self.localHdr()): try: hlist = rpm.readHeaderListFromFile(self.localHdr()) hdr = hlist[0] except (rpm.error, IndexError): raise Errors.RepoError, 'Package Header %s: Cannot open' % self else: raise Errors.RepoError, 'Package Header %s: Not Available' % self return hdr def localPkg(self): """return path to local package (whether it is present there, or not)""" if not hasattr(self, 'localpath'): rpmfn = os.path.basename(self.remote_path) self.localpath = self.repo.pkgdir + '/' + rpmfn return self.localpath def localHdr(self): """return path to local cached Header file downloaded from package byte ranges""" if not hasattr(self, 'hdrpath'): pkgname = os.path.basename(self.remote_path) hdrname = pkgname[:-4] + '.hdr' self.hdrpath = self.repo.hdrdir + '/' + hdrname return self.hdrpath def verifyLocalPkg(self): """check the package checksum vs the localPkg return True if pkg is good, False if not""" # This is called a few times now, so we want some way to not have to # read+checksum "large" datasets multiple times per. transaction. try: nst = os.stat(self.localPkg()) except OSError, e: return False if (hasattr(self, '_verify_local_pkg_cache') and self._verify_local_pkg_cache): ost = self._verify_local_pkg_cache if (ost.st_ino == nst.st_ino and ost.st_dev == nst.st_dev and ost.st_mtime == nst.st_mtime and ost.st_size == nst.st_size): return True (csum_type, csum) = self.returnIdSum() try: filesum = misc.checksum(csum_type, self.localPkg(), datasize=self.packagesize) except Errors.MiscError: return False if filesum != csum: return False self._verify_local_pkg_cache = nst return True # See: http://www.freedesktop.org/wiki/CommonExtendedAttributes def _localXattrUrl(self): """ Get the user.xdg.origin.url value from the local pkg. ... if it's present. We cache this so we can access it after the file has been deleted (keepcache=False). """ if xattr is None: return None if hasattr(self, '__cached_localXattrUrl'): return getattr(self, '__cached_localXattrUrl') if not self.verifyLocalPkg(): return None try: ret = xattr.get(self.localPkg(), 'user.xdg.origin.url') except: # Documented to be "EnvironmentError", but make sure return None setattr(self, '__cached_localXattrUrl', ret) return ret xattr_origin_url = property(lambda x: x._localXattrUrl()) def prcoPrintable(self, prcoTuple): """convert the prco tuples into a nicer human string""" warnings.warn('prcoPrintable() will go away in a future version of Yum.\n', Errors.YumDeprecationWarning, stacklevel=2) return misc.prco_tuple_to_string(prcoTuple) def requiresList(self): """return a list of requires in normal rpm format""" return self.requires_print def returnChecksums(self): return [(self.checksum_type, self.pkgId, 1)] def importFromDict(self, pkgdict): """handles an mdCache package dictionary item to populate out the package information""" # translates from the pkgdict, populating out the information for the # packageObject if hasattr(pkgdict, 'nevra'): (n, e, v, r, a) = pkgdict.nevra self.name = n self.epoch = e self.version = v self.arch = a self.release = r if hasattr(pkgdict, 'time'): self.buildtime = pkgdict.time['build'] self.filetime = pkgdict.time['file'] if hasattr(pkgdict, 'size'): self.packagesize = pkgdict.size['package'] self.archivesize = pkgdict.size['archive'] self.installedsize = pkgdict.size['installed'] if hasattr(pkgdict, 'location'): url = pkgdict.location.get('base') if url == '': url = None self.basepath = url self.relativepath = pkgdict.location['href'] if hasattr(pkgdict, 'hdrange'): self.hdrstart = pkgdict.hdrange['start'] self.hdrend = pkgdict.hdrange['end'] if hasattr(pkgdict, 'info'): for item in ['summary', 'description', 'packager', 'group', 'buildhost', 'sourcerpm', 'url', 'vendor']: setattr(self, item, pkgdict.info[item]) self.summary = self.summary.replace('\n', '') self.licenses.append(pkgdict.info['license']) if hasattr(pkgdict, 'files'): for fn in pkgdict.files: ftype = pkgdict.files[fn] if ftype not in self.files: self.files[ftype] = [] self.files[ftype].append(fn) if hasattr(pkgdict, 'prco'): for rtype in pkgdict.prco: for rdict in pkgdict.prco[rtype]: name = rdict['name'] 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 = cdict.get('date') text = cdict.get('value') author = cdict.get('author') self._changelog.append((date, author, text)) if hasattr(pkgdict, 'checksum'): ctype = pkgdict.checksum['type'] csum = pkgdict.checksum['value'] csumid = pkgdict.checksum['pkgid'] if csumid is None or csumid.upper() == 'NO': csumid = 0 elif csumid.upper() == 'YES': csumid = 1 else: csumid = 0 self._checksums.append((ctype, csum, csumid)) # from here down this is for dumping a package object back out to metadata def _return_remote_location(self): # break self.remote_url up into smaller pieces base = os.path.dirname(self.remote_url) href = os.path.basename(self.remote_url) msg = """\n""" % ( misc.to_xml(base,attrib=True), misc.to_xml(href, attrib=True)) return msg def _dump_base_items(self): packager = url = '' if self.packager: packager = misc.to_unicode(misc.to_xml(self.packager)) if self.url: url = misc.to_unicode(misc.to_xml(self.url)) (csum_type, csum, csumid) = self.checksums[0] msg = """ %s %s %s %s %s %s %s