�
�v_c@s�dZddlZddlZddlZddlZddlmZddlmZmZddlm Z ddl
ZddlZddlZddl
Z
ddlZddlmZmZmZmZddlZddlZddlZddlZddlZddlZddlmZddlmZdd lmZm Z d
�Z!d�Z"d�Z#d
�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*gd�Z+dfd��YZ,de,fd��YZ-de,fd��YZ.de,fd��YZ/dd�Z0d�Z1d �Z2d!e,fd"��YZ3d#e3fd$��YZ4d%e,fd&��YZ5d'e,fd(��YZ6d)e,fd*��YZ7d+e,fd,��YZ8d-e,fd.��YZ9d/e,fd0��YZ:d1e,fd2��YZ;d3e,fd4��YZ<d5e,fd6��YZ=d7e,fd8��YZ>d9e,fd:��YZ?d;e,fd<��YZ@d=e,fd>��YZAd?e,fd@��YZBdAe,fdB��YZCdCe,fdD��YZDdEe,fdF��YZEdGe,fdH��YZFdIe,fdJ��YZGdKe,fdL��YZHdMe,fdN��YZIdOe,fdP��YZJeZKdQe,fdR��YZLdSe,fdT��YZMdUe,fdV��YZNdWe,fdX��YZOdS(Ys<
Classes for subcommands of the yum command line interface.
i����N(t
logginglevels(t_tP_(tmisc(t
utf8_widthtutf8_width_fillt
to_unicodet
exception2msg(t
updateinfo(t
parsePackages(tLibLVMErrort
lvmerr2strcCsj||jkr|j�dS|j|}|jdj|�}|jjtd��|jj|�dS(Nthelps
Mini usage:
(tyum_cli_commandstusaget_makeOutputtloggertcriticalR(tbasetbasecmdtcmdttxt((s!/usr/share/yum-cli/yumcommands.pyt_err_mini_usage/s
cCs8|jjdkr4|jjtd��tj�ndS(s�Verify that the program is being run by the root user.
:param base: a :class:`yum.Yumbase` object.
:raises: :class:`cli.CliError`
is,You need to be root to perform this command.N(tconftuidRRRtclitCliError(R((s!/usr/share/yum-cli/yumcommands.pytcheckRootUID8scCs�|jr
dS|j�s�xw|jj�D]c}|jsA|jr)|jr)td�}|jj |�|jj td�|�t
j�q)q)WndS(s�Verify that there are gpg keys for the enabled repositories in the
rpm database.
:param base: a :class:`yum.Yumbase` object.
:raises: :class:`cli.CliError`
Ns
You have enabled checking of packages via GPG keys. This is a good thing.
However, you do not have any GPG public keys installed. You need to download
the keys for packages you wish to install and install them.
You can do that by running the command:
rpm --import public.gpg.key
Alternatively you can specify the url to the key you would like to use
for a repository in the 'gpgkey' option in a repository section and yum
will install it for you.
For more information contact your distribution or package provider.
sProblem repository: %s(t_override_sigcheckstgpgKeyChecktrepostlistEnabledtgpgcheckt
repo_gpgchecktgpgkeyRRRRR(Rtrepotmsg((s!/usr/share/yum-cli/yumcommands.pytcheckGPGKeyBs
cCsIt|�dkrE|jjtd�|�t||�tj�ndS(s/Verify that *extcmds* contains the name of at least one package for
*basecmd* to act on.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
is(Error: Need to pass a list of pkgs to %sN(tlenRRRRRR(RRtextcmds((s!/usr/share/yum-cli/yumcommands.pytcheckPackageArg`s
cCsdd}d|krd}nt|�|kr`|jjtd�|�t||�tj�ndS(s0Verify that *extcmds* contains the name of at least two packages for
*basecmd* to act on.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
is--is'Error: Need at least two packages to %sN(R&RRRRRR(RRR'tmin_args((s!/usr/share/yum-cli/yumcommands.pytcheckSwapPackageArgos
cCs�t|�dkrE|jjtd�|�t||�tj�n|jj|ddt dt �}|s�|jjtd�|�t||�tj�nt|�dkr�g|D]}|j
�r�|^q�}nt|�dkrJdjg|D]}|j^q��}|jjtd �||f�t||�tj�n|dj
�s�|jj
|dj�|jjtd
�|dj�ndS(s/Verify that *extcmds* contains the name of at least one package for
*basecmd* to act on.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
is/Error: Need to pass a repoid. and command to %sit
name_matchtignore_cases0Error: Need to pass a single valid repoid. to %sis, sAError: Need to pass only a single valid repoid. to %s, passed: %ss'Repo %s has been automatically enabled.N(R&RRRRRRRt findRepostTruet isEnabledtjointui_idt
enableRepotidtverbose_loggertinfo(RRR'Rtr((s!/usr/share/yum-cli/yumcommands.pytcheckRepoPackageArg�s.
"
(%
cCsEt|�dkrA|jjtd��t||�tj�ndS(s�Verify that *extcmds* contains the name of at least one item for
*basecmd* to act on. Generally, the items are command-line
arguments that are not the name of a package, such as a file name
passed to provides.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
isError: Need an item to matchN(R&RRRRRR(RRR'((s!/usr/share/yum-cli/yumcommands.pytcheckItemArg�s
cCsEt|�dkrA|jjtd��t||�tj�ndS(s-Verify that *extcmds* contains the name of at least one group for
*basecmd* to act on.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
is%Error: Need a group or list of groupsN(R&RRRRRR(RRR'((s!/usr/share/yum-cli/yumcommands.pyt
checkGroupArg�s
cCs�d}t|�d krG|jjtd
�dj|��tj�nxM|D]E}||krN|jjtd�|�t||�tj�qNqNWd
S(sLVerify that *extcmds* contains at least one argument, and that all
arguments in *extcmds* are valid options for clean.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
theaderstpackagestmetadatatdbcachetpluginssexpire-cachetrpmdbtallis#Error: clean requires an option: %ss, s!Error: invalid clean argument: %rN(R:spackagesR<R=R>sexpire-cachesrpmdbsall(R&RRRR0RRR(RRR't
VALID_ARGSR((s!/usr/share/yum-cli/yumcommands.pyt
checkCleanArg�s
cCs�t|�dkr+|jjtd��n�t|�dkr�|jjtd�|d�tjj|d�s�|jjtd�|d�|j �t
j�q�n)|jjtd��|j �t
j�dS(svVerify that the arguments given to 'yum shell' are valid. yum
shell can be given either no argument, or exactly one argument,
which is the name of a file.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`
isNo argument to shellisFilename passed to shell: %ss2File %s given as argument to shell does not exist.s5Error: more than one file given as argument to shell.N(R&R4tdebugRtostpathtisfileRRRRR(RRR'((s!/usr/share/yum-cli/yumcommands.pyt
checkShellArg�s
cCs�|jj�rdSxE|D]=}|jd�rtjj|�sStjj|�rdSqW|j |jj�rudSt
d�}|jj|�t
j�dS(sVerify that there is at least one enabled repo.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
:raises: :class:`cli.CliError`:
Ns.rpms�There are no enabled repos.
Run "yum repolist all" to see the repos you have.
To enable Red Hat Subscription Management repositories:
subscription-manager repos --enable <repo>
To enable custom repositories:
yum-config-manager --enable <repo>(RRtendswithtyumRt
re_remote_urlRDREtexiststpkgSackRRRRR(Rtpossible_local_filestlfileR$((s!/usr/share/yum-cli/yumcommands.pytcheckEnabledRepo�s
!t
YumCommandcBs_eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �ZRS(
s�An abstract base class that defines the methods needed by the cli
to execute a specific command. Subclasses must override at least
:func:`getUsage` and :func:`getSummary`.
cCst|_t|_dS(N(tFalsetdone_command_oncethidden(tself((s!/usr/share/yum-cli/yumcommands.pyt__init__s cGs2|js%|jjtj||�nt|_dS(sm Output *msg* the first time that this method is called, and do
nothing on subsequent calls. This is to prevent duplicate
messages from being printed for the same command.
:param base: a :class:`yum.Yumbase` object
:param msg: the message to be output
:param *args: additional arguments associated with the message
N(RRR4R5RtINFO_2R.(RTRR$targs((s!/usr/share/yum-cli/yumcommands.pytdoneCommands cCsgS(s�Return a list of strings that are the names of the command.
The command can be called from the command line by using any
of these names.
:return: a list containing the names of the command
((RT((s!/usr/share/yum-cli/yumcommands.pytgetNames,scCs
t�dS(suReturn a usage string for the command, including arguments.
:return: a usage string for the command
N(tNotImplementedError(RT((s!/usr/share/yum-cli/yumcommands.pytgetUsage5scCs
t�dS(szReturn a one line summary of what the command does.
:return: a one line summary of what the command does
N(RZ(RT((s!/usr/share/yum-cli/yumcommands.pyt
getSummary<scCsdS(sVerify that various conditions are met so that the command
can run.
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being checked for
:param extcmds: a list of arguments passed to *basecmd*
N((RTRRR'((s!/usr/share/yum-cli/yumcommands.pytdoCheckCscCsdtd�gfS(s�Execute the command
:param base: a :class:`yum.Yumbase` object.
:param basecmd: the name of the command being executed
:param extcmds: a list of arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
is
Nothing to do(R(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyt doCommandMscCstS(sEReturn whether a transaction set must be set up before the
command can run
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(R.(RTRRR'((s!/usr/share/yum-cli/yumcommands.pytneedTs]s cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
twrite((RTRRR'((s!/usr/share/yum-cli/yumcommands.pytcacheRequirementys(t__name__t
__module__t__doc__RURXRYR[R\R]R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyRPs
tInstallCommandcBs;eZdZd�Zd�Zd�Zd�Zd�ZRS(sUA class containing methods needed by the cli to execute the
install command.
cCsddddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of
these names.
:return: a list containing the names of this command
tinstalls install-ns
install-nas
install-nevra((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCs
td�S(sbReturn a usage string for this command.
:return: a usage string for this command
s
PACKAGE...(R(RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s,Install a package or packages on your system(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCs5t|�t|�t|||�t||�dS(s�Verify that conditions are met so that this command can run.
These include that the program is being run by the root user,
that there are enabled repositories with gpg keys, and that
this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%R(RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�s
cCs)|j|td��|j|d|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSetting up Install ProcessR(RXRtinstallPkgs(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^�s(RbRcRdRYR[R\R]R^(((s!/usr/share/yum-cli/yumcommands.pyRe�s t
UpdateCommandcBs;eZdZd�Zd�Zd�Zd�Zd�ZRS(sTA class containing methods needed by the cli to execute the
update command.
cCs
ddgS(s�Return a list containing the names of this command. This
command can by called from the command line by using any of
these names.
:return: a list containing the names of this command
tupdates update-to((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCs
td�S(sbReturn a usage string for this command.
:return: a usage string for this command
s[PACKAGE...](R(RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s+Update a package or packages on your system(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCs%t|�t|�t||�dS(svVerify that conditions are met so that this command can run.
These include that there are enabled repositories with gpg
keys, and that this command is being run by the root user.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�s
cCsB|j|td��|j|d|dk�}tj|�|S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSetting up Update Processt update_tos update-to(RXRt
updatePkgsRt
remove_txmbrs(RTRRR'tret((s!/usr/share/yum-cli/yumcommands.pyR^�s
(RbRcRdRYR[R\R]R^(((s!/usr/share/yum-cli/yumcommands.pyRh�s
tDistroSyncCommandcBs;eZdZd�Zd�Zd�Zd�Zd�ZRS(sZA class containing methods needed by the cli to execute the
distro-synch command.
cCs
dddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
sdistribution-synchronizationsdistro-synctdistupgrade((RT((s!/usr/share/yum-cli/yumcommands.pyRYscCs
td�S(sbReturn a usage string for this command.
:return: a usage string for this command
s[PACKAGE...](R(RT((s!/usr/share/yum-cli/yumcommands.pyR[
scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s?Synchronize installed packages to the latest available versions(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\scCs%t|�t|�t||�dS(suVerify that conditions are met so that this command can run.
These include that the program is being run by the root user,
and that there are enabled repositories with gpg keys.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]s
cCsB|j|td��d|j_|j|�}tj|�|S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
s/Setting up Distribution Synchronization Processi(RXRRt obsoletestdistroSyncPkgsRRl(RTRRR'Rm((s!/usr/share/yum-cli/yumcommands.pyR^%s
(RbRcRdRYR[R\R]R^(((s!/usr/share/yum-cli/yumcommands.pyRn�s
tcCs�t|j�dt|j�t|�}t|j�dt|j�}t|j�}|jdkr�|t|j�d7}nxWd|fd|fd|ffD]4\}}||j|d�|||cd7<q�WdS(sl Get the length of each pkg's column. Add that to data.
This "knows" about simpleList and printVer. it0tnatvertridiN(R&tnametarchtversiontreleasetui_from_repotepocht
setdefault(tdatatpkgtindentRtRuRvtdtv((s!/usr/share/yum-cli/yumcommands.pyt_add_pkg_simple_list_lens9s* .cCsiid6id6id6}xJ|j|j|j|j|jfD]$}x|D]}t||�qMWq@Wt|j�dkr�x:|jD],\}}t||�t||dd�q�Wn|d|d|dg}|j |dd �}|d|d |d
fS(sA Work out the dynamic size of the columns to pass to fmtColumns. RtRuRviR�t itremainder_columniis (
t installedt availabletextrastupdatestrecentR�R&RptobsoletesTuplestcalcColumns(RtyplR~tlstRtnpkgtopkgtcolumns((s!/usr/share/yum-cli/yumcommands.pyt_list_cmd_calc_columnsEs
cCsU|s
|St||�\}}}t||�}g|D]}||kr9|^q9S(sE Do an extra exclude for installed packages that match the cmd line. (R tset(tpkgstcmdline_excludestetmtutexcludedtpo((s!/usr/share/yum-cli/yumcommands.pyt_cmdline_excludeUs
tInfoCommandcBsGeZdZd�Zd�Zd�Zdd�Zd�Zd�Z RS(sRA class containing methods needed by the cli to execute the
info command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
R5((RT((s!/usr/share/yum-cli/yumcommands.pyRYbscCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
sO[PACKAGE|all|available|installed|updates|distro-extras|extras|obsoletes|recent]((RT((s!/usr/share/yum-cli/yumcommands.pyR[jscCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s4Display details about a package or group of packages(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\qsc Cs�|r&|ddkr&tj|�n
tj|�tr�|jjd}|dkrt|rt|ddkrtt}n|j|d|d|�}i}i}i} d}
|d kr�t ||�}
n|r7|j
r7x`|j|j|j
D]D}|j|jf}||ks#|j||�r�|||<q�q�Wn|r�|jr�xR|jD]D}|j|jf}||ks�|j||�rP|||<qPqPWn|r�|jr�xQt|j�D]=}
|
jjdkr�|
j�r�|
| |
j|
jf<q�q�Wn|jj}|jj}|jj}|jj}|jj}|jjrat|j
|j �|_
n|j!|j
t"d
�|d|d|
d
i|d6|d6|d6|d6|d6�}|jj#}|jj$}|jj%}|jj&}|jj'}|j!|jt"d�|d|d|
d
i|d6|d6|d6|d6|d6�}|j!|j(t"d�|d|
�}|jj)}|jj*}|j!|jt"d�|d| d|
d
i|d6|d6�}t+|j,�dkr=|d kr=ddg}t"d�GHxit|j-dt.j/d��D]"}|j0|dd|
d|�qWn$|j!|j,t"d�|d|
�}|j!|j1t"d�|d|
�}t+|�r�|dr�|dr�|dr�|dr�|dr�|dr�dt"d�gfSdgfSdS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
iR�RptboldR5R�tinstalled_availabletrepoidtlistsInstalled Packagesthighlight_naR�thighlight_modest>t<tkernt=snot insAvailable PackagessExtra PackagessUpdated PackagesRrsObsoleting PackagestkeysRecently Added PackagesisNo matching Packages to listN(supdatess obsoletes(2Rtexclude_updatestexclude_allR.ttermtMODERQtreturnPkgListstNoneR�R�thidden_availabletreinstall_availablet
old_availableRwRxtverGTR�thidden_installedR�tsortedR#R3tverifyLocalPkgRt#color_list_installed_running_kerneltcolor_list_installed_oldertcolor_list_installed_newertcolor_list_installed_reinstalltcolor_list_installed_extratquery_install_excludesR�R�tlistPkgsRt#color_list_available_running_kerneltcolor_list_available_upgradetcolor_list_available_downgradetcolor_list_available_reinstalltcolor_list_available_installR�tcolor_update_localtcolor_update_remoteR&RpR�toperatort
itemgettertupdatesObsoletesListR�( RTRRR'R�t highlightR�tupdate_pkgst inst_pkgst
local_pkgsR�RR�R�R�tcliotclintclirtclietriptclautcladtclartclaitraptreptcultcurtruptroptobtuptrrap((s!/usr/share/yum-cli/yumcommands.pyR^xs�
"
!<cCs$t|�r |ddkr tStS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
iR�(R&RQR.(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_�s cCsDt|�r |ddkr dSt|�r@|ddkr@d Sd
S(
sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
iR�Rpsread-only:futureR�s
distro-extrasR�R�sread-only:pastsread-only:present(supdatess obsoletes(s installeds
distro-extrassextrassrecent(R&(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa�s
N(
RbRcRdRYR[R\R�R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyR�]s x tListCommandcBs eZdZd�Zd�ZRS(sRA class containing methods needed by the cli to execute the
list command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
R�((RT((s!/usr/share/yum-cli/yumcommands.pyRYscCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s$List a package or groups of packages(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\s(RbRcRdRYR\(((s!/usr/share/yum-cli/yumcommands.pyR�s tEraseCommandcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(sSA class containing methods needed by the cli to execute the
erase command.
cCs(ddddddddd d
ddgS(
s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
terasetremovet
autoremoveserase-nserase-naserase-nevrasautoremove-ns
autoremove-nasautoremove-nevrasremove-ns remove-nasremove-nevra((RT((s!/usr/share/yum-cli/yumcommands.pyRY)s cCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s
PACKAGE...((RT((s!/usr/share/yum-cli/yumcommands.pyR[4scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s-Remove a package or packages from your system(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\;scCs.t|�|dkrdSt|||�dS(s�Verify that conditions are met so that this command can
run. These include that the program is being run by the root
user, and that this command is called with appropriate
arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
R�N(RR((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]Bs
cCs�t}|jd�r�t|j_|td�}|s�t}g}xZt|jj��D]@}d|j krtqYn|j j
dkr�qYn|j|�qYWq�n|j|t
d��|j|d|d|�}|S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
R�tautotreasontdepsSetting up Remove ProcesstposR(RQt
startswithR.Rtclean_requirements_on_removeR&R�R?treturnLeafNodest
yumdb_infoR�tappendRXRt erasePkgs(RTRRR'R�RRm((s!/usr/share/yum-cli/yumcommands.pyR^Qs cCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_ws cCstS(sdReturn whether a transaction set for removal only must be
set up before this command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a remove-only transaction set is needed, False otherwise
(R.(RTRRR'((s!/usr/share/yum-cli/yumcommands.pytneedTsRemove�s (
RbRcRdRYR[R\R]R^R_R�(((s!/usr/share/yum-cli/yumcommands.pyR�#s & t
GroupsCommandcBs�eZdZidd6dd6dd6dd6dd 6d
d6Zd�Zd
�Zd�Zd�Zd�Zd�Z d�Z
d�Zd�Zd�Z
RS(s; Single sub-command interface for most groups interaction. R�t grouplistRftgroupinstallRitgroupupdateR�tgroupremovet
grouperaseR5t groupinfocCsddg|jj�S(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tgroupstgroup(tdirect_commandstkeys(RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s7[list|info|summary|install|upgrade|remove|mark] [GROUP]((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s'Display, or use, the groups information(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCs}|j|td��|jdd�y|j�WnBtjjk
r]dtd�gfStjjk
rx}�nXdS(NsSetting up Group Processtdosackiis!No Groups on which to run command(RXRtdoRepoSetuptdoGroupSetupRItErrorstGroupsErrortYumBaseError(RTRR�((s!/usr/share/yum-cli/yumcommands.pyt_grp_setup_doCommand�scCs�||jkr|j|}n#|r<|d}|d}nd}|d
kru|rud||df}|d}nidd6d d
6dd6}|j||�}||fS(Niitsummarytmarktunmarks%s-%stupgradeRiR�R�smark-removes
mark-erase(smarkR�(R�tget(RTRR'Rtremap((s!/usr/share/yum-cli/yumcommands.pyt_grp_cmd�s
cCsY|j||�\}}t|�g}g}|jjdkrOd}d }n|d!ksg||krzt|||�n|d"ks�||kr�t|�n|d#kr�t|�ntd$�}|jjdkr�|j|�n||kr |j j
td�dj|��t
j�n|jjdkr5n tjjtjj|jj��s�|j j
td��|j j
td��n�tjtjj|jj�tj�s�|j j
td��t
j�n�tjj|jj�s|j j
td��|j j
td��n=tj|jjtj�sU|j j
td��t
j�ndS(%sYVerify that conditions are met so that this command can run.
The exact conditions checked will vary depending on the
subcommand that is being called.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
tobjectssmark-installsmark-removesmark-blacklists
mark-packagessmark-packages-forcesunmark-packagessmark-packages-syncsmark-packages-sync-forcesmark-groupssmark-groups-forces
unmark-groupssmark-groups-syncsmark-groups-sync-forcesmark-convertsmark-convert-whitelistsmark-convert-blacklistRfR�R5RR�R�s$Invalid groups sub-command, use: %s.s, s"There is no installed groups file.s0Maybe run: yum groups mark convert (see man yum)s(You don't have access to the groups DBs.s'You don't have access to the groups DB.N(
smark-installsmark-removesmark-blacklists
mark-packagessmark-packages-forcesunmark-packagessmark-packages-syncsmark-packages-sync-forcesmark-groupssmark-groups-forces
unmark-groupssmark-groups-syncsmark-groups-sync-force(smark-installsmark-removesmark-convertsmark-convert-whitelistsmark-convert-blacklistsmark-blacklists
mark-packagessmark-packages-forcesunmark-packagessmark-packages-syncsmark-packages-sync-forcesmark-groupssmark-groups-forces
unmark-groupssmark-groups-syncsmark-groups-sync-force(sinstallsremovesinfo(sinstallsremovesupgrade(sinstallsupgrade(slistsinfosremovesinstallsupgradessummary(RRORt
group_commandR9RR%R�RiRRRR0RRRDRERKtdirnametigroupstfilenametaccesstR_OK(RTRRR'Rt ocmds_allt ocmds_argtcmds((s!/usr/share/yum-cli/yumcommands.pyR]�sb
$'cs2
|j||�\�}|j���dkr>�j|�S�dkrW�j|�Str.
�dkrv�j|�S�dkr��j|�S�dkr��j|dt�}tj��|S�dkr��j |�S�dkr��j
|dt�}|\}}}} x'| D]}
�jj
|
j|
j�qWx]|D]U}t�}x-�jj|j�D]}
|j|
j�qcW�jj|j|�q>W�jj�d d
dj|�gfS�dkr��j
|dt�}|\}}}} xN|D]F}�jj|j�}
|
sq�nt�j_|jj|j �q�WxN|D]F}�jj!|j"�}|spqInt�j_|j#j|j�qIW�jj�d d
dj|�gfS�d3kr�t$|�dkr�ddgfS�j
|d gdt�}|\}}}} |d2ks1t$|�dkr>ddgfS|d }�dk}xk�jj&d|d�D]P}
|r�d|
j'kr�qnn|j"|
j'_(|j#j|
j�t�j_qnW�jj�d ddj|d�gfS�dkrNx8�jj&d|�D]!}
d|
j'kr|
j'`(qqWd ddj|�gfS�d4kr9�j
|dt�}|\}}}} |s�ddgfS�dk}xY|D]Q}xH�jj|j#�D]1}
|r�d|
j'kr�q�n|j"|
j'_(q�Wq�W|rd ddj|�gfSd ddj|�gfSn�d5kr~t$|�dkrdddgfS�j
|d gdt�}|\}}}} |d2ks�t$|�dkr�dd gfS|d }
�dk}�j
|ddt�}x.|dD]"}|jj|j|j|�q�W|rSx-|d D]}|
j|_)t�j_q.Wn�jj�d d!dj|d�gfS�d"kr�j
|d gdt�}|\}}}} |d2kr�dd#gfSx#|D]}d2|_)t�j_q�W�jj�d d$dj|�gfS�d6kr4�j
|dt�}|\}}}} |sddd gfS�d&k}xw|D]o}
djt*|
j��}xN�jj+|�D]:}|r�|j)d2k r�q�n|
j|_)t�j_q�WqwW�jj�|rd d'dj|�gfSd d(dj|�gfSn�d7kr� ��fd,�}x*�jj j,�D]}�jj-|�qeWx,�jD]!}
d|
j'kr�|
j'`(q�q�W�jj.�jj/��d-tfd.tff}xT|D]L\}}�jj!|�}|d2kr q�n|r( t|_0n||�q�Wx6�jj1�D]%}|j|kra qF n||�qF W�jj�d d/gfS�d0kr.
�j
|dt�}|\}}}} x!|D]}
�jj2|
j�q� Wx!|D]}�jj-|j"�q� W�jj�d d1dj|�gfSnd2S(8s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
R�R�R5RfRR�smark-installR,isMarked install: t,smark-blacklistsMarked upgrade blacklist: s
mark-packagessmark-packages-forceiisNo group or package givensNo group matchedtpatternstgroup_membersMarked packages: sunmark-packagessUnMarked packages: smark-packages-syncsmark-packages-sync-forcesMarked packages-sync-force: sMarked packages-sync: smark-groupssmark-groups-forcesNo environment or group givensNo environment matchedsMarked groups: s
unmark-groupssNo groups matchedsUnMarked groups: smark-groups-syncsmark-groups-sync-forcesMarked groups-sync-force: sMarked groups-sync: smark-convertsmark-convert-whitelistsmark-convert-blacklistcs�|js
dSg}xQ�jj|j�D]:}d|jkrDq)n|j|j_|j|j�q)W�dkr��j j
|j|�n�j j
|j|j�dS(NRsmark-convert-whitelist(R�R?tsearchNamesR;R�tgroupidRR�RwRt add_group(tgrpt pkg_namesR(RR(s!/usr/share/yum-cli/yumcommands.pyt_convert_grp�s tcoreRs&Converted old style groups to objects.smark-removesMarked remove: N(s
mark-packagessmark-packages-force(smark-packages-syncsmark-packages-sync-force(smark-groupssmark-groups-force(smark-groups-syncsmark-groups-sync-force(smark-convertsmark-convert-whitelistsmark-convert-blacklist(3RR�treturnGroupSummarytreturnGroupListsR.treturnGroupInfot
installGroupsRRltremoveGroupst_groupReturnGroupsRQRtadd_environmentt
environmentidt allgroupsR�R?RR;taddRwRRtsaveR0tcompstreturn_environmenttevgidtchangedt grp_namesRiR�treturn_grouptgidRR&R�treturnPackagesR�RtenvironmentR�t
return_groupsR�t del_grouptcompilet
simplePkgListR�t
get_groupstdel_environment(RTRRR'RmtgRGtigrpstgrpstievgrpstevgrpstevgrpRRRtievgrptigrptforceR'RR)tspecial_gidstforce_installed((RRs!/usr/share/yum-cli/yumcommands.pyR^sJ
cCsN|j||�\}}|dkr(tS|jd�sF|jd�rJtStS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
R�R5R�R�R�R�(slistsinfosremovessummary(RRQR�R.(RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyR_�s cCs,|j||�\}}|dkr(tStS(sdReturn whether a transaction set for removal only must be
set up before this command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a remove-only transaction set is needed, False otherwise
R�(sremove(RR.RQ(RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyR�s cCsN|j||�\}}|dkr(dS|jd�sF|jd�rJdSdS( sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
R�R5R�sread-only:pastR�R�R`(slistsinfossummary(RR�(RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyRas(RbRcRdR�RYR[R\R�RR]R^R_R�Ra(((s!/usr/share/yum-cli/yumcommands.pyR��s"
C � tMakeCacheCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sWA class containing methods needed by the cli to execute the
makecache command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
t makecache((RT((s!/usr/share/yum-cli/yumcommands.pyRY,scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
Rr((RT((s!/usr/share/yum-cli/yumcommands.pyR[4scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sGenerate the metadata cache(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\;scCst|�dS(s$Verify that conditions are met so that this command can
run; namely that there is an enabled repository.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]Bsc Cs�|jjtd��|jjtd��t}|rQ|ddkrQt}ntr�x2|jj�D]!}d|_|sgd|_qgqgW|j dd�|jj
�|r�|jjddd d
�n|jjddd d
�idd
6dd6dd6dd6}x�|jj�D]{}xr|j
j�D]a}||krDq,n||jks,|j|rgq,ntj|j|�||d|j�q,WqWndtd�gfS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
s*Making cache files for all metadata files.s=This may take a while depending on the speed of this computeritfasts group:allR�tmdtypeR<t cacheonlyiR@s
groups.xmltgroup_gzspkgtags.sqlitetpkgtagssupdateinfo.xmlRsprestodelta.xmltprestodeltatcachedsMetadata Cache Created(RRCRRQR.Rtsorttmetadata_expiretmdpolicyR�tdoSetuptpopulateSackRtrepoXMLt fileTypest retrievedRtrepo_gen_decompresst
retrieveMDtcache(RTRRR'R?R#t fname_maptMD((s!/usr/share/yum-cli/yumcommands.pyR^Ls:
cCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_�s ( RbRcRdRYR[R\R]R^R_(((s!/usr/share/yum-cli/yumcommands.pyR='s
;tCleanCommandcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(sSA class containing methods needed by the cli to execute the
clean command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tclean((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s<[headers|packages|metadata|dbcache|plugins|expire-cache|all]((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sRemove cached data(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCst|||�t|�dS(syVerify that conditions are met so that this command can run.
These include that there is at least one enabled repository,
and that this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RBRO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�s cCsd|j_|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
i(RRPtcleanCli(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^�scCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_�s cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:past((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa�s(
RbRcRdRYR[R\R]R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyRS�s tProvidesCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sVA class containing methods needed by the cli to execute the
provides command.
cCs
ddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tprovidestwhatprovides((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
tSOME_STRING((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s*Find what package provides the given value(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCst|||�dS(s7Verify that conditions are met so that this command can
run; namely that this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(R8(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�scCs*|jjd�tj|�|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSearching Packages: (RRCRR�RW(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^s
cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:past((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRas( RbRcRdRYR[R\R]R^Ra(((s!/usr/share/yum-cli/yumcommands.pyRV�s
tCheckUpdateCommandcBsGeZdZd�Zd�Zd�Zd�Zdd�Zd�Z RS(sZA class containing methods needed by the cli to execute the
check-update command.
cCsddddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
scheck-updates
check-updatess
check-upgradescheck-upgrades((RT((s!/usr/share/yum-cli/yumcommands.pyRY'scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s[PACKAGE...]((RT((s!/usr/share/yum-cli/yumcommands.pyR[0scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s#Check for available package updates(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\7scCst|�dS(s.Verify that conditions are met so that this command can
run; namely that there is at least one enabled repository.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]>scsTtj��dg|}�jjdd�d}trJ�j|d|�}�jjso�jj t
j�r��j|d|�}|j|_|j|_nt
�|�} t|j�dkr�i}
�jjd}|r3xQt|j�D]=}|jjdkr�|j�r�||
|j|jf<q�q�Wn�jj}
�jj}�j|jddd d
|
d| di|
d
6|d6�d}nt|j�dkr�td�GHxBt|jdtjd��D]"}�j|dd| d|�q�Wd}n�jjrJtj �j!j"��rJ�fd�}tj#��j$|�qJn|gfS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
RpiR�R�R�R�Rrt
outputTypeR�R�R�R�R�snot inidsObsoleting PackagesR�cs�jjd|�dS(Ns%s(R4R5(tx(R(s!/usr/share/yum-cli/yumcommands.pyt_msg~s(%RR�R'tinsertR.R�RRpR4tisEnabledForRtDEBUG_3R�R�R&R�R�R�R�R#R3R�RwRxR�R�R�RR�R�R�tautocheck_running_kernelt_repos_downloadedRRt_check_running_kerneltupinfo(RTRRR'R�tobscmdstresultR�ttyplR�R�R�R�R�R�R�R]((Rs!/usr/share/yum-cli/yumcommands.pyR^HsJ
cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:future((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa�sN(
RbRcRdRYR[R\R]R�R^Ra(((s!/usr/share/yum-cli/yumcommands.pyRZ"s
;t
SearchCommandcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(sTA class containing methods needed by the cli to execute the
search command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tsearch((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
RY((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s+Search package details for the given string(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCst|||�dS(s7Verify that conditions are met so that this command can
run; namely that this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(R8(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�scCs0|jjtd��tj|�|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSearching Packages: (RRCRRR�Ri(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^�s
cCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_�s cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:present((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa�s(
RbRcRdRYR[R\R]R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyRh�s
tUpgradeCommandcBs;eZdZd�Zd�Zd�Zd�Zd�ZRS(sUA class containing methods needed by the cli to execute the
upgrade command.
cCs
ddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
Rs
upgrade-to((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s
PACKAGE...((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s-Update packages taking obsoletes into account(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCs%t|�t|�t||�dS(ssVerify that conditions are met so that this command can
run. These include that the program is being run by the root
user, and that there are enabled repositories with gpg.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�s
cCsNd|j_|j|td��|j|d|dk�}tj|�|S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
isSetting up Upgrade ProcessRjs
upgrade-to(RRpRXRRkRRl(RTRRR'Rm((s!/usr/share/yum-cli/yumcommands.pyR^s
(RbRcRdRYR[R\R]R^(((s!/usr/share/yum-cli/yumcommands.pyRj�s
tLocalInstallCommandcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(sZA class containing methods needed by the cli to execute the
localinstall command.
cCstj|�t|_dS(N(RPRUR.RS(RT((s!/usr/share/yum-cli/yumcommands.pyRUs
cCs
ddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tlocalinstalltlocalupdate((RT((s!/usr/share/yum-cli/yumcommands.pyRY scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
tFILE((RT((s!/usr/share/yum-cli/yumcommands.pyR[(scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sInstall a local RPM(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\/scCs(t|�t|�t|||�dS(s�Verify that conditions are met so that this command can
run. These include that there are enabled repositories with
gpg keys, and that this command is called with appropriate
arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%R((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]6s
cCs8|j|td��|dk}|jd|d|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is:
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
s Setting up Local Package ProcessRmtfilelistt
updateonly(RXRtlocalInstall(RTRRR'Rp((s!/usr/share/yum-cli/yumcommands.pyR^DscCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_Ws (
RbRcRdRURYR[R\R]R^R_(((s!/usr/share/yum-cli/yumcommands.pyRks tResolveDepCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sXA class containing methods needed by the cli to execute the
resolvedep command.
cCstj|�t|_dS(N(RPRUR.RS(RT((s!/usr/share/yum-cli/yumcommands.pyRUgs
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
t
resolvedep((RT((s!/usr/share/yum-cli/yumcommands.pyRYkscCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
t
DEPENDENCY((RT((s!/usr/share/yum-cli/yumcommands.pyR[sscCsdS(shReturn a one line summary of this command.
:return: a one line summary of this command
sHrepoquery --pkgnarrow=all --whatprovides --qf '%{envra} %{ui_from_repo}'((RT((s!/usr/share/yum-cli/yumcommands.pyR\zscCs0|jjtd��tj|�|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
s"Searching Packages for Dependency:(RRCRRR�t
resolveDepCli(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^�s
cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:past((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa�s( RbRcRdRURYR[R\R^Ra(((s!/usr/share/yum-cli/yumcommands.pyRrbs tShellCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sSA class containing methods needed by the cli to execute the
shell command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tshell((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s
[FILENAME]((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sRun an interactive yum shell(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCst|||�dS(s7Verify that conditions are met so that this command can
run; namely that this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RG(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�scCs |j|td��|j�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSetting up Yum Shell(RXRtdoShell(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^�scCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_�s ( RbRcRdRYR[R\R]R^R_(((s!/usr/share/yum-cli/yumcommands.pyRv�s
tDepListCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sUA class containing methods needed by the cli to execute the
deplist command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tdeplist((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s
PACKAGE...((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sList a package's dependencies(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCst|||�dS(s?Verify that conditions are met so that this command can
run; namely that this command is called with appropriate
arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(R((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�s cCs0|j|td��tj|�|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sFinding dependencies: (RXRRR�Rz(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^s
cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:past((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRas( RbRcRdRYR[R\R]R^Ra(((s!/usr/share/yum-cli/yumcommands.pyRy�s tRepoListCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sVA class containing methods needed by the cli to execute the
repolist command.
cCsdS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
trepolisttrepoinfo(R|R}((RT((s!/usr/share/yum-cli/yumcommands.pyRY(scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s[all|enabled|disabled]((RT((s!/usr/share/yum-cli/yumcommands.pyR[0scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s,Display the configured software repositories(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\7sc1s
�fd�}�fd�}d�}t|�dkr`|dd>kr`|d}|d}nd}td �|�}|d
kr�t}n�jjtj�}|dks�|r@y�jj��j Wq@t
jjk
r<|r��nxL�jj
�D]7} y�jj| j�Wq�t
jjk
r4q�Xq�Wq@Xn�jjj�}
|
j��jj
�}�jjd�jjd}�jjd
}
�jjd}d}g}x�|
D]x} t|�r�|| |�r�q�nd?\}}}d}d}d}d}t}|dks;| j|ks;| j|krXt}||
|}}}n| |kr�t}|dkrt}n|dkr�|r�q�n|s�|r�|td�|}ttd��}|s�|d7}|d7}q�n|r�|| �}n|dks|r2|s,�jjs,| jrDt| jj��}nt| j�}||�}| jj}tg|D]\}}|| kru|^qu�}|r�||�}|s�|d|7}q�n||7}q2nZt}|dkr�t}n|dkr|rq�n|td�|}ttd��}|s| j}| jdkr�tj j!| j"�r�tj#| j"�j$} | | jt%j%�kr�d|}q�q�n|r�| j&r�| j'j(j)}!|!| j*j)kr�d|}q�n|j+|| j||f|f�q�|r| j*}"nd@}"�j-td�| j��j-td�| j�g}#|se|r�|#�j-td�|�g7}#n|"r�|"j.d@k r�|#�j-td�|"j.�g7}#n|"r|"j/dr|"j/d}$|#�j-td�dj0t1|$���g7}#n|"r�|"j/dr�xgt1|"j/d�D]O}%|"j/d|%}$|#�j-td�d|%dj0t1|$��f�g7}#q9Wn|"r�|#�j-td�t%j2|"j)���j-td �|��j-td!�|�g7}#nt3| d"�r| j4}&n | j5}&|&rB|#�j-td#�dj0|&��g7}#n|rR| j6n| j&r�|#�j-td$�| j&�g7}#|r�| j'j(j)}'|#�j-td%�t%j2|'��g7}#q�n.| j7r�|#�j-td&�| j7�g7}#n|rf| j6rf|&rf| j6d}(t| j6�dkrD|(d't| j6�d7}(n|#�j-td#�|(�g7}#ntj j!| j"�s�td(�} n$tj#| j"�j$} t%j2| �} | jd)kr�td*�| }nA| js�td+�| }n%|| j�}td,�|| f}|#�j-td-�|��j-td.�| j8�g7}#| jr |#�j-td/�dj0| j��g7}#n| j9r� |#�j-td0�dj0| j9��g7}#n|r� |#�j-td1�|�g7}#n| j:r
|#�j-td2�| j:�g7}#n�jj;d3d4j0tt<j=|#���q�W|r�|r�ttd5��})d}*d}+d},x�|D]�\}}-\}}}|)t|�kr�
t|�})n|*t|-�kr�
t|-�}*n|+|t|�kr�
|t|�}+n|,t|�krp
t|�},qp
qp
W|dkr;�jj>|)d}.nWttd6��|+krz�jj>|)ttd6��d}.n�jj>|)|+d}.|.|*kr�|.}*n*|.|*8}.|)|.d7})|*|.|.d7}*t?td5�|)�}/t?td7�|*|*�}0|dkr#�jj;d8|/|0�n�jj;d9|/|0td6��x�|D]�\}}-\}}}|dkr��jj;d8t?||)�t?|-|*|*��qIn|r�t?||,d:t�}n�jj;d;t?||)�t?|-|*|*�||�qIWndd<t=t@jAd=|t��gfS(As�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
cs:d}x$|jj�D]}||j7}qW�j|�S(Ni(tsackR*tpackagesizet
format_number(R#RmR(R(s!/usr/share/yum-cli/yumcommands.pyt
_repo_sizeLscs=x6|D].}|�jj|dtdt�krtSqWtS(NR+R,(RR-R.RQ(R#Rtpat(R(s!/usr/share/yum-cli/yumcommands.pyt_repo_matchRs
cSsttjd|t��S(Ns%d(RtlocaletformatR.(tnum((s!/usr/share/yum-cli/yumcommands.pyt_num2ui_numYsiiR@tdisabledtenabledcSs
|j�S(N(tlower(R\((s!/usr/share/yum-cli/yumcommands.pyt<lambda>asR}tgreenR�tredtnormalRrs: is+%st!t*sRepo-id : sRepo-name : sRepo-status : sRepo-revision: tcontentsRepo-tags : s, tdistrosRepo-distro-tags: s[%s]: %ssRepo-updated : sRepo-pkgs : sRepo-size : t
_orig_baseurlsRepo-baseurl : sRepo-metalink: s Updated : sRepo-mirrors : s
(%d more)tUnknowni����sNever (last: %s)sInstant (last: %s)s%s second(s) (last: %s)sRepo-expire : s Filter : sRepo-exclude : sRepo-include : sRepo-excluded: sRepo-filename: s%s
s
srepo idtstatuss repo names%s %ss%s %s %stlefts
%s %s %s%ss
repolist: s%d(sallR�senabled(RrRrRrN(BR&tmapR.R4R_RR`RRJRLRIR�t RepoErrorRR3tvaluesRFR�tFG_COLORR�RQRwRRRtexcludeR~R/t _excludesR1RGRDRERKtmetadata_cookietstattst_mtimettimetmetalinkt
metalink_datatrepomdt timestampRKR�R�t
fmtKeyValFilltrevisionttagsR0R�tctimethasattrR�tbaseurlturlst
mirrorlisttmetadata_expire_filtertincludepkgstrepofileR5RRR�RR�R�(1RTRRR'R�R�R�targtverboseR#Rt
enabled_repost on_ehibegt on_dhibegton_hiendttot_numtcolstehibegtdhibegthiendt
ui_enabledtui_endis_widtui_numtui_excludes_numt
force_showR�tui_sizeR�texcludesR6tpidRvtlasttmdtstmdtoutR�R�tbaseurlsttsturltid_lentnm_lentst_lentui_lentrnameR�ttxt_ridttxt_rnam((Rs!/usr/share/yum-cli/yumcommands.pyR^>s� "
*
1
'
"
'
cCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_X s cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:past((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRac s( RbRcRdRYR[R\R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyR{#s � tHelpCommandcBsSeZdZd�Zd�Zd�Zd�Zed��Zd�Z d�Z
RS(sRA class containing methods needed by the cli to execute the
help command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
R((RT((s!/usr/share/yum-cli/yumcommands.pyRYt scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
tCOMMAND((RT((s!/usr/share/yum-cli/yumcommands.pyR[| scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sDisplay a helpful usage message(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\� scCsgt|�dkr(|j�tj�n;t|�dksM|d|jkrc|j�tj�ndS(s?Verify that conditions are met so that this command can
run; namely that this command is called with appropriate
arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
iiN(R&RRRR
(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]� s
%
cCsX|j�d}y|j�}Wnttfk
r?d}nXy|j�}Wnttfk
rod}nXd}|dk r�|d||f7}n|dk r�|d|7}n|dkr�|dkr�td�|}n|j�}t|�dkrTt|�dkr$|td�7}n|td �7}|d
j|j�d�7}n|S(NiRrs%s %ss
%ssNo help available for %siis
aliases: s
alias: s, ( RYR[tAttributeErrorRZR�R\RR&R0(tcommandtcanonical_nameRR�thelp_outputt
command_names((s!/usr/share/yum-cli/yumcommands.pyR� s.
cCsJ|d|jkr@|j|d}|jj|j|��ndgfS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
i(R
R4R5R(RTRRR'R�((s!/usr/share/yum-cli/yumcommands.pyR^� scCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_� s (RbRcRdRYR[R\R]tstaticmethodRR^R_(((s!/usr/share/yum-cli/yumcommands.pyR�n s $ tReInstallCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sWA class containing methods needed by the cli to execute the
reinstall command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
t reinstall((RT((s!/usr/share/yum-cli/yumcommands.pyRY� scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s
PACKAGE...((RT((s!/usr/share/yum-cli/yumcommands.pyR[� scCs5t|�t|�t|||�t||�dS(s�Verify that conditions are met so that this command can
run. These include that the program is being run by the root
user, that there are enabled repositories with gpg keys, and
that this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%R(RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]� s
cCs#|j|td��|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSetting up Reinstall Process(RXRt
reinstallPkgs(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^
scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sreinstall a package(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\
scCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_
s ( RbRcRdRYR[R]R^R\R_(((s!/usr/share/yum-cli/yumcommands.pyR�� s tDowngradeCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sWA class containing methods needed by the cli to execute the
downgrade command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
t downgrade((RT((s!/usr/share/yum-cli/yumcommands.pyRY(
scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s
PACKAGE...((RT((s!/usr/share/yum-cli/yumcommands.pyR[0
scCs5t|�t|�t|||�t||�dS(s�Verify that conditions are met so that this command can
run. These include that the program is being run by the root
user, that there are enabled repositories with gpg keys, and
that this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%R(RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]7
s
cCs#|j|td��|j|�S(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
sSetting up Downgrade Process(RXRt
downgradePkgs(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR^G
scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sdowngrade a package(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\X
scCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR__
s ( RbRcRdRYR[R]R^R\R_(((s!/usr/share/yum-cli/yumcommands.pyR�#
s tVersionCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sUA class containing methods needed by the cli to execute the
version command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
Ry((RT((s!/usr/share/yum-cli/yumcommands.pyRYp
scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s[all|installed|available]((RT((s!/usr/share/yum-cli/yumcommands.pyR[x
scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s9Display a version for the machine and/or available repos.(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\
scCs!d}|r|d}n|d.kr2|d}nd}d�}|jjtj�}i}|d/kr�g}|dkr�d}q�|td�}ntjj�}xI|D]A} t|| j �|| <|| j
r�|| j|j�q�q�W|dkr5t
d�GHxt|�D]} dG| GHqWddgfS|dkrJx�|D]�} | |kr`qHnt
d�G| GHt
d�GH|s�x�t|| �D]}
dG|
GHq�WqHiid6id6}|| }|j|�}
|j|||
�|d|dg}|j|�}|d|df}|j|t|
d|�qHWddgfS|jd�rt|rtx|D]}d|kr�d|kr�t�|d<n|dj|�qgtjj|�s�|jjt
d�|�qgt|�j�}td�|D��}tjj|�}||krcxCtdd�D]/}|t|�}||krUq-n|}Pq-Wn|||<qgWn|j j!d }|j j!d!}g}|d0krtr|j"j#|d"|�}|j$j%�}|d1k r�|j'}n|d1k r!|d|kr!|j(d#|d1k �n|d2krq|j)d$t
d%�||ft|d�f�|||d�n|rx�t|d&�D]s}|jd�r�|r�||kr�q�n|j)d't
d(�|ft|d&|�f�|||d)|�q�Wqqn|d3kr,tr,|j*j#|d"|�}|d4kr�|j)d$t
d*�||ft|d�f�|r�|||d�q�n|r)x�t|d&�D]|}|jd�r�|r�||kr�q�n|j)d't
d+�|ft|d&|�f�|r�|||d)|�q�q�Wq)q,niid6id,6}xq|D]i\}}xZdt|�fd,t|�ffD]4\}}||j+|d�|||cd7<qxWqGW|d|d,g}|j|�}|d|df}x%|D]}|j,t-||��GHq�Wdd-gfS(5s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
R�iR�R�tnogroupssnogroups-installedsnogroups-availablesnogroups-allR@sgroup-installeds group-allR�sgroup-availableicSs�x�t|�D]�}||}g}d}xWt|�D]I}|dkrNq6n||}|jd||ft||�f�q6Wd|kr�|s�|d|kr�|jd|t|d�f�n|j|�q
WdS(Ns %s/%ss %s(R�R�R�tstrtextend(R�t repo_dataR�R�tncolstlast_revtrev((s!/usr/share/yum-cli/yumcommands.pyt
_append_repos�
s
+#$s nogroups-s Yum version groups:s sversion grouplists
Group :s
Packages:tenvraRvR�sversion groupinfosgroup-t/s
<cmd line>s File doesn't exist: %scss|]}|j�VqdS(N(tstrip(t.0tn((s!/usr/share/yum-cli/yumcommands.pys <genexpr>�
sidt
releasevertbasearchR�twarns%s %s/%ss
Installed:is%s %ssGroup-Installed:is
Available:sGroup-Available:RuRy(s grouplists groupinfoR�snogroups-installedsnogroups-availablesnogroups-alls installedsallsgroup-installeds group-alls availablesallsgroup-availables group-all(R�snogroups-installedsnogroups-availablesnogroups-all(s installedsallsgroup-installeds group-allN(sgroup-installeds group-all(s availablesallsgroup-availables group-all(sgroup-availables group-all(.R4R_RR`R&RItconfigtreadVersionGroupsConfigR�tpkglisttrun_with_packagesRitrun_with_package_namesRR�t_group_names2aipkgst_calcDataPkgColumnsR�t_displayPkgsFromNamesR.R�R!RDRERKRR�topent readlinestbasenametrangeR�RtyumvarR?t
simpleVersionthistoryR�R�tend_rpmdbversiont_rpmdb_warn_checksR�RLR}t
fmtColumnstzip(RTRRR'tvcmdR�R�R�tgconfR�tpkgnameR~Rtpkg_names2pkgsR�tdgrpR�tndgrptreltbaR�tlastdbvRRvRuR�R�tline((s!/usr/share/yum-cli/yumcommands.pyR^�
s�
"%1
cCsNd}|r|d}n|jjtj�}|dkrD|rDtS|dkS( sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
R�iR�R�R@sgroup-availables group-all(s availablesallsgroup-availables group-all(R4R_RR`R.(RTRRR'RR�((s!/usr/share/yum-cli/yumcommands.pyR_,s
cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:present((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa=s( RbRcRdRYR[R\R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyR�k
s � tHistoryCommandcBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�ZRS(sUA class containing methods needed by the cli to execute the
history command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
R�((RT((s!/usr/share/yum-cli/yumcommands.pyRYMscCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
sC[info|list|packages-list|summary|addon-info|redo|undo|rollback|new]((RT((s!/usr/share/yum-cli/yumcommands.pyR[UscCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s(Display, or use, the transaction history(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\\sc
CsYitd6td6}idd6dd6dd6dd6}x�t|�dkr�t}x\|djdd �jd �D];}||kr�qqnt}||d}||||<qqW|s�Pn|d
g|d}q9W|j|�}|dkr�ddgfStj|j �} d
|j
| fGH|j|�|j||�rUdd|j
fgfSdS(Ntforce_reinstalltforce_changed_removalR�sforce-reinstallR�sforce-removeiR�RiisFailed history redos!Repeating transaction %u, from %ssRepeating transaction %u(
RQR&treplacetsplitR.t_history_get_transactionR�R�R�t
beg_timestampttidthistoryInfoCmdPkgsAlteredthistory_redo(
RTRR'tkwargst
kwargs_maptdoneR�R�toldttm((s!/usr/share/yum-cli/yumcommands.pyt
_hcmd_redocs2
&
cCs�|j|�}|dkr(ddgfStj|j�}d|j|fGH|j|�|j|�rdd|jfgfSdS(NisFailed history undosUndoing transaction %u, from %sisUndoing transaction %u(RR�R�R�RRRthistory_undo(RTRR'RR((s!/usr/share/yum-cli/yumcommands.pyt
_hcmd_undo�s
c
Cs�t}t|�dkrE|ddkrEt}|}|jd�n|j|�}|dkrmddgfS|jj�}|dkr�ddgfS|j|jkr�ddgfSd}x�|jj t
|jd|jd��D]�}|r9|js|jr9|jrd}nd}||jGHd GHdd
gfS|dkrZt
jj|�}q�|j|�q�Wtj|j�} d|j| fGH|jdd
jd�|jD���GH|j|�|j|�r�dd|jfgfSdS(NiR:is'Failed history rollback, no transactions!Failed history rollback, no last?s"Rollback to current, nothing to dos-Transaction history is incomplete, before %u.s,Transaction history is incomplete, after %u.s5 You can use 'history rollback force', to try anyway.s#Failed history rollback, incompletes#Rollback to transaction %u, from %ss& Undoing the following transactions: s, css|]}t|�VqdS(N(R�(R�R\((s!/usr/share/yum-cli/yumcommands.pys <genexpr>�sisRollback to transaction %u(RQR&R.tpopRR�R�R�RRR�taltered_lt_rpmdbtaltered_gt_rpmdbRItYumMergedHistoryTransactiontmergeR�R�RR�R0RR(
RTRR'R:RR�tmobjRR$R((s!/usr/share/yum-cli/yumcommands.pyt_hcmd_rollback�s@"
0
cCs|jj�dS(N(R�t_create_db_file(RTRR'((s!/usr/share/yum-cli/yumcommands.pyt _hcmd_new�scCs�dG|jjGHtj|jj�j}dGtjd|t�GH|jj�}|dkrmt
d�GdGHdS|jj�}|jjd�d}t
d�G|j
GHt
d�Gtj|j�GHt
d�Gtj|j�GHt
d �GHt
d
�Gtjd|dt�GHt
d
�Gtjd|dt�GHt
d�Gtjd|dt�GHt
d�Gtjd|dt�GHt
d�Gtjd|dt�GHt
d�Gtjd|dt�GHdS(Ns
File :s
Size :s%ds
Transactions:it1s
Begin time :s
End time :s
Counts :s
NEVRAC :s%6dtnevracs
NEVRA :tnevras
NA :Rts
NEVR :tnevrs
rpm DB :R?s
yum DB :tyumdb(R�t_db_fileRDR�tst_sizeR�R�R.R�R�Rt
_pkg_statsRRR�R�Rt
end_timestamp(RTRR'R�ttrans_Ntcountsttrans_1((s!/usr/share/yum-cli/yumcommands.pyt_hcmd_stats�s&"""""cCs�|d}|sd}nxrt|jjd|��D]U}|jj|dt�dkr_q5ndG|GdG|jj|�r�dGHq5dGHq5WdS(NiRtcreatesSyncing rpm/yum DB data for:s...sDone.sFAILED.(R�R�R?R*R�tpkg2pidRQt
sync_alldb(RTRR'tipkg((s!/usr/share/yum-cli/yumcommands.pyt
_hcmd_sync�s
"cCs�d}|rJ|d|krJ|jjtd�dj|��tj�n|rw|dd krwt|�t|�nI|jj o�t
j|jj t
j�s�|jjtd��tj�ndS(!sZVerify that conditions are met so that this command can
run. The exact conditions checked will vary depending on the
subcommand that is being called.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
R�R5R�trepeattredotundotnewtrollbacktaddons
addon-infotstatst
statisticstsynctsynchronizepkgR�spkg-lists pkgs-listtpackagespackage-listR;s
packages-listspkg-infos pkgs-infospackage-infos
packages-infois%Invalid history sub-command, use: %s.s, s(You don't have access to the history DB.N(slistsinfossummarysrepeatR;R<snewR>R?s
addon-infoR@RARBRCspkgsspkg-lists pkgs-listRDspackage-listspackagess
packages-listspkg-infos pkgs-infospackage-infos
packages-info(srepeatR;R<R>snew(
RRRR0RRRR%R�R-RDR R
(RTRRR'R
((s!/usr/share/yum-cli/yumcommands.pyR]�s"
'c Cs�d}|r|d}ntr"nz|dkr@|j|�}n\|dkr^|j|�}n>|dkr||j|�}n |dkr�|j|�}n|dkr�|j|�}n�|dkr�|j||�}n�|dkr�|j||�}n�|dkr|j||�}n�|dkr<|j ||�}n`|d kr]|j
||�}n?|d!kr~|j||�}n|d"kr�|j|�}n|d#kr�dd|fgfS|S($s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
R�iR5R�R?s
addon-infoRR�spkg-lists pkgs-listRDspackage-listR;s
packages-listR<R;R:R>R=R@RARBtsynchronizespkg-infos pkgs-infospackage-infos
packages-infos
history %s(saddons
addon-info(spkgspkgsspkg-lists pkgs-listspackagespackage-listspackagess
packages-list(sredosrepeat(sstatss
statistics(ssyncRE(spkg-infos pkgs-infospackage-infos
packages-infoN(RQthistoryListCmdthistoryInfoCmdthistorySummaryCmdthistoryAddonInfoCmdthistoryPackageListCmdRRR%R'R4R9thistoryPackageInfoCmdR�(RTRRR'RRm((s!/usr/share/yum-cli/yumcommands.pyR^�sB
cCs#d}|r|d}n|dkS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
R�iR:R;R<R>(srepeatsredosundosrollback((RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyR_'s
cCs-d}|r|d}n|d kr)dSdS(
sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
R�iR:R;R<R>R`sread-only:past(srepeatsredosundosrollback((RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyRa5s
(RbRcRdRYR[R\RRR%R'R4R9R]R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyR
Hs
( 1 tCheckRpmdbCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(sYA class containing methods needed by the cli to execute the
check-rpmdb command.
cCs
ddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tcheckscheck-rpmdb((RT((s!/usr/share/yum-cli/yumcommands.pyRYJscCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s[dependencies|duplicates|all]((RT((s!/usr/share/yum-cli/yumcommands.pyR[RscCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sCheck for problems in the rpmdb(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\Ysc Cskd}|r|}nd�}d}|jd|dtd|dd��rTd }n|d
||fgfS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
R@cSst|j��GHdS(N(Rt__str__(R\((s!/usr/share/yum-cli/yumcommands.pyt_outrsiR�R�tchkcmdtheadercSsdS(N(R�(R\((s!/usr/share/yum-cli/yumcommands.pyR�wsis%s %s(RRQ(RTRRR'RPROtrc((s!/usr/share/yum-cli/yumcommands.pyR^`s cCstS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
(RQ(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_{s cCsdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
sread-only:past((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa�s( RbRcRdRYR[R\R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyRLEs tLoadTransactionCommandcBsDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(s^A class containing methods needed by the cli to execute the
load-transaction command.
cCs
dddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
sload-transactionsload-tssts-load((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
R((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s&load a saved transaction from filename(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�scs��fd�}d�}|s0tj�g}n|d}tjj|�rI|j�td�|�ttjd|��}d}t
} x�|D]�}
�j|
�}|ddk r�q�n|d}|dj�}|dkrt
�jjdt�d�}n||kr td�}
nd }
yDt|d
j��}d|}t||j��}|d7}Wn
q�nXidd6dd
6}x+||D]}|j�}|||�q�Wd }x7||D]+}|j�}||�r�q�nd}Pq�Wd||
f}
| s�td�}t|�}|dkr<d}nt||�}td�}t|�}|dkrxd}nt||�}dG|GdG|GdGtd�GHt} ntjd|dt�}d||f}tjd|d
t�}d||f}d|
||tjj|
�fGHq�Wdtd�|t|�fgfS|j�td�|��j|�d
td�|t�jj��fgfS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
cs�|jd�stSy�|jd�dj�jd�\}}t|j��}t|j�jd��}|tjkr��j|�}n%|tj kr��j
|�}ntSWntSXtS(Nsmbr:t:iR�R(R�R.RR�tintttupleRIt
TS_INSTALLtgetInstalledPackageObjecttTS_AVAILABLEtgetPackageObjectRQ(tltpkgtupt
current_stateR�(R(s!/usr/share/yum-cli/yumcommands.pyt
_pkg_avail�s(cSse|jd�sdS|td�}|d
krB|dcd7<n|dkra|d cd7<ndS(Ns ts_state: R�todtudR�itiR�Rf(R�R_R`(RaR�(R�R&(R[R2tstate((s!/usr/share/yum-cli/yumcommands.pyt_pkg_counts�sis!showing transaction files from %ss
%s/*.yumtxit main_onlytyR�iiRfR�R�s%s%stInstallitRemoves?? |t|tFilenames%ds%*ss%s | %s | %s | %ss.Saved transactions from %s; looked at %u filessloading transaction from %ss*Transaction loaded from %s with %s membersN(ttempfilet
gettempdirRDREtisdirRXRR�tglobR�RQt
_load_ts_dataR�R�R?R�R.RUtrstripRRR�R�R�R&tload_tsttsInfot
getMembers(RTRRR'R^Rct load_filetyumtxstcurrpmvRtyumtxR~trpmvtcurrenttnumrepostpkgstarttnumpkgsR2R[tbadt pkgititletpkgilent pkgetitletpkgelentnumipkgstnumepkgs((Rs!/usr/share/yum-cli/yumcommands.pyR^�s�
"
cCs%|stjj|d�r!tStS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
i(RDRERlRQR.(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR_'
s cCs%|stjj|d�r!dSdS(sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
isread-only:pastR`(RDRERl(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyRa5
s( RbRcRdRYR[R\R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyRS�s { tSwapCommandcBs;eZdZd�Zd�Zd�Zd�Zd�ZRS(sRA class containing methods needed by the cli to execute the
swap command.
cCsdgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
tswap((RT((s!/usr/share/yum-cli/yumcommands.pyRYH
scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
s7[remove|cmd] <pkg|arg(s)> [-- install|cmd] <pkg|arg(s)>((RT((s!/usr/share/yum-cli/yumcommands.pyR[P
scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
s3Simple way to swap packages, instead of using shell(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\W
scCs5t|�t|�t|||�t||�dS(s�Verify that conditions are met so that this command can run.
These include that the program is being run by the root user,
that there are enabled repositories with gpg keys, and that
this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%R*RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]^
s
cCsid|kr6|jd�}|| }||d}n|d }|d}|oS|scddgfS|d|jkr�dg|}n|d|jkr�dg|}n|j}|j}xy||fD]k} dj| �|_| |_|j�|j�}
|
ddkr�|
dd |dj| �fgfSq�W||_||_dd |dj|�fgfS(
s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
s--iR�iR�RfR�is%s %s(tindexR
R
t cmdstringR0t
parseCommandst
doCommands(RTRRR'tofftrextcmdstiextcmdstocmdstolineR
tcmdret((s!/usr/share/yum-cli/yumcommands.pyR^m
s0
( (RbRcRdRYR[R\R]R^(((s!/usr/share/yum-cli/yumcommands.pyR�C
s tRepoPkgsCommandcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(sRA class containing methods needed by the cli to execute the
repo command.
cCsddddgS(s�Return a list containing the names of this command. This
command can be called from the command line by using any of these names.
:return: a list containing the names of this command
s repo-pkgss
repo-packagessrepository-pkgssrepository-packages((RT((s!/usr/share/yum-cli/yumcommands.pyRY�
scCsdS(sbReturn a usage string for this command.
:return: a usage string for this command
sK<repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]((RT((s!/usr/share/yum-cli/yumcommands.pyR[�
scCs
td�S(shReturn a one line summary of this command.
:return: a one line summary of this command
sJTreat a repo. as a group of packages, so we can install/remove all of them(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\�
scCs5t|�t|�t|||�t||�dS(s�Verify that conditions are met so that this command can run.
These include that the program is being run by the root user,
that there are enabled repositories with gpg keys, and that
this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%R7RO(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�
s
cCs�d�}|d}|d}|d}t}|sEt}dg}nd} idd6dd 6d
d6d
d6d
d
6d
d6d
d6dd6dd6dd6dd6dd6}
|
j||�}tr�n�|dkr�t�j|||d|�S|dkrt�j|||d|�S|dkr8t�j|||d|�S|dkr�xC|D];}|jd|d|�}|||�| t|�7} qKW| r�dt dd| �fSn�|dkr'xC|D];}|j
d|d|�}|||�| t|�7} q�W| r�tj|�dt dd | �fSns|dkr�xI|D]A}|j
d|d!td|�}|||�| t|�7} q:W| r�tj|�dt dd | �fSn�|d6krL|r�|j
j�}
nxI|D]A}|jd|d|d$|�}|||�| t|�7} q�W|r-|
|_
n| r�dt d%d&| �fSnN|d7kr�|rp|j
j�}
nxC|D];}|jd|d$|�}|||�| t|�7} qwW|r�|
|_
n| r�dt d*d+| �fSn�|d,kr#|r|j
j�}
nxj|D]b}y"|jd|d|d$|�}Wntjjk
rVqnX|||�| t|�7} qW|r�|
j�|_
n| r�dt d%d&| �fSxC|D];}|jd|d$|�}|||�| t|�7} q�W|r|
|_
n| r�dt d*d+| �fSnw|dkr�xC|D];}|jd|d|�}|||�| t|�7} q6W| r�dt d-d.| �fSn|dkrox�|D]�}|jd|d|�}xg|D]^}|jj|j�}x@t|�D]2}|j|krq�n||jd/|�7}Pq�Wq�W|||�| t|�7} q�W| r�dt d0d1| �fSn+|d
kr�x�|D]�}|jd|d|�}x�|D]�}|jj|jg�}d8}x[t|�D]M}|j|kr�q�n|r|j|d�r|j|�q�|g}q�W|r�x0|D](}|j|jkrUq7n|g}Pq7Wt|�dkr�|j|�}q�nx�|D]�}|j\}}}}}|j|j �r�||jd/|�7}q�|j!|j �r||j
d/|�7}q�|j"j|j�|j|�||j#d/|�7}q�Wq�W|||�| t|�7} q�W| r�dt d2d3| �fSndt$d4�|gfSdt$d5�gfS(9s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
cSsx|D]}||_qWdS(N(trepopkg(ttxmbrsR�ttxmbr((s!/usr/share/yum-cli/yumcommands.pyt_add_repopkg2txmbrs�
s
iiiR�R�R�sremove-or-reinstallserase-or-reinstallsremove-or-syncs
erase-or-syncserase-or-distro-syncsremove-or-distro-syncs%erase-or-distribution-synchronizations&remove-or-distribution-synchronizationRiRs update-tos
upgrade-toscheck-updates
check-upgradescheck-upgradess
check-updatesR�R�R5Rftpatterns%d package to installs%d packages to installs%d package to updates%d packages to updateRjs
reinstall-oldsreinstall-installedtrepoid_installs%d package to reinstalls%d packages to reinstalls
reinstall-newsreinstall-availablesmove-tos%d package to move tos%d packages to move toR�s%d package to removes%d packages to removeR�s%d package to remove/reinstalls%d packages to remove/reinstalls%d package to remove/syncs%d packages to remove/syncsNot a valid sub-command of %ss
Nothing to do(s
reinstall-oldsreinstall-installed(s
reinstall-newsreinstall-availablesmove-toN(%RQR.RR�R^R�RZRfR&RRiRRlt_not_found_atcopyR�RIR�tReinstallRemoveErrorR�RLtsearchPkgTupleR\R�R�RRwR�tverEQR�RxtbestPackagesFromListR�R�RqR�R(RTRRR'R�R�RRWtnoargsR�RR�R�tonot_found_aR�R�RtapkgsttoinstR�taR�R�R6((s!/usr/share/yum-cli/yumcommands.pyR^�
sJ
cCsOd}t|�dkr%|d}n|dkrKt�j|||d�StS(sGReturn whether a transaction set must be set up before this
command can run.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: True if a transaction set is needed, False otherwise
RfiR5R�i(sinfoslist(R&R�R_R.(RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyR_�s
cCsud}t|�dkr%|d}n|dkrKt�j|||d�S|dkrqt�j|||d�Sd
S(
sAReturn the cache requirements for the remote repos.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: a list of arguments passed to *basecmd*
:return: Type of requirement: read-only:past, read-only:present, read-only:future, write
RfiR5R�ischeck-updates
check-upgrades
check-updatesscheck-upgradesR`(sinfoslist(scheck-updates
check-upgrades
check-updatesscheck-upgrades(R&R�RaRZ(RTRRR'R((s!/usr/share/yum-cli/yumcommands.pyRa�s
(
RbRcRdRYR[R\R]R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyR��
s � tUpdateinfoCommandcBs#eZidd6dd6dd6dd6dd6dd6dd 6Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Z d�Z
idd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6Zxej
D]Zeee<q�Wd�Zd �Zd!�Zd"�ZRS(#R�slist-updateinfos
list-securityslist-secR5sinfo-updateinfos
info-securitysinfo-secR�ssummary-updateinfocCsdgt|jj��S(NR(R�tdirect_cmdsR�(RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(NsB[info|list|...] [security|...] [installed|available|all] [pkgs|id]((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCsdS(Ns%Acts on repository update information((RT((s!/usr/share/yum-cli/yumcommands.pyR\�scCsdS(N((RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]�sc
Cs]d}d} d}
x�|D]�\}}}
tt|d�|�}|d}|dkrr|drr|dd}ntt|�|
�}
|rxStj|d�D];}|d|kr�q�nttt|d��| �} q�WqqWxo|D]g\}}}
d }|d
krQd}|d|krQtj||d|�dkrQd}qQn|d}|dkr�|dr�|dd}n|r�tj||�r�x�tj|d�D]F}|d|kr�q�n|d
|| t|d�|
||
f�q�Wq�t|
d�r1|jd|
j |j
|
j��GHq�|d|||d|
||
f�q�WdS(Nit update_idttypetsecuritytseveritys/Sec.t
referencesR3RrR@s si s%s %-*s %-*s %sRws%s: s%s%-*s %-*s %s(tmaxR&t_upit_ysp_safe_refsR�t_rpm_tup_vercmpt_ysp_has_info_mdR�R�Rwt_encR�(RTRtmd_infot list_typet show_typet iname2tupR~R$t n_maxsizet r_maxsizet t_maxsizetnoticeR\RttntrefR�((s!/usr/share/yum-cli/yumcommands.pytlist_show_pkgs�sD
*0
cCsi}x�|D]�\} }
}| d|kr2q
n| || d<t| d�r�tjj}|j}
|
j|�r�| jdg�}q�| j�}n| j�}|dkr�|
d|kr�tj ||
d|
�dkr�|d}q�|d}n||�q
WdS(NR�ttextt skip_dataR@is
Installed : trues
Installed : false(
R�RIRR`R4R_R�RNR�R�(RTRR�R�R�R�R~R$tshow_pkg_info_doneR�R\Rt
debug_log_lvltvlogtobj((s!/usr/share/yum-cli/yumcommands.pytinfo_show_pkgss" 0
c
s��fd�}i} i}
i}x�|D]�\}}
}|d|krMq(n|||d<| j|dd�d| |d<|ddkr(|d}|dkr�d}n|
j|d�d|
|<q(q(Wd}xKdD]C}|| kr�q�ntt| |��}||kr�|}q�q�W|sM�jjrItj�||�ndSidd 6d
d6dd
6dd6}dG|GHx�dD]�}|| kr�qn||}|dkr�t|
�dkr�|
j�d}|dkr�|d|}q�nd|| ||fGH|dkrt|
�dkrd�}xFt |
d|�D]/}||
||pXd|df}d|GHq?WqqW�jjr�tj�||�ni|_
dS(Ncs�jjd|�dS(Ns%s(R4R5(R\(R(s!/usr/share/yum-cli/yumcommands.pyR]1sR�R�iiR�R�Rrt
newpackagetbugfixtenhancementsNew PackagetSecuritytBugfixtEnhancementsUpdates Information Summary:R�s %*u %s notice(s)cSs,idd6dd6dd6dd6j||�S( Ntzz1tCriticaltzz2t Importanttzz3tModeratetzz4tLow(R(R�((s!/usr/share/yum-cli/yumcommands.pyt
_sev_sort_key\s
R�t?s %*u %s %s notice(s)(R�ssecurityR�R�(R�ssecurityR�R�(RR�R&R�RRaR�RcR�R�R�(RTRR�R�R�R�R~R$R]R2t
sev_countsR�R�R\RtsevtmaxsizetTtsizetoutTR�tsnR�RW((Rs!/usr/share/yum-cli/yumcommands.pytsummary_show_pkgs/s^"
!
c
cs�x�|jD]�}|ddkr&q
nxa|dD]U}xL|dD]@}|d|d|dpcd|d |d
f}||fVqBWq1Wq
WdS(NR�R�R�R;RwRxR|RsRyRz(tnotices(RTR�R�tupkgRR\((s!/usr/share/yum-cli/yumcommands.pyt
_get_new_pkgslstbugzillat bugzillastbzstbzR�tsectcvetcvesR�tnewpackagessnew-packagessnew-packageR=c s9||jkr|j|}nd|rL|ddkrL|d}|d }n7|rn|d|jkrnd}n|r}d}nd}|dkr�|j�d
||j�S|dkr�|j�d||j�S|dkr�|j�d||j�S|dkrEd}|rtj|�}ntj �|�d|d
|dgfS|dkr�d}|rotj|�}ntj
�|�d|d
|dgfS|dkr�d}|r�tj|�}ntj�|�d|d
|dgfS|dkr5�fd�}tj��j
|�d|d
|dgfSdS(NiR�R5R�sremove-pkgs-tssexclude-updatessexclude-allscheck-running-kernelisupdateinfo listsupdateinfo infosupdateinfo summaryR�s donecs�jjd|�dS(Ns%s(R4R5(R\(R(s!/usr/share/yum-cli/yumcommands.pyR]�s(slistsinfossummarysremove-pkgs-tssexclude-updatessexclude-allscheck-running-kernel(R�t _cmd2filttdoCommand_liR�R�R�R�Rt
_args2filtersRlR�R�RcRd(RTRRR't
subcommandtfiltersR]((Rs!/usr/share/yum-cli/yumcommands.pyR^�sX
c
Cs�t�}g} x[t|j|�dd��D];\}
}|r`tj||d|
�r`q.n|d}||kr|q.nttt|jj|g����}
|dkr�|
r�|j |�q.n|dkr�|
r�|j |�q.n|j
j|�}|sq.n|dkrB|dj|
d�rB|j |�q.n|j |�| j
|
||df�q.W||||d|| |�dS(NR�cSs|ddS(Nii((R\((s!/usr/share/yum-cli/yumcommands.pyR��siR�R�R�(s installedsupdates(R�R�R�R�t_match_sec_cmdR�treversedR?RR!RLR�tverLER�R�(RTRR�R'R�R$t show_pkgsR�t done_pkgsR~R�R\R�tipkgsR�((s!/usr/share/yum-cli/yumcommands.pytdoCommand_li_new�s2
'
#
cCs�d}d}t|�dkrwd}|d|jkrP|j|jd�}n|}|rw|tjkrwd}qwn|||fS(Nii(R�R&R�RR�t_update_info_types_(RTR't filt_typeR�((s!/usr/share/yum-cli/yumcommands.pyt_parse_extcmds�sc
s�|j�d�}|j|�\}}�d�d�|r�|ddkr�|jd���dkr�|j|�\}}�q�ntj|j|��tj|j��i�tr�nx�dkr�tj |�}tj
|��nK�dkrtj|�}n-�dkr3tj|�}tj
|��n�dkro|j
|�|�||��d|dgfS������fd �}g} x�t|�D]�}
x�|||
�D]�\}}i}
|\|
d
<|
d<|
d<|
d
<|
d<|
ddkrd|
d<nd|
d|
d<| j||d|
f�q�Wq�W||��|�| |�tj�|�d|dgfS(NcSs |GHdS(N((R\((s!/usr/share/yum-cli/yumcommands.pyR$�sR�R�iR�R@R�s new donec3s�|d}t�j|��}x�|D]�\}}�rQtj�|�rQq&n�dkr�tj�||�dkr�q&q�n�dkr�|�kr�tj�||�dkr�q&q�ntj�||��r&||fVq&q&WdS(NiR�R�(R�tget_applicable_noticesR�R�R�t_ysp_should_filter_pkg(R\RwR�R�(R�R�R�R�toptstused_map(s!/usr/share/yum-cli/yumcommands.pyt_show_pkgtup
s
( R�R�R�R�R6RsRrR|s%s:s %(n)s-%(epoch)s%(v)s-%(r)s.%(a)ss done(supdatess availables installedsall(s availablesall(RdR�RR�R�t
_ysp_gen_optstupdateinfo_filterst_ysp_gen_used_mapRQt_get_name2allpkgtupt_get_name2instpkgtupt_get_name2oldpkgtupt_get_name2aallpkgtupR�R�R�t_ysp_chk_used_map(RTRRR'R�R$R�tname2tupR�R~RR\R�R�((R�R�R�R�R�R�s!/usr/share/yum-cli/yumcommands.pyR��sP
)
(RbRcR�RYR[R\R]R�R�R�R�R�R�R�R�R^R�R�R�(((s!/usr/share/yum-cli/yumcommands.pyR��sB
( =
6
tUpdateMinimalCommandcBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs
ddgS(Nsupdate-minimalsupgrade-minimal((RT((s!/usr/share/yum-cli/yumcommands.pyRY0scCsdS(Ns[PACKAGE-wildcard]((RT((s!/usr/share/yum-cli/yumcommands.pyR[3scCs
td�S(NsiWorks like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\6scCst|�t|�dS(s�Verify that conditions are met so that this command can run.
These include that the program is being run by the root user,
that there are enabled repositories with gpg keys, and that
this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(RR%(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]9s
cCsft|j�}tj||�t|j�|}|dkrUd|}d|gfSddgfSdS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
is%%d packages marked for minimal Updateis%No Packages marked for minimal UpdateN(R&RqR�tupdate_minimal(RTRRR'R�R$((s!/usr/share/yum-cli/yumcommands.pyR^Fs
(RbRcRYR[R\R]R^(((s!/usr/share/yum-cli/yumcommands.pyR/s
tFSSnapshotCommandcBsDeZd�Zd�Zd�Zd�Zed��Zd�ZRS(cCs
ddgS(Nt
fssnapshottfssnap((RT((s!/usr/share/yum-cli/yumcommands.pyRYascCsdS(Ns[]((RT((s!/usr/share/yum-cli/yumcommands.pyR[dscCs
td�S(NsACreates filesystem snapshots, or lists/deletes current snapshots.(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\gscCst|�dS(s�Verify that conditions are met so that this command can run.
These include that the program is being run by the root user,
that there are enabled repositories with gpg keys, and that
this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
N(R(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]js
cCsxt|dd��}ttd��}ttd��}x@|D]8}t|t|d��}t|t|d��}q@Wt}x�|D]�}|sdttd�|�ttd�d d
t�ttd�d d
t�ttd�d d
t�ttd�|�td
�fGHt}nd||d|j|d�|d|j|d�||ddj |d�fGHq�WdS(NR�cSs|dS(Ntdev((R\((s!/usr/share/yum-cli/yumcommands.pyR�xstSnapshottOriginRtorigins%s %s %s %s %s %stSizeiR�tUsedtFreetTagss%*s %6s %5.1f%% %6s %*s %sR�tusedtfreeRR�(
R�RRR�R&RQRR.R�R0(Rtsnapstmax_devtmax_oriR~R((s!/usr/share/yum-cli/yumcommands.pyt _li_snapsvs*
! cCs�|r-|dd#kr-|d}|d}nd}|jjs�td �}|jjd
g�sw|dtd�7}n|jjd
g�s�|dtd�7}n|GHd|d|dgfS|dkr8y|jj�}Wn-tk
r}dtd�t|�gfSXtd�t|�GH|j ||�n|dkr�td�}y|jj�}Wn'tk
r�}d|t|�gfSXg|D]}|d^q�} t
�}x`| D]X}
|
|kr�q�nx=|D]5}|
|ks�tj|
|�r�|j|
�Pq�q�Wq�Wy|jj
d|�}Wn'tk
rX}d|t|�gfSXtd�t|�GH|j ||�n|d$kr|jj}y|jj|�}
Wn-tk
r�}dtd�t|�gfSX|
r�td�GHqtd�GHn|dkr�idgd6}|jj}td�}y|jj|d|�}Wn-tk
r�}|dt|�7}g}nX|s�|GHnx,|D]!\}}td�||fGHq�Wn|dkr�y|jj�}Wn-tk
r}dtd�t|�gfSX|sAtd�G|jjGHd|d|dgfSd}t
�}x-|D]%}||d 7}|j|d!�qWWtd"�}|t|�|j|�t|�fGHnd|d|dgfS(%s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
iR�tdeleteR5R�s
have-spaces has-spaceisCSnapshot support not available, please check your lvm installation.tlvm2R�sNo lvm2 package installed.slvm2-python-libss&No lvm2-python-libs package installed.s donesFailed to list snapshots: sList of %u snapshosts:sFailed to delete snapshots: RtdevicessDeleted %u snapshosts:s3Could not determine free space on logical volumes: s#Space available to take a snapshot.sANot enough space available on logical volumes to take a snapshot.s
reason=manualR�sFailed to create snapshotsR�s: s(Created snapshot from %s, results is: %ssNo snapshots, LVM version:R
t
origin_devs3Have %u snapshots, using %s space, from %u origins.(slistRscreatessummarys
have-spaces has-space(s
have-spaces has-space(RR�RR?Rt
old_snapshotsR
RR&RR�tfnmatchR!t
del_snapshotsRtfssnap_percentaget has_spacetsnapshotRyR�(RTRRR'R�R$RR�R\tdevsRtextcmdtpcRR�todevtndevR
tdev_oristsnap((s!/usr/share/yum-cli/yumcommands.pyR^�s�
*( RbRcRYR[R\R]R�RR^(((s!/usr/share/yum-cli/yumcommands.pyR`s t FSCommandcBszeZd�Zd�Zd�Zd�Zeed�Zd�Zd�Z d�Z
d�Zd �Zd
�Z
d�ZRS(cCsdgS(Ntfs((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(Ns[]((RT((s!/usr/share/yum-cli/yumcommands.pyR[�scCs
td�S(Ns]Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.(R(RT((s!/usr/share/yum-cli/yumcommands.pyR\scCsN|r|dd krdSt|�dkr@|dd
kr@dSt|�dS(s�Verify that conditions are met so that this command can run.
These include that the program is being run by the root user,
that there are enabled repositories with gpg keys, and that
this command is called with appropriate arguments.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
itduR�tdiffNiR�tfilter(R&sstatusR'(sfilterssfilter(R&R(RTRRR'((s!/usr/share/yum-cli/yumcommands.pyR]s
"csliid6id6id6id6id6���fd�}�fd������fd�}||�S( Ntnormtmodtghosttmisstnotcs�x�|D]{}x;|j|jD])}|j��s9qn|�d|<qWx4|jD])}|j��spqUn|�d|<qUWqW�S(NR)R+(RotdirlistR�t ghostlist(R�Rtfname(tpfrtprefix(s!/usr/share/yum-cli/yumcommands.pytquick_match"s
c3s�x�|D]�}t}x/|jD]$}|j��r|Vt}PqqW|rQqnx/|jD]$}|j��r[|Vt}Pq[q[W|r�qnx)|jD]}|j��r�|VPq�q�WqWdS(N(RQR.R�R.RoR/(R�RtfoundR0(R2(s!/usr/share/yum-cli/yumcommands.pyt_quick_match_iter.s(
c
s+g���fd�}�dkr3�|�}nx�|D]�}g�|jd�dgdtd|dt�}x��dD]�}|j|kr�|�d |j<q||jd
kr�|�d|j<q|d|jkr�|�d|j<q|d
|jkr|�d|j<q||�d|j<q|Wq:W�S(Ncs�j|��sgS|S(N(R�(tpfs(t_pfstmodified(s!/usr/share/yum-cli/yumcommands.pyt scoop_pfsGs
R�RR�t
fake_problemstcallbacktfailfastiR*s
not installedR-R+s
missing okR,R)(tverifyRQR.Rt
rpmfile_statet
rpmfile_types(R�R9Rtprobstpf(R5R8R1R2(R7s!/usr/share/yum-cli/yumcommands.pytverify_matchEs&
((RTR�R2R8R�R3RB((R5R8R1R2s!/usr/share/yum-cli/yumcommands.pyt_fs_pkg_walks
cs�d��d�}iid6id6id6id6id6id6id 6id
6dd6dd
6dd6dd6dd6dd6�d��t����fd�}d}|r�|d}|d}ntjj|�s�dtd|�gfSd�|ryt|d��WqqXn�jjtj �}|j
�j|d|���j�d}tjj
|�r�|d7}||�nx}tj|�D]l\}} }
xZ|
D]R}|d7}tjj|d|�}tjj|�r�q�n||d|�q�Wq�WdG||�GHd}
|
�d7}
|
�d7}
|
�d
7}
|
�d7}
|
�d7}
|
�d7}
dG�j|
�GH|
s�dS�d}|s�|�d7}|�d7}|�d7}ndGd�j|�Gd|d |
GH|r�x�td!��dftd"��d
ftd#��dftd$��dffD]>\}}|sYqAn|Gd�j|�Gd|d |
GHqAWn�d}|s�|�d
7}ntd%�Gd�j|�Gd|d |
GH|r|d&GHtd'�G|t�d��GHtd(�G|t�d��GHtd)�G|t�d��GHtd*�G|t�d��GHtd+�G|t�d��GHn��fd,�}|r!|�dtd-��|�dtd.��|�dtd/��|�dtd0��|�dtd1��|�dtd2��n�i}|j�d�x*�dD]}�||�d|�qCWx*�dD]}�||�d|�qpWx*�dD]}�||�d|�q�W||td-��d&GH|r��d �n(i��j�d ��j�d
�t�t���}
|
r?td3�|
GHnd}x}t�d4�fd5�d6t�D]Z}|d7}�|}td7�tt|
��||�j|�fGH||
krgPqgqgWdS(8Ncss.x'|dkr)tjj|�}|VqWdS(NR�(RDRER(RE((s!/usr/share/yum-cli/yumcommands.pyt
_dir_prefixesgscSstjdt|�t�S(s5 String of a number in the readable "locale" format. s%d(R�R�RUR.(R\((s!/usr/share/yum-cli/yumcommands.pytloc_numlst pkgs_sizet
pkgs_not_sizetpkgs_ghost_sizetpkgs_miss_sizet
pkgs_mod_sizet pres_sizet data_sizet
data_not_sizeit
pkgs_counttpkgs_not_counttpkgs_ghost_counttpkgs_miss_counttpkgs_mod_countt
data_countcSs-||krd||<n||c|7<dS(Ni((R�R�R�((s!/usr/share/yum-cli/yumcommands.pyt _add_size�s
cs�tjj|�}|�dkrQ�dc|7<��d�d||�n�|�dkr��dc|7<��d�d||�nX|�dkr��dc|7<��d �d||�|�d
|<n|�dkr�dc|7<��d
�d||�n�|�dkr[�dc|7<��d�d||�n�|r�tr�x?�|�D]1}|tkr�qtn��dt||�PqtW�dc|7<|�d|<n�dc|7<|�d|<dS(NR)RNRFR+RPRHR-RORGRMR,RQRIR*RRRJRKRSRL(RDREtgetsizeRQt pkg_files(tfpathtneed_prefixR�t fpre_path(RTRDR~R1(s!/usr/share/yum-cli/yumcommands.pytdeal_with_file�s6t.isNo such file or directory: iR�R�RXsFiles :sTotal size :s Pkgs size :s%-5ss (%3.0f%%)gY@s Ghost pkgs size :s Not pkgs size :s Miss pkgs size :s Mod. pkgs size :s Data size :RrsPkgs :sGhost Pkgs :sNot Pkgs :sMiss. Pkgs :sMod. Pkgs :cs�t�t���}|r,dGH||GHnd}xwt�d�fd�dt�D]T}|d7}td�tt|��||�j�|�fGH||krTPqTqTWdS(NRriR�cs�|S(N((R\(tp_size(s!/usr/share/yum-cli/yumcommands.pyR��streverseis%*d. %60s %-5s(tminR&R�R.RR�R�(R\R$ttotR�R(Rtmax_show_len(R\s!/usr/share/yum-cli/yumcommands.pyt_pkgs�s(
sTop %d packages:sTop %d ghost packages:sTop %d not. packages:sTop %d miss packages:sTop %d mod. packages:sTop %d prefix packages:sTop %d non-package files:R�cs�|S(N((R\(RL(s!/usr/share/yum-cli/yumcommands.pyR�"sR]s%*d. %60s %-5s(R.RDRERKRRUR4R_RR`RCR?t
closeRpmDBRFtwalktnormpathtislinkR�R&RiR^R�R�(RTRR'RERZR2R�R�troottdirstfilesR0RWR_ttitleRattmpR�tdsznum((RTRDRR~RLR`R1s!/usr/share/yum-cli/yumcommands.pyt_fs_dufs�
"
c
sK�fd�}|su�jj}|s=dtjd�}ntd�GHtd�Gd�jjkGHtd�G|GHn�|dd%krbd�jjk}|djd�}||kr�|r�td
�GHntd�GHdS|r�td�GHntd�GH�jj}|r|dg}n%g|D]}|dkr"|^q"}dj|��j_|d�n�|dd&kr4|djd�s�t|�dks�d|kr�d} ndj|d�} | �jjkr�| r�td�| GHntd �GHdS| rtd!�| GHntd"�GH| �j_|d#�ndtd$�gfSdS('Nc s�tjj}tjj�jjd�sBtj�jjd�n�jjd}tjj|�s��jjd}tjj|�r�|}q�t j
�jj|�n�j}||d|j|j
j|j|jd|g�dS(Ns/etc/yums/etc/yum/yum.confs
/etc/yum.conftmaintonly(RIR�t_writeRawConfigFileRDRERKRtinstallroottmakedirstshutiltcopy2tconfig_file_pathR�tcfgtoptionst iteritemst optionobj(tconfkeytwriteRawConfigFiletfntnfntybc(R(s!/usr/share/yum-cli/yumcommands.pyt_save,s srpm: s%_install_langssFile system filters:s Nodocs:tnodocss Languages:itdocst
documentationtnodocumentationtnos%Already enabled documentation filter.s&Already disabled documentation filter.sEnabling documentation filter.sDisabling documentation filter.R�ttsflagstlangstnolangstlangtnolangt languagestnolanguagestlanguaget
nolanguageiR@RTis"Already filtering languages to: %ss!Already disabled language filter.sSetting language filter to: %ssDisabling language filter.toverride_install_langss$Not a valid sub-command of fs filter(R�RR�R�(R�R�R�R�R�R�R�R�( RR�trpmtexpandMacroRR�R�R0R&(
RTRR'R~toiltc_ftn_ftntsR\tval((Rs!/usr/share/yum-cli/yumcommands.pyt_fs_filters+sV %
1
c Csvd|jjk}|jj}|s6tjd�}n|dkrKd}n'|rrdjt|jd���}nt}d}x�|j j
d|�D]�}tr�q�||jjdd�kr�|j
d |�}|t|�7}q�|d
|jjd�kkr&|j
d |�}|t|�7}q�t}q�W|rLdtd
d|�fS|srdtd�dj|�gfSdS(NRs%_install_langsR@RrRTiRtts_install_langsR�ttruet
tsflag_nodocsis%d package to reinstalls%d packages to reinstallisNo valid packages: %sR�(RR�R�R�R�R0R�RRQR?R*R�RR�R&R.RR( RTRR'R�R�R4R�RR�((s!/usr/share/yum-cli/yumcommands.pyt_fs_refilter|s2 !
cCs�|jjd|�}|jjtj�}|j|dd|dt�}|j�x�t |d�D]r}t
d�G|GHytj|�Wqct
k
r�}|jtjkr�ytj|�Wq�q�Xq�qcqcXqcWdS(NRR�R�R8R-s Removing:(R?R*R4R_RR`RCR.RbR�RRDtunlinktOSErrorterrnotEISDIRtrmdir(RTRR'R�R�R1R0R�((s!/usr/share/yum-cli/yumcommands.pyt_fs_refilter_cleanup�s
cs~���fd�}tjjd�s?tjjtd��ntjjd�sitjjtd��ntjjd�s�tjjtd��nd}|r�|d }|d
}n|jjd|�}|j j
tj�}|j
||d|d
t��|j�i�g}x*t�dj��D]}|j} d| kr�| j|jjkr�|jj| j�}
|
j�s�|jj|
j�q�q�nxw|jj|j�D]`}d| kr�d| kr�| j|jkr�| j|jkr�|�|j<|j|�Pq�q�W|j�kr+tjjtd�|�q+q+W|r�t j!��|j"|d|j#�}t$|�d kr�d}
|
td�7}
xI|D]A}tj%j&||�}x"|D]}|
d||f7}
q�Wq�Wtjj|
�q�nxmt'j(|�D]\\}}}xJ|D]B}t'j)j*|d|�}t'j)j+|�rRqn||�qWqW|rzt,j-��ndS(Ncs|�dkrn�|�dkr&n�|�dkrRtjtd�I|IJn�|�dkren�|�dkr���d|j}tjj�d}|�|j�|f}tj|�d�||f}|GHtjj�tj|�ntjtd �I|IJdS(
NR)R+R-sNot installed:R,R*s)cd %s; rpm2cpio %s | cpio --quiet -id .%ssdiff -ru %s %ssNot packaged?:( tsyststderrRR\tstdouttflushtlocalPkgRDtsystem(RWRtextract_cmdtdiff_cmd(R�R1ttmpdir(s!/usr/share/yum-cli/yumcommands.pyRZ�s&
R'sCan't find diff commandtcpiosCan't find cpio commandtrpm2cpiosCan't find rpm2cpio commandR[iiRR�R8R*t from_repot
checksum_typet
checksum_datasCan't find package: %stcallback_totalRrsError downloading packages:
s %s: %s
R�(.t distutilstspawntfind_executableRIR�R�RR?R*R4R_RR`RCR.RbR�R�R�R�RtgetRepoR/R2R3RLR�R\R�R�tpkgIdR�RjtmkdtemptdownloadPkgstdownload_callback_total_cbR&RtuniqueRDRcRERdReRrtrmtree(RTRR'RZR2R�R�tdownloadpkgsR8tiyiR#tapkgtproblemst errstringR�terrorsterrorRfRgRhR0RW((R�R1R�s!/usr/share/yum-cli/yumcommands.pyt_fs_diff�sj
cs��fd�}d}|r2|d}|d}n|jjd|�}|jjtj�}|j||d|dt��|j�xmt j
|�D]\\}}} xJ| D]B}
t jj|d|
�}t jj
|�r�q�n||�q�Wq�WdS( Ncs�|�dkrny|�dkr&nf|�dkrHtd�G|GHnD|�dkr[n1|�dkr}td�G|GHntd�G|GHdS( NR)R+R-sNot installed:R,R*s Modified:sNot packaged?:(R(RW(R1(s!/usr/share/yum-cli/yumcommands.pyRZsR[iiRR�R8R�(R?R*R4R_RR`RCR.RbRDRcRERdRe(RTRR'RZR2R�R�RfRgRhR0RW((R1s!/usr/share/yum-cli/yumcommands.pyt
_fs_status
s
c
Csi|r-|ddkr-|d}|d
}nd}tr<n|dkr]|j||�}n�|dkr~|j||�}n�|dkr�|j||�}n�|dkr�|j||�}n�|dkr�|j||�}n_|dkr|j||�}n>|d kr)t�j|dt �}nd
t
d�|gfS|dk rP|Sd|d
|dgfS(s�Execute this command.
:param base: a :class:`yum.Yumbase` object
:param basecmd: the name of the command
:param extcmds: the command line arguments passed to *basecmd*
:return: (exit_code, [ errors ])
exit_code is::
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
iR�R(trefiltersrefilter-cleanupR&R�R'R#isfs snapsNot a valid sub-command of %sR�s done(sfilterssfilterR�srefilter-cleanupsdusstatussdiffssnap(sfiltersfiltersN(RQRlR�R�R�R�R�RR^RWRR�(RTRRR'R�Rm((s!/usr/share/yum-cli/yumcommands.pyR^.s4
(RbRcRYR[R\R]RQRCRlR�R�R�R�R�R^(((s!/usr/share/yum-cli/yumcommands.pyR$�s M � Q Y $(PRdRDR�RR�RIRRRRt
yum.ErrorsR�R�RR�tyum.i18nRRRRRjRrtdistutils.spawnR�RmR�t
yum.configRtyum.packagesR tyum.fssnapshotsR
RRRR%R(R*R7R8R9RBRGRORPReRhRnR�R�R�R�R�R�R�R=RSRVRZRhRjRkRrRvRyR{R�R�R�R�R
RLRSR�R�R�R�RRR$(((s!/usr/share/yum-cli/yumcommands.pyt<module>s�"
& o=<< �k��kNBlM<K<BC�LnGH��L�^�2�]1� |