403Webshell
Server IP : 77.68.64.21  /  Your IP : 216.73.216.219
Web Server : Apache
System : Linux hp3-wp-1011378.hostingp3.local 3.10.0-1160.144.1.el7.tuxcare.els9.x86_64 #1 SMP Fri Jul 10 17:06:31 UTC 2026 x86_64
User : csh2668128 ( 2112425)
PHP Version : 8.1.34
Disable Function : shell_exec,exec,system,popen,set_time_limit
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/PackageKit/helpers/yum/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/PackageKit/helpers/yum/yumBackend.pyo
�
�^c@s�ddlTddlTddlTddlmZddlZddlmZmZddl	m
Z
mZddlm
Z
ddlTddlmZddlTddlmZmZdd	lmZmZdd
lmZddlmZddlZddlZddlZddlZddl Z ddl!Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddl(Z(ddl)Z)ddl*Tddl+Te,Z-e.�Z/ie0d6e1d
6e2d6e3d6e4d6e5d6Z6ide76de86de96de:6de;6de<6Z=dZ>ie?e@6eAeB6eCeD6eCeE6eFeG6eCeH6eIeJ6ZKieLe@6eMeB6e;eD6e;eE6eNeG6e;eH6e<eJ6eOe>6ZPdejQfd��YZRd�ZSdd�ZTd�ZUd�ZVd �ZWd!�ZXd"�ZYd#d$�ZZd%�Z[d&�Z\d'�Z]d(e^efd)��YZ_d*efd+��YZ`d,e
fd-��YZad.fd/��YZbd0ecfd1��YZdd2ejefd3��YZfd4�Zgehd5kr�eg�ndS(6i����(t*(tPackagekitPackageN(t	BaseMetert
format_number(t
URLGrabbertURLGrabError(tRPMBaseCallback(tUpdateMetadata(tprco_tuple_to_stringtunique(tYumLocalPackaget
parsePackages(tMetaSack(tYumBaseErrortrepomdtprimaryt	fileliststothertcompst
updateinfoii
i(i-i7i_trepackagingtGPGKeyNotImportedcBseZRS((t__name__t
__module__(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRrscCs1tr tj�tjt�ntjd�dS(Ni(tyumbaset
closeRpmDBtdoUnlocktYUM_PID_FILEtsystexit(tsignumtframe((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsigquitus
sutf-8cCs[t|t�rt|�}n9t|t�rWt|t�sWt||dd�}qWn|S(Nterrorstreplace(t
isinstanceR
tunicodet
basestring(ttxttencoding((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_to_unicode{scCsod}|jdkr4d|j|j|jf}n7|jrVd|j|jf}n|jrk|j}n|S(sI return the a ver as epoch:version-release or version-release, if epoch=0tt0s%s:%s-%ss%s-%s(tepochtversiontrelease(tpotver((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_package_ver�s		cCsM|jd�}t|�dkr)d|Sd|d|d|d|dfS(	sE
    Convert 'hal;0.5.8;i386;fedora' to 'hal-0.5.8-fedora(i386)'
    t;isincorrect package_id: %ss%s-%s(%s)%siiii(tsplittlen(t
package_idtparts((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_format_package_id�scCs*|r"|jd�}dj|�SdSdS(s@
    Convert a multi line string to a list separated by ';'
    s
R1R)N(R2tjoin(ttexttlines((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_format_str�s
cCs|rdj|�SdSdS(s@
    Convert a multi line string to a list separated by ';'
    R1R)N(R7(tlst((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_format_list�s
cCs�|jd�}|dkr6|| }||d}nd}yt|jd��\}}Wntk
r|}d}d}nX|||fS(s5
    get the e, v, r from the package id version
    t:i����iR*t-(tfindttupleR2t
ValueError(tidvertcposR+R,R-te((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_getEVR�s

s...cCs&t|�|kr|S|| |SdS(N(R3(R8tlengthtetc((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt	_truncate�scCsP|jd�rtS|jd�r&tS|jd�r9tS|jd�rLtStS(Ns
-debuginfos-debugs-developments-source(tendswithtTruetFalse(trepo((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_is_development_repo�scCs�t|t�r!|jd�}nydj|�}WnFtjk
rX}t|�}n%tk
r|}tt	j
��}nXt|d�}|jdd�}|jdd�}|jdd�}|S(Ns
R1is%;Please report this error in bugzillaR)sMissing Dependency: s (installed)(
R#R%R2R7t
exceptionst	TypeErrortstrt	ExceptionR:t	tracebackt
format_excRHR"(tmsgsR8RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_format_msgs�scCsE|s
dStd|�j�jd�}dj|�jd�}|S(Ntinvalids/proc/%d/cmdlinett (topentreadR2R7tstrip(tpidtcmdlinestcmdline((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_cmdline_for_pid�s
tPackageKitYumBackendcBs�eZed�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"e#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.d+�Z/d,�Z0d-�Z1d.�Z2d/�Z3dHe#d0�Z5d1�Z6d2�Z7d3�Z8d4�Z9ed5�Z:d6�Z;d7�Z<d8�Z=d9�Z>d:�Z?d;�Z@d<�ZAd=�ZBd>�ZCd?�ZDd@�ZEdHZFeGdAeE�ZHdB�ZIdC�ZJdD�ZKdE�ZLe#dF�ZMdG�ZNRS(IcCs�tjtjt�tj||�yt|�|_Wn)tk
ra}|j|j	|j
�nXtj�}y|jd�Wn,t
k
r�}ttdt|���nXy"|jdd�jd�|_WnJtjk
r�}g|_n,t
k
r}ttdt|���nXy"|jdd�jd�|_WnJtjk
r`}g|_n,t
k
r�}ttdt|���nX|r�|j�ni|_t|j�|_|jj�s�|jt�|jj�s�|jtd�q�nd}tj|�|jrqd	t_ y5tjtj!tj"�}|j#tj$tj d
�Wqqtjk
rm}qqXnt%t&t't(g|_)|j}y|j*�Wn)tk
r�}|j|j	|j
�nXdS(Ns/etc/PackageKit/Yum.confsFailed to load Yum.conf: %stBackendtSystemPackagesR1tInfrastructurePackagess$comps categories could not be loadedg.@i
tlp(+tsignaltSIGQUITR tPackageKitBaseBackendt__init__tPackageKitYumBaseRtPkErrorterrortcodetdetailstConfigParserRZRQtERROR_REPO_CONFIGURATION_ERRORR(tgetR2tsystem_packagest
NoOptionErrortinfra_packagestdoLocktpackage_summary_cachetyumCompsRtconnectt
refresh_cacheRJtERROR_GROUP_LIST_INVALIDtsockettsetdefaulttimeoutt
backgroundtTCP_CONGESTIONtAF_INETtSOCK_STREAMt
setsockopttIPPROTO_TCPt	TS_UPDATEt
TS_INSTALLtTS_TRUEINSTALLt
TS_OBSOLETINGttransaction_sig_check_mapt
_setup_yum(tselftargstlockRDtconfigttimeouttsockR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh�s\""
	

			c	Cs2t|�}tj||||||||�dS(s�
        Send 'details' signal
        @param id: The package ID name, e.g. openoffice-clipart;2.6.22;ppc64;fedora
        @param summary: The summary of the package
        @param license: The license of the package
        @param group: The enumerated group
        @param desc: The multi line package description
        @param url: The upstream project homepage
        @param bytes: The size of the package, in bytes
        convert the description to UTF before sending
        N(R(RgRm(R�R4tsummarytpackage_licensetgrouptdescturltbytes((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRm&scCs�t|�}|j|�\}}}}t|�dkrI||j|<n"|jj|�rk|j|}ntj||||�dS(s
        send 'package' signal
        @param info: the enumerated INFO_* string
        @param id: The package ID name, e.g. openoffice-clipart;2.6.22;ppc64;fedora
        @param summary: The package Summary
        convert the summary to UTF before sending
        iN(R(tget_package_from_idR3Ruthas_keyRgtpackage(R�R4tstatusR�tnameRBtaRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�5scCs8t|�}t|�}tj||||||�dS(sl
        Send 'category' signal
        parent_id : A parent id, e.g. "admin" or "" if there is no parent
        cat_id    : a unique category id, e.g. "admin;network"
        name      : a verbose category name in current locale.
        summery   : a summary of the category in current locale.
        icon      : an icon name to represent the category
        N(R(Rgtcategory(R�t	parent_idtcat_idR�R�ticon((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�Js	cCsfd}d}xS|j�say.|jjt�tj|�|jt�Wqtj	k
r{}|j
tdt|��qt
jjk
r]}|jt�|jt�|s�t|j�}n|jd�dkr|jdd|j�tj|jtj�ntjd�|d7}|d	kr^d
||jf}|j
tdt|��q^qXqWdS(
s	 Lock YumisDisk error: %ss
yumBackend.pyi����t
BACKEND_ERRORskilling pid %i, as old instanceiiids4The other process has the command line '%s' (PID %i)s(Yum is locked by another application. %sN(tNonetisLockedRRtRRgtallow_cancelRKRNtIOErrorRktERROR_NO_SPACE_ON_DEVICER(tyumtErrorst	LockErrorRJR�tSTATUS_WAITING_FOR_LOCKR_R\R?tmessagetostkillReRfttimetsleeptERROR_CANNOT_GET_LOCK(R�tretriesR^RDtmsg((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRtWs,




cCs�|j�r�tj|�y!|jj�|jjt�Wq�tjk
rl}|j	t
dt|��q�tk
r�}|j	t
ttj���q�XndS(s Unlock YumsDisk error: %sN(R�RgtunLockRRRRRNR�RkR�R(RQtERROR_INTERNAL_ERRORR:RRRS(R�RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�xs

cCsT|jj�}x>|D]6}x-|D]%}||kr#|j||�q#q#WqWdS(N(Rtget_meta_packagest_show_meta_package(R�tfilterstvaluestgrpstgrpidtvalue((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_do_meta_package_search�s


cCs
||_dS(sh
        Implement the set-locale functionality
        Needed to be implemented in a sub class
        N(tlang(R�Rl((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
set_locale�scCsut|�}g}t|kr1|j||�nt|krqg}g}yb|jj||�}xF|D]>\}	}
|	jjjd�r�|j	|	�qh|j	|	�qhWWn�t
jjk
r�}t
tdt|���qqtjk
r
}t
tdt|���qqtk
r:}t
tttj����qqX|j|�|j|�|j�}|j|�ndS(s�
        Search for yum packages
        @param searchlist: The yum package fields to search in
        @param filters: package types to search (all, installed, available)
        @param values: key to seach for
        t	installeds"failed to use search generator: %ssDisk error: %sN(t	YumFiltertFILTER_NOT_COLLECTIONSR�tFILTER_COLLECTIONSRtsearchGeneratorRLtidt
startswithtappendR�R�t	RepoErrorRjtERROR_NO_CACHER(RNR�R�RQR�R:RRRSt
add_installedt
add_availabletget_package_listt_show_package_list(R�t
searchlistR�R�t	pkgfiltertpackage_listR�t	availabletrestpkgtinstRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
_do_search�s.

cCs+x$|D]\}}|j||�qWdS(N(t
_show_package(R�R;R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��scCsQy|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�dg}|j
t�y|jjdddd�Wn^tjk
r�}|jtdt|��n/tk
r}|jtttj���nXy|j|||�Wn/tk
rL}|j|j|jdt�nXdS(	s9
        Implement the search-name functionality
        t
lazy_cacheRNiR�t
errorlevelt
debuglevelsDisk error: %s(t_check_initRJRjRkRlRmRKRtconftcacheR�t
percentageR�R�tSTATUS_QUERYt
doConfigSetupRNR�R�R(RQR�R:RRRSR�(R�R�R�RDR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsearch_name�s(

	
 cCsZy|jdt�Wn0tk
rF}|j|j|jdt�dSXy|jjdddd�Wn^t	j
k
r�}|jtdt|��n/t
k
r�}|jtttj���nXd|jj_|jt�|jd�dd	d
dg}|jt�y|j|||�Wn/tk
rU}|j|j|jdt�nXdS(s<
        Implement the search-details functionality
        R�RNR�iR�sDisk error: %sR�R�tdescriptionR�(R�RJRjRkRlRmRKRR�RNR�R�R(RQR�R:RRRSR�R�R�R�R�R�R�R�(R�R�R�RDR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsearch_details�s( 


cCs�g}x�|D]�}y|jjjd|�}Wn\tjk
r`}ttdt|���q
tk
r�}tt	t
tj����q
X|j
|�q
W|S(NR�sDisk error: %s(RtrpmdbtsearchNevraRNR�RjR�R(RQR�R:RRRStextend(R�t	name_listtfoundR�tpkgsRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_installed_from_names�s
cCs�d}y|jjjd|�}Wn�tjjk
rV}ttdt	|���n\t
jk
r�}ttdt	|���n.t
k
r�}ttttj����nX|S(Ntnamessfailed to search names: %ssDisk error: %s(R�RtpkgSacktsearchNamesR�R�R�RjR�R(RNR�R�RQR�R:RRRS(R�R�R�RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_available_from_names�scCs�|jd�t|�}g}g}g}y|jj}Wn^tjk
rm}|jtdt	|��n/t
k
r�}|jttt
j���nXx9|D]1}|jjd�|kr�|j|g�q�q�Wy|jjj|�}	Wn\tjk
r"}ttdt	|���n.t
k
rO}tttt
j����nXt|	�dkrxttd|��n|	dj�s�ttd||	djf��ny|jjj|�Wn\tjk
r�}ttdt	|���n.t
k
r }tttt
j����nXx"|	djD]}|j|�q/W|j|�|j|�|j�}
|j|
�|jd�dS(s0
        Handle the special repo groups
        sDisk error: %st	from_repoiscannot find repo %ss$%s cannot be found as %s is disabledidN( R�R�R�RR�RNR�RkR�R(RQR�R:RRRSt
yumdb_infoRpR�trepost	findReposRjR3tERROR_REPO_NOT_FOUNDt	isEnabledtERROR_PACKAGE_NOT_FOUNDR�tpopulateSacktsackR�R�R�R�(R�trepo_idR�R�R�R�R�RDR�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt%_handle_repo_group_search_using_yumdb
sJ
 
#


cCs�|jd�t|�}g}g}y|jjj|�}Wn\tjk
ro}tt	dt
|���n.tk
r�}ttt
tj����nXt|�dkr�ttd|��ndGH|dj�s�ttd||djf��ny|jjj|�Wn\tjk
rE}tt	dt
|���n.tk
rr}ttt
tj����nXx�|djD]�}yC|jjjd|jd|jd|jd	|jd
|j�}	Wn\tjk
r�}tt	dt
|���n.tk
r(}ttt
tj����nX|j|�rL|j|	d�q�|j|�q�W|j |�|j!|�|j"�}
|j#|
�|jd�dS(
s
        Handle the special repo groups
        This is much slower than using _handle_repo_group_search_using_yumdb()
        as we have to resolve each package in the repo to see if it's
        installed.
        Of course, on RHEL5, there is no yumdb.
        sDisk error: %siscannot find repo %ssfound reposs$%s cannot be found as %s is disabledR�R+R/treltarchidN($R�R�R�RR�R�RNR�RjR�R(RQR�R:RRRSR3R�R�R�R�R�R�R�R�R�R+R/R�R�t_is_instR�R�R�R�R�(R�R�R�R�R�R�R�RDR�tinstpoR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_handle_repo_group_search>sH
#C


cCs
|jd�t|�}g}y)|jjdd�}|j|j�Wn�tjj	k
rx}t
tt|���n�t
jk
r�}t
tdt|���n`tk
r�}t
tttj����n3Xg}g}x�|D]�}yC|jjjd|jd|jd|jd|jd|j�}	Wn\t
jk
ra}t
tdt|���n.tk
r�}t
tttj����nXt|	�d	kr�|j|	d	�q�|j|�q�W|j|�|j|�|j �}
|j!|
�|jd
�dS(s1
        Handle the special newest group
        t	pkgnarrowtrecentsDisk error: %sR�R+R/R�R�iidN("R�R�R�RtdoPackageListsR�R�R�R�R�RjtERROR_REPO_NOT_AVAILABLER(RNR�R�RQR�R:RRRSR�R�R�R+R/R�R�R3R�R�R�R�R�(R�R�R�R�tyglRDR�R�R�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_handle_newestus:

C


cCs�|jd�|jj�}t|�dkr@ttd��nd}d}d|t|�}xV|D]N}|j||�||7}t|�t|�krg|j|�|}qgqgW|jd�dS(s5
        Handle the special collection group
        is:No groups could be found. A cache refresh should fix this.ii����gY@idN(	R�R�RR�R3RjRyR�tint(R�R�tcollectionstpcttold_pcttsteptcol((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_handle_collections�s




c	Cset|k}t|k}d|}y|jjj|�}Wn�tjjk
ro}tt	dt
|���n�tjjk
r�}ttd|t
|�f��n�t
jk
r�}ttdt
|���n�tk
r}ttttj����n`X|ra|j|j�}|jrB|r^|j|t|�q^qa|ra|j|t|�qandS(Ns	%s;;;metas#failed to get groups from comps: %ssfailed to find group '%s': %ssDisk error: %s(tFILTER_INSTALLEDtFILTER_NOT_INSTALLEDRRtreturn_groupR�R�R�RjR�R(tGroupsErrortERROR_GROUP_NOT_FOUNDRNR�R�RQR�R:RRRSt
nameByLangR�R�R�tINFO_COLLECTION_INSTALLEDtINFO_COLLECTION_AVAILABLE(	R�R�R�t
show_availt	show_instR4tgrpRDR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s(
"	c	Cs]y|jdt�Wn0tk
rF}|j|j|jdt�dSX|jt�y|jj	dddd�Wn^t
jk
r�}|jtdt
|��n/tk
r�}|jtttj���nXd|jj_|jt�g}t|�}t|krSy|j|�Wn/tk
rN}|j|j|jdt�nXdSt|kr�y|j|�Wn/tk
r�}|j|j|jdt�nXdSd|dkry$|j|djdd	�|�Wn/tk
r}|j|j|jdt�nXdSx|D]}|dd
krL|d}|jj|�}n|jj |�}|sjqnt!|kr�y|j"|j#|��Wq�tk
r�}|j|j|jdt�dSXnt$|kry|j%|j&|��Wq"tk
r}|j|j|jdt�dSXqqW|j �}|j'd�|j(|�|j'd
�dS(s:
        Implement the search-group functionality
        R�RNR�iR�sDisk error: %ssrepo:R)t@iiZid()R�RJRjRkRlRmRKR�RR�RNR�R�R(RQR�R:RRRSR�R�R�R�R�tGROUP_COLLECTIONSRtGROUP_NEWESTR�R�R"Rtget_meta_package_listR�RR�R�RR�R�R�R�(	R�R�R�RDR�R�R�R�tall_packages((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsearch_group�sr
 
  $ 



cCs|jt�|jt�y|jjdddd�Wn^tjk
ri}|jt	dt
|��n/tk
r�}|jtt
tj���nXd|jj_g}t|�}y|jj}Wn^tjk
r�}|jt	dt
|��n/tk
r)}|jtt
tj���nX|j|�t|kr�y|jj}Wn�tjjk
r�}|jtdt
|�dt�dStjk
r�}|jt	dt
|��q�tk
r�}|jtt
tj���q�X|j|�n|j�}|j|�dS(s�
        Search for yum packages
        @param searchlist: The yum package fields to search in
        @param filters: package types to search (all, installed, available)
        R�iR�sDisk error: %ssfailed to get package sack: %sRN(R�R�R�RJRR�RNR�RkR�R(RQR�R:RRRSR�R�R�R�R�RR�R�R�R�R�RKR�R�R�(R�R�RDR�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_packagess>

  
  cCs-y|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�|j
t�t|�}t|kr0x�|D]�}y|jjj|�}Wn^tjk
r�}|jtdt|��n/tk
r}|jtttj���nX|j|�q�Wnt|krx�|D]�}y|jjj|�}Wn�tj j!k
r�}|jt"dt|�dt�dStjk
r�}|jtdt|��qCtk
r�}|jtttj���qCX|j#|�qCWn|j$�}|j%|�dS(s9
        Implement the search-file functionality
        R�RNisDisk error: %ssfailed to search sack: %s(&R�RJRjRkRlRmRKRR�R�R�R�R�R�R�R�RR�tsearchFilesRNR�R�R(RQR�R:RRRSR�RR�R�R�R�R�R�R�R�(R�R�R�RDR�R�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsearch_fileHsB



 
  cCs�|jd�p|jd�r(|gSng}|jd|�|jd|�|jd|�|jd|�|jd|�|jd|�|j|�|Sttd	|��(
Nsgstreamer0.10(sgstreamer1(sgstreamer0.10(%s)sgstreamer1(%s)sfont(%s)smimehandler(%s)spostscriptdriver(%s)splasma4(%s)s+this backend does not support '%s' provides(R�R�RjtERROR_NOT_SUPPORTED(R�t
provides_typeR�tprovides((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_provides_queryxs

cCs[y|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�|j
t�g}t|�}yEx>|D]6}|j||�}x|D]}	|j|	�q�Wq�WWn/tk
r}|j|j|jdt�n9Xx5|D]-}	y|jjj|	�}
Wn/tk
r]}|jtttj���q
X|j|
�t|kr
y|jjj|	�}
Wn�tjjk
r�}|jtdt |�dt�dSt!j"k
r�}|jt#dt |��q:tk
r)}|jtttj���q:X|j$|
�q
q
W|j%�}|j&|�dS(s;
        Implement the what-provides functionality
        R�RNis#failed to get provides for sack: %ssDisk error: %s('R�RJRjRkRlRmRKRR�R�R�R�R�R�R�R�RR�R�tsearchProvidesRQR�R:RRRSR�RR�R�R�R�R�R(RNR�R�R�R�R�(R�R�RR�RDtvalues_providesR�R�RtprovideR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
what_provides�sJ




 
 
  cCsy|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
d�|jt
�|jt�g}y|jjj}Wn�tjjk
r�}|jtdt|�dt�nNtjjk
r	}|jtdt|�dt�ntjk
r8}|jtdt|��n�tk
rf}|jtttj���n�Xt |�dkr�|jtddt�dSx�|D]�}|j!}t|j"�}t|j#�}d	|}t$j%|t$j&�r�|}nd
}|j'd||||�|j(|�q�W|j'ddd
dd�y|jj)j)j*�}	Wn`tjk
r�}|jtdt|��dStk
r�}|jtttj���dSXxG|	D]?}
|
j+�r�|j'dd|
j,|
j"d|
j"d�q�q�WdS(s<
        Implement the get-categories functionality
        R�RNisfailed to get comps list: %ssFailed to get groups list: %ssDisk error: %ssno comps categoriess/usr/share/pixmaps/comps/%s.pngs
image-missingR)srepo:sSoftware Repositoriess,Packages from specific software repositoriessbase-systemsPackages from (-R�RJRjRkRlRmRKRR�R�R�R�R�R�R�Rt
categoriesR�R�R�R�R(R
RyRNR�R�RQR�R:RRRSR3t
categoryidR�R�R�taccesstR_OKR�t_get_groupsR�R�R�R�(R�RDtcatstcatR�R�R�tfnR�R�RL((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_categories�sZ


## 
	
	
c
Cs�|jt�|jt�|r,|g}n%g|jjjD]}|j^q<}x~|D]v}g}x�|jj|�D]�}y|jjj	|�}Wn^t
jk
r�}|jt
dt|��n/tk
r�}|jtttj���nX|rw|j|�qwqwWx�t|�D]�}|j}d|}|j|j�}	|j|j�}
d}d|}tj|tj�r�|}n(d|}tj|tj�r�|}n|j|||	|
|�qWqXWdS(s=
        Implement the get-collections functionality
        sDisk error: %ss@%ss
image-missings/usr/share/pixmaps/comps/%s.pngN(R�R�R�RJRRR#R$t
get_groupsR	RNR�RkR�R(RQR�R:RRRSR�tsortedtgroupidRR�tdescriptionByLangR�R%R&R�(
R�R�R(R)R�tgrp_idRRDtcat_id_nameR�R�R�R*((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR'�s:

%
 	

	
	cCs4y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�|jt�d}dt
|�}x�|D]�}|j|�y|j|�\}}Wn0tk
r�}|j|j|jdt
�dSX|s|jdd|�q�n|j\}	}
}}}y%|jjj|	||||
�}
Wn�tjjk
r}|jtdt|�dt�dStjk
r�}|jtdt|��n/tk
r�}|jtttj ���nXt
|
�dkr	|jdd	|�q�n|
d}|j!|t"�y|jj#j$|j%�}Wn^tjk
rq}|jtdt|��n/tk
r�}|jtttj ���nX|j&d
�}|rbt'j(j)|�}t'j(j*|�s�|jt+ddt�dSt'j(j,||�}t'j(j*|�rbt'j(j-|�t.|j&d��krb|jt+d
|dt�dSnd|_|r}||_/ny2|j0|�}|j1|�}|j2||�Wnctjj3k
r�}|jt4dt|�dt�dStk
r}|jt+ddt�dSX||7}q�W|jd�dS(s?
        Implement the download-packages functionality
        RNiidtCOULD_NOT_FIND_PACKAGEsCould not find the package %ss!failed to search package sack: %ssDisk error: %ss%Could not find a match for package %strelativepathsNo destination directory existstpackagesizesPackage already exists as %ssFailed to download: %ssCannot write to file(5R�RjRkRlRmRKRR�R�R�RJR�tSTATUS_DOWNLOADR3R�t_findPackageR�tpkgtupR�R�R�R�R�R�R(RNR�R�RQR�R:RRRSR�tINFO_DOWNLOADINGR�tgetRepotrepoidtreturnSimpleR�tpathtbasenametexiststERROR_PACKAGE_DOWNLOAD_FAILEDR7tgetsizeRt	localpatht
getPackaget
_pkg_to_idtfilestNoMoreMirrorsRepoErrortERROR_NO_MORE_MIRRORS_TO_TRY(R�t	directorytpackage_idsRDR�tbumpR4R�R�tnR�tvtrtpackstpkg_downloadRLtremotetlocalR<tpackage_id_tmp((s//usr/share/PackageKit/helpers/yum/yumBackend.pytdownload_packagess�



%  
 9	 c	Cs�d}t|jd��dkr�|j|�\}}}}t}|dkr�|ddkrk|d}ny|jjj|�}Wn^tj	k
r�}|j
tdt|��n/t
k
r�}|j
tttj���nXt}n�|ddkr�y|jjj|d�}Wn^tj	k
rM}|j
tdt|��n/t
k
r{}|j
tttj���nXt}n|r�|r�|j
td|t|�f�dSn|S(NR1itmetaiRsDisk error: %ss)group %s does not exist (searched for %s)(R�R3R2R�RKRRR	RNR�RkR�R(RQR�R:RRRSRJRR6(	R�R4RR�RBR�RLtisGroupRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_is_meta_packageus4
 	 	
 cCs�|j|�rdtfSt|jd��dkrPttdt|���n|j|�\}}}}t	|�\}}}|j
d�rLy4|jjj
d|d|d|d|d	|�}	Wn\tjk
r�}ttd
t|���n.tk
r!}ttttj����nXt|	�dkrB|	dtfSdtfSy|jjj|�}
Wn\tjk
r�}ttd
t|���n.tk
r�}ttttj����nXt|
�dkr�ttd|��n|
dj�s%ttd
t|�|
djf��ny|jjj|�Wn\tjk
rm}ttd
t|���n.tk
r�}ttttj����nXy5|
djj
d|d|d|d|d	|�}	Wn�t j!j"k
r}tt#t|���n\tjk
r.}ttd
t|���n.tk
r[}ttttj����nXt|	�dkrxdtfSt|	�dkr�|j$ddt|��n|	dtfS(sQ
        find a package based on a package id (name;version;arch;repoid)
        R1is package_id '%s' cannot be parsedR�R�R+R/R�R�sDisk error: %siscannot find repo %ss$%s cannot be found as %s is disabledR2s"more than one package match for %sN(%RUR�RKR3R2RjtERROR_PACKAGE_ID_INVALIDR6R�RER�RR�R�RNR�R�R(RQR�R:RRRSRJR�R�R�R�R�R�R�R�R�R�R�R�R�(R�R4RJRBR�RLRDRKRLR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR6�sZ
4
)5
cCs#y|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�|j
t�d}dt|�}g}g}x|D]}	|j|�|j|	�}
|
r�|
js�|jtd|
j�q�y|jj|
j�}Wn^tjk
r<}|jtdt|��n/tk
rj}|jtttj���nXx1|jjD]}|j|j �qxWn
y|j!|	�\}
}WnXtk
r}|jt"kr�|j#d|j�q�n|j|j|jdt�dSX|r�|
r�|j|
�y|jj$d	|
�}Wq�tjk
rm}|jtdt|��q�tk
r�}|jtttj���q�Xn||7}q�Wt|jj�dkr�|r�y|jj%�\}}Wn�t&j'j(k
r}|jt)t|��n^tjk
rD}|jtdt|��n/tk
rr}|jtttj���nXx9|jjD](}|j |kr�|j|j �q�q�Wnx*|D]"}
|
|kr�|j$|
�q�q�Wx3|D]+}
|j*|
�}	|j+|	t,|
j-�q�W|jd�dS(
s>
        Print a list of requires for a given package
        R�RNiidsThe Group %s is not installedsDisk error: %sR2R.(.R�RJRjRkRlRmRKRR�R�R�R�R�R�tSTATUS_INFOR3RUR�tERROR_PACKAGE_NOT_INSTALLEDR.tgroupRemoveRNR�R�R(RQR�R:RRRSttsInfoR�R.R6R�R�tremovetbuildTransactionR�R�R�R�RCR�tINFO_INSTALLEDR�(R�R�RHt	recursiveRDR�RIt	deps_listtresolve_listR4RttxmbrsttxmbrR�R�trcRT((s//usr/share/PackageKit/helpers/yum/yumBackend.pytrequired_by�s~




	 
# 

cCs�y|jjjd|�}Wn^tjk
rN}|jtdt|��n/tk
r|}|jt	t
tj���nX|S(NR.sDisk error: %s(
RR�R�RNR�RkR�R(RQR�R:RRRS(R�R�tretRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�+s cCsP|j|�}|rtS|jdkrLd|_|j|�}d|_n|S(Nti386ti686(R�RJR�(R�R�Re((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
_is_inst_arch5s	c	Cs�y|jjj}Wn^tjk
rE}|jtdt|��n/tk
rs}|jt	t
tj���nX|j
|�r�tSy(|jjjd|jd|j�}Wn^tjk
r�}|jtdt|��n/tk
r}|jt	t
tj���nXg}xK|D]C}tjj|j�tjj|j�kr|j|�qqqWt|�dkr�x|D]�}|j|jkr�|j|kr�|j|jkr�tSqytSq}|j|jkr�tS|j|jkr}|ryy|jj|�}Wn^tjk
r:}|jtdt|��n/tk
rh}|jt	t
tj���nX|rvtSqyq}q}WntStS(s:check if the package is reasonably installable, true/falsesDisk error: %sR�R�i(RR�t
exactarchlistRNR�RkR�R(RQR�R:RRRSRhRKR�R�R�R�trpmUtilstisMultiLibArchR�R3tEVRRJtallowedMultipleInstalls(	R�R�tematchRiRDtinstalledByKeyt
comparableR�Re((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_installableBsP ( 
*
 c
CsAd}x�|D]�}|j\}}}}}y.|jjjd|d|d|d|�}	Wn^tjk
r�}|jtdt	|��n/t
k
r�}|jttt
j���nXx8|	D]0}
|r�|
j|jkr�|
}q�q�|
}q�Wq
W|s=x;|D]0}
|r0|
j|jkr6|
}q6q|
}qWn|S(s3
        Gets best dep package from a list
        R�R+R/R�sDisk error: %sN(R�R7RR�R�RNR�RkR�R(RQR�R:RRRSRl(R�tpkglisttbesttpkgiRJR�RDRKRLR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_best_pkg_from_list�s*
. 


cCs�g}y|jj|�}Wn^tjk
rN}|jtdt|��n/tk
r|}|jtt	t
j���nXg}g}xt|j�D]f}x]||j�D]K}	|||	}
|
s�|jt
dt|	�dt�Pn|j|
�q�Wq�Wx_|D]W}
|j|
�}||kr|j|�|r^|j|�r^|j|�q^qqWt|�dkr�|j|t�}x-|D]"}||kr�|j|�q�q�Wn|S(s� Gets the best deps for a package
        @param pkgs: a list of package objects
        @param recursive: if we recurse
        @return: a list for yum package object providing the dependencies
        sDisk error: %ss*the (%s) requirement could not be resolvedRi(RtfindDepsRNR�RkR�R(RQR�R:RRRStkeystERROR_DEP_RESOLUTION_FAILEDRRKR�RuR�R3t_get_best_dependsRJ(R�R�R^R_tresultsRDtrequire_listtrecursive_listR�treqtreqlisttpkgsdeps((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRy�s8  


cCs'|js�y|jj|j�}Wqtjk
rT}|jtdt|��qt	k
r�}|jt
ttj
���qXnzy|jj|j�}Wn^tjk
r�}|jtdt|��n/t	k
r�}|jt
ttj
���nXg}x|D]}|j|j�q
W|js�y|jj|j�Wq#tjk
ry}|jtdt|��q#t	k
r�}|jt
ttj
���q#Xnxy|jj|j�Wn^tjk
r�}|jtdt|��n/t	k
r"}|jt
ttj
���nX|S(sb
        Get the packages there will be installed when a comps group
        is installed
        sDisk error: %s(R�RtselectGroupR.RNR�RkR�R(RQR�R:RRRSRYR�R.t
deselectGroupt
groupUnremove(R�RRaRDR�tt((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_group_packages�s<	# 
	# cCs�d}dt|�}g}g}x�|D]�}|j|�|j|�}	|	r�|	jrt|jtd|	j�q�y|jj|	j�}
Wn^t	j
k
r�}|jtdt|��n/t
k
r�}|jtttj���nXx$|jjD]}|j|j�q�Wy|jj|	j�Wq�t	j
k
r^}|jtdt|��q�t
k
r�}|jtttj���q�Xny|j|�\}
}Wn0tk
r�}|j|j|jdt�dSX|r�|
r�|j|
�y|jjd|
�}
Wq�tjjk
r@}|jtt|��q�t	j
k
ro}|jtdt|��q�t
k
r�}|jtttj���q�Xn||7}q)Wt|jj�dkr�|r�y|jj �\}}Wn�tjjk
r}|jtt|��n^t	j
k
rF}|jtdt|��n/t
k
rt}|jtttj���nX|dkr�|jt!t"|��q�x9|jjD](}|j|kr�|j|j�q�q�Wnt#|�}xv|D]n}y|j|�\}
}Wn0tk
r:}|j|j|jdt�dSX|
|kr�|j$|
�q�q�Wx-|D]%}
|j%|
�rb|j$|
�qbqbW|S(	s�
        Gets the deps that are not installed, optimisation of depends_on
        using a yum transaction
        Returns a list of pkgs.
        iids!The Group %s is already installedsDisk error: %sRNR.i(&R3R�RUR�RktERROR_PACKAGE_ALREADY_INSTALLEDR.RR�RNR�R�R(RQR�R:RRRSRZR�R.R�R6RjRlRmRJtinstallR�R�R�R�R\RxRUR	R[R�(R�R�RHR^R�RIR_R`R4RRaRDRbR�R�RcRT((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_depends_on_not_installed�s�

	 #

# 

cCs�y|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�|j
t�t|�}t|kr�|r�|j|||�}|j|�|j�}|j|�|jd�dSd}dt|�}	g}
g}g}x�|D]�}
|j|�|j|
�}|r]|j|�}|j|�n�y|j|
�\}}WnXtk
r�}|jtkr�|jd|j�qn|j|j|jdt�dSX|r�|j|�n|jtd|
�P||	7}qW|r |j|�n|j||�}
t|
�}
|rT|
j|�nx@|
D]8}|j|�r�|j |g�q[|j|g�q[W|j�}|j|�|jd�dS(s=
        Print a list of depends for a given package
        R�RNiidR2sPackage %s was not found(!R�RJRjRkRlRmRKRR�R�R�R�R�R�RWR�RR�R�R�R�R3RUR�R�R6R�R�R�RyR	R�R�(R�R�RHR^RDR�R�R�R�RIR_R`tgrp_pkgsR4RR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
depends_onLsl









cCs�t}y%|jjj|j�}|j}Wn�tjjk
r[}t	t
t|���n\tj
k
r�}t	tdt|���n.tk
r�}t	tttj����nX|S(sK
        Finds out if the repo that contains the package is signed
        sDisk error: %s(RKRR�R9R:tgpgcheckR�R�R�RjR�R(RNR�R�RQR�R:RRRS(R�R�tsignedRLRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_is_package_repo_signed�s
cCs�t|jd�rN|}||j_x&|jjj�D]}||_q8Wnx{dD]s}t|jj|�r�t|jj||�nx<|jjj�D](}t||�r�t|||�q�q�WqUWdS(Nt_override_sigchecksR�t
repo_gpgchecktlocalpkg_gpgcheck(sgpgcheckR�R�(thasattrRR�R�tlistEnabledR�tsetattr(R�tonly_trustedtoverride_sigchecksRLtattrname((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_set_only_trusted�s
cCs4y|j�Wn0tk
r@}|j|j|jdt�dSX|jt�|jd�|j	t
�|js�|jtddt�dSd}y�t
|jjj��dkr�|jd�dSdt
|jjj��d}x�|jjj�D]�}|j|j|jt�|jr$q�nd|_|jjjd|jgd	d
dd�||7}|j|�|jjjd|jgd	d
dd�||7}|j|�q�W|jd�y|jj�Wnvtjjk
r�}n^tjk
r}|jtdt|��n/tk
rE}|jt t!t"j#���nX|jd�Wn�tjj$k
r�}t%|j&�}|j'd�dkr�|jt(|dt�q0|jt)|dt�nntjj*k
r�}|jt+dt|��n<tk
r"}|jt t!t"j#���nX|j,j-�dS(s;
        Implement the refresh_cache functionality
        RNis!cannot refresh cache when offlineidi_itwhichtmdtypetmetadatat	cacheonlyiRsDisk error: %ssNo more mirrors to tryi����scannot refresh cache: %s(.R�RjRkRlRmRKR�RJR�R�tSTATUS_REFRESH_CACHEthas_networktERROR_NO_NETWORKR3RR�R�trepo_detailR�R�tmediaidtmetadata_expireR�tdoGroupSetupR�R�R
RNR�R�R(RQR�R:RRRSR�RUR�R?RFRoR
t
ERROR_UNKNOWNRtrefresh(R�tforceRDRRIRLR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRx�s`


	
 		(

(

  c
Csvy|jdt�Wn0tk
rF}|j|j|jdt�dSX|jt�|jd�y|j
jdddd�Wn^tj
k
r�}|jtdt|��n/tk
r�}|jtttj���nXd|j
j_|jt�t|�}g}x�|D]�}t|kr�y|j
jjd|�}Wn^tj
k
rt}|jtdt|��q�tk
r�}|jtttj���q�X|j|�nt|kry|j
jj d|�}Wn�t!j"j#k
r�}q�t!j"j$k
r/}|jt%d	t|�dt�dStj
k
r^}|jtdt|��q�tk
r�}|jtttj���q�X|j&|�qqWx�|D]�}|dd
kr�|j'j(�}	x�|	D]z}
|
|dkr�t!j)j*�}|d|_+d|_,d|_-d|_.d
|_/d|_0y|j
j'j1|
�}Wn�t!j"j$k
r�}tt%dt|���n�t!j"j2k
r�}tt3d|t|�f��n\tj
k
r�}ttdt|���n.tk
r}ttttj����nX|j+|_4|j5r;|j|g�qN|j&|g�q�q�Wq�q�W|j6�}|j7|�dS(s5
        Implement the resolve functionality
        R�RNR�iR�sDisk error: %sR�s+failed to return newest by package sack: %sRiR)R*RSs#failed to get groups from comps: %ssfailed to find group '%s': %s(8R�RJRjRkRlRmRKR�R�R�RR�RNR�R�R(RQR�R:RRRSR�R�R�R�R�RR�R�R�RR�treturnNewestByNameR�R�tPackageSackErrorR�R�R�RR�tpackagest
PackageObjectR�R,R-R�R+RLR	R
RR�R�R�R�(
R�R�R�RDR�R�R�R�R4R�R�R�R((s//usr/share/PackageKit/helpers/yum/yumBackend.pytresolves�

 

   


					"	cCs�y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t�|j
d�|jt�g}|j
t|kp�t|k�x�|D]�}|j|�}|r�|jr�|jtd|jdt�dSyX|jj|j�|jj|j�}|s?|jtd|jt|�f�nWn^tjk
rr}|jtdt|��n/tk
r�}|jtttj ���nX|j!|�q�y|j"|�\}}	Wn0tk
r�}|j|j|jdt#�dSX|r/|	r/|jj$d|�}|j!|�n|	r�|jtd|j%dt�dSq�W|rpx�|D]�}
|
j&}|
j'|j(kr�qgny|j)|�}Wn0tk
r�}|j|j|jdt�dSX|r�qgnt|kr|jt*d	|j%|j+fdt�dS|j,|t-�qgWy|j.|�Wq�tk
rl}|j|j|jdt�q�Xn|jt/d
dt�dS(s>
        Implement the install-packages functionality
        RNis"This Group %s is already installeds.No packages were found in the %s group for %s.sDisk error: %sR.s#The package %s is already installeds:The package %s will not be installed from unsigned repo %ss&The packages are already all installed(0R�RjRkRlRmRKRR�R�R�R�R�tSTATUS_RUNNINGR�tTRANSACTION_FLAG_ONLY_TRUSTEDtTRANSACTION_FLAG_SIMULATERUR�R�R.R�R�RR6RNR�R�R(RQR�R:RRRSR�R6RJR�R�R.toutput_stateR�R�t"ERROR_CANNOT_INSTALL_REPO_UNSIGNEDR:R�tINFO_UNTRUSTEDt_runYumTransactiont$ERROR_ALL_PACKAGES_ALREADY_INSTALLED(R�ttransaction_flagsRHRDRaR4RRbR�R�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytinstall_packages`sv



	* 

	&#cCs�d}y|jjjd|j�}Wn�tjjk
r>nvtjjk
rV}n^t	j
k
r�}|jtdt
|��n/tk
r�}|jtttj���nX|r�|d}|j|jkr�|jdd|j�q�ndS(NR�sDisk error: %sitNEWER_PACKAGE_EXISTSs*A newer version of %s is available online.(R�RR�R�R�R�R�R�R�RNR�RkR�R(RQR�R:RRRSRlR�(R�R.R�RDtnewest((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_checkForNewer�s 
c
Cs�x7|D]/}|jd�r|jtddt�dSqWy|j�Wn0tk
rz}|j|j|jdt�dSXd|jj	_
|jt�|jd�|j
t�t|�dkr�|jtddt�dSx>|D]6}tjj|�s�|jtd|dt�dSq�Wtj�}x=|D]5}|jd�rLq1q1|jtd	dt�dSq1W|jt|kp�t|k�x�|D]�}y%td
|jjj�d|�}Wn�tjjk
r�|jtd|dt�dSt j!k
r}|jt"d
t#|��n/t$k
rL}|jt%t&t'j(���nXy|jj)|gd�Wq�tjj+k
r�}t|kr�|jt,t#|�dt�dS|j-|t.�q�t j!k
r�}|jt"d
t#|��q�t$k
r}|jt%t&t'j(���q�Xq�Wx!|D]}|j/|�s'dSq'Wg}ySx�|D]�}y|jj0|�}Wn^t j!k
r�}|jt"d
t#|��n/t$k
r�}|jt%t&t'j(���nX|r�|j1|�|j2|dj3�qT|jt4dt#|��qTWt|jj5�dkrX|jt4ddj6|�dt�dSy|j7|�Wn0tk
r�}|j|j|jdt�dSXWntjj8k
r�}|jt4t#|��n�tjj9tjj:t!fk
r�y`x$|jj;j<�D]}	|	j=�qWx2|D]*}y|jj0|�}Wn^t j!k
ro}|jt"d
t#|��n/t$k
r�}|jt%t&t'j(���nX|r7|j1|�t|jj5�dkrK|jj5j>s�t?�|jj5_>ny|j7|�Wq4tk
r0}|j|j|jdt�dSXqKq!|jt4d|�q!WWq�tjj8k
r�}|jt4t#|��q�t$k
r�}|jt%t&t'j(���q�XnXt@jA|�dS(s�
        Implement the install-files functionality
        Install the package containing the inst_file file
        Needed to be implemented in a sub class
        s.src.rpms'Backend will not install a src rpm fileRNisno files specified to installs%s could not be founds.rpms&Only rpm files and packs are supportedttstfilenames)%s does not appear to be a valid package.sDisk error: %ss"Can't install %s as no transactionsCan't install %ss or (BRIRkt#ERROR_CANNOT_INSTALL_SOURCE_PACKAGERKR�RjRlRmRR�R�R�R�R�R�R3tERROR_FILE_NOT_FOUNDR�R<R>ttempfiletmkdtemptERROR_INVALID_PACKAGE_FILER�R�R�R
R�t
readOnlyTSR�R�t	MiscErrorRNR�R�R(RQR�R:RRRSt_checkSignaturesR�tYumGPGCheckErrortERROR_MISSING_GPG_SIGNATURER�R�t_check_local_filetinstallLocalR�R�R.tERROR_LOCAL_INSTALL_FAILEDRZR7R�tInstallErrorR�R�R�R�tdisableR�Rtshutiltrmtree(
R�R�t
inst_filest	inst_fileRDttempdirR.RaRbRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
install_files�s�






% $

 
#	"
 
$cCs�d}y%td|jjj�d|�}Wn�tjjk
r_|jt	d|dt
�t
Stjk
r�}|jt
dt|��t
Stk
r�}|jtttj���t
SXtjj�}|j|kr|jtd||j|fdt
�t
S|j|�r:|jtdt|�dt
�t
St|jjj�dkr�t|g|jjjd	d
�\}}}|||kr�|jtd|dt
�t
Snt S(
s�
        Duplicates some of the checks that yumbase.installLocal would
        do, so we can get decent error reporting.
        R�R�s)%s does not appear to be a valid package.RsDisk error: %ssGPackage %s has incompatible architecture %s. Valid architectures are %ss#The package %s is already installedit	casematchis4Installation of %s is excluded by yum configuration.N(!R�R
RR�R�R�R�R�RkR�RKRNR�R�R(RQR�R:RRRSRjR�tgetArchListtERROR_INCOMPATIBLE_ARCHITECTURERhR�RPR3R�texcludeRtERROR_PACKAGE_INSTALL_BLOCKEDRJ(R�R�R.RDtsuitable_archst
exactmatchtmatchedt	unmatched((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�?s2%& *cCs�y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t�|j
d�|jt�|j
t|kp�t|k�g}yOxH|D]@}y|j|�\}}Wnetk
r,}|jtkr|jd|j�|j|�q�n|j|j|jdt�dSX|r�y|jjd|�}Wn^tjk
r~}|jtdt|��n/tk
r�}|jtttj���nX|s�|jddt|�|f�q�|j |�q�q�WWnct!j"j#k
r"}|jt$t|�dt�natk
rP}|jtttj���n3X|rmx�|D]�}	|	j%|j&kr|q^n|	j'}y|j(|�}
Wn0tk
r�}|j|j|jdt�dSX|
r�q^nt|kr
|jt)d|j*|j+fdt�dS|j,|t-�q^Wy|j.|d	t�Wq�tk
ri}|j|j|jdt�q�Xn|jt/d
dt�dS(sj
        Implement the install functionality
        This will only work with yum 3.2.4 or higher
        RNiR2R.sDisk error: %ss'could not add package update for %s: %ss8The package %s will not be updated from unsigned repo %stallow_skip_brokensNo updates available(0R�RjRkRlRmRKRR�R�R�R�R�R�R�R�R�R6R�R�R[RJtupdateRNR�R�R(RQR�R:RRRSR6R�R�R�R�R�R�R�R.R�t!ERROR_CANNOT_UPDATE_REPO_UNSIGNEDR�R:R�R�R�tERROR_NO_PACKAGES_TO_UPDATE(R�R�RHRDRaR4R�R�RbR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytupdate_packagesesr




 # 
	&#cCs�|j}x|jjD]q}|j}|j|j|j|jf�}|r|j�j	d�r|dr|j
t|j|��qqWdS(Ntreboot_suggested(
tupdateMetadataRRZR.t
get_noticeR�R,R-tget_metadataR�trequire_restarttRESTART_SYSTEMRC(R�tmdRbR�tnotice((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_check_for_reboot�s		!%cCs=d}yCd|jj_t|jj_|jj�\}}t|�}Wn�tj	j
k
ry}ttt
|���n�tj	jk
r�}ttt
|���n\tjk
r�}ttdt
|���n.tk
r}ttttj����nX|r�|dkr�y<d|jj_|jj�\}}|dt|�7}Wq�tj	j
k
r�}ttt
|���q�tjk
r�}ttdt
|���q�tk
r�}ttttj����q�Xn|j�|tkr(t|jj�dkr(d}tt|��q(n|dkr�|jd�d	kr[tt|��n|jd
�d	kr�tt|��ntt|��nt|kr#g}	xO|jjD]A}
|
j t!j"�kr�t!|
j }|	j#|
j$|f�q�q�W|j%d�|j&|	�|j%d�d
St'|kr�x�|jjD]|}
|
j t(kr<y-|j)|
j$t*�|jj+|
j$g�Wq�tk
r�}|j,t-dt
|�dt�d
SXq<q<W|j%d�d
S|j.}y5t/|�}
t0|�}|jj1d|d|
�Wntj	j2k
r>}tt-t|j3���n�tj	j4k
rn}tt5t|j3���n�t6k
rL}|jj7}|s�tt5d��n|j8|d�}|d�}dt|�t9t:t;|��}|j<||dj=|dj>dd�|d|d|t?j@|d�d�ttAd|d��n�tj	jBk
r�}t|j3�}|jd�d	kr�ttC|��n|jd�d	kr�ttD|��q,tt|��n\tjk
r�}ttdt
|���n.tk
r+}ttttj����nX|jjE�d
S(s^
        Run the yum Transaction
        This will only work with yum 3.2.4 or higher
        R)isDisk error: %sis : %ss<package could not be removed, as other packages depend on itisis needed byi����sempty transactioniZidNsCannot download packages: %sRtcallbackt
rpmDisplays7GPG key not imported, and no GPG information was found.R.tfingerprints%02xtkeyurlsfile://tuseridthexkeyidt	timestamptgpgsGPG key %s requiredsconflicts with filesrpm_check_debug vs depsolve(FRR�tskip_brokenRKR�t
auto_closeR\RUR�R�R�RjR�R(R�tERROR_PACKAGE_DATABASE_CHANGEDRNR�R�RQR�R:RRRSR�R3RZRxR?R�tERROR_TRANSACTION_ERRORR�R�tTransactionsInfoMapRwR�R.R�R�tTRANSACTION_FLAG_ONLY_DOWNLOADtTS_INSTALL_STATESR�R8tdownloadPkgsRkR?tuidtPackageKitCallbacktProcessTransPackageKitCallbacktprocessTransactiontYumDownloadErrorR�R�tERROR_BAD_GPG_SIGNATURERt
missingGPGKeyRCR@tmaptordtrepo_signature_requiredR:R"R�tctimetERROR_GPG_FAILURER
tERROR_FILE_CONFLICTStERROR_PACKAGE_CONFLICTStverifyTransaction(R�R�tallow_remove_depsR�R�RcRTRDtretmsgR�Rbtinfot_cached_getloginuidR�R�tyetkeyDataR4R�thex_fingerprint((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s�"




 
	
#	
cCs*y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t�|j
d�|jt�|r�|j
dd�ng}x�|D]�}|j|�}|re|js�|jtd|j�ny|jj|j�}	Wn^tjk
r&}|jtdt|��n/tk
rT}|jtttj���nX|j|	�q�y|j|�\}
}Wn0tk
r�}|j|j|jdt�dSX|
rG|rGy|jjd|
�}	Wn^tjk
r}|jtdt|��n/tk
r6}|jtttj���nX|j|	�n|
r�|r�|jtd	|
j �q�q�W|ry|jj!�\}}
Wn�t"j#j$k
r�}|jt%t|��n^tjk
r�}|jtdt|��n/tk
r}|jtttj���nX|d
krE|jt&t'|
��nSxP|jj(D]B}	|	j)}
|
j |j*krR|jt+d|
j dt�dSqRWy3|s�|j,|dt�n|j,|dt�Wq&tk
r�}|j|j|jdt�q&Xn&d
t-|�}|jt|dt�dS(sd
        Implement the remove functionality
        Needed to be implemented in a sub class
        RNitPARAMETER_INVALIDs+the yum backend does not support autoremovesThis Group %s is not installedsDisk error: %sR.sThe package %s is not installedisWThe package %s is essential to correct operation and cannot be removed using this tool.Rs/The following packages failed to be removed: %s(.R�RjRkRlRmRKRR�R�R�R�R�R�R�RUR�RXR.RYRNR�R�R(RQR�R:RRRSR�R6RJR[R�R\R�R�R�R�RxRURZR.Rqt"ERROR_CANNOT_REMOVE_SYSTEM_PACKAGER�RP(R�R�RHtallowdept
autoremoveRDRaR4RRbR�R�RcRTR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytremove_packages/	s~



	  
 	#cCsC|jj|�}|jjjj|�r;|jjj|SdSdS(N(Rtget_categoryRt_categoriesR�R�(R�R.R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
_get_category|	sc	Cs�y|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�|j
t�xz|D]r}|j|�}|rOd|j}|j|j�}|j|j�}|jdd�}|jdd	�}t}|j|�}d}	x|D]}
|	|
j}	qW|j||d
||d
|	�q�y|j|�\}
}WnXtk
r�}|jtkr�|jd|j�q�n|j|j|jdt�dSX|
r�|j|
�q�|jddt|��q�q�WdS(
s>
        Print a detailed details for a given package
        R�RNis	%s;;;metas

R1s
RXR)R2sPackage %s was not found(R�RJRjRkRlRmRKRR�R�R�R�R�R�RWRUR.RR�R/R"RR�tsizeR6R�R�t_show_details_pkgR6(R�RHRDR4RR�R�R�R�RR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_details�	sF





"cCs+y|jdt�Wn0tk
rF}|j|j|jdt�dSXd|jj_	|j
t�|jd�|j
t�x�|D]�}y%td|jjj�d|�}WnXtk
r	}|jtkr�|jd|j�q�n|j|j|jdt�dSX|r�|j|t�q�q�WdS(s;
        Print a detailed details for a given file
        R�RNiR�R�R2(R�RJRjRkRlRmRKRR�R�R�R�R�R�RWR
R�R�R�R�R(R�RDRDtfR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_details_local�	s(



%c
Cst|�}|j|j||j|j�}t|j�}t|j�}t|j�}t|j	�}|r�|j
dd�}|j
dd�}nd}|j}	|r�|jjj
d�r�|j�r�d}	n|jj|j�}
|j||||
|||	�dS(Ns
R1s	RXR)R�i(R0tget_package_idR�R�RLR(R�R�R�tlicenseR"RR�R�tverifyLocalPkgRt	get_groupRm(R�R�tverify_localtpkgverR4R�R�R�RRR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�	s!	(	cCs6y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�|jd�|j
t�x�|D]�}y|j|�\}}Wn0tk
r�}|j|j|jdt
�dSX|r|jd�}|j|j��dj|�}|j||�q~|jtd|�q~WdS(NRitdirR1sPackage %s was not found(R�RjRkRlRmRKRR�R�R�RJR�R�R�RWR6treturnFileEntriesR�R7RDR�(R�RHRDR4R�R�RDt	file_list((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt	get_files�	s*



cCs�t|�}t|jd�r-|jj}n	|j}|jd�rNd}n|dkr�|jjd�}|r�d|}q�n|j|j||j	|�}|S(NR�t/RPR�R�s
installed:(
R0R�RLR�R�R�RpRR�R�(R�R�RRLtrepo_tmpR4((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRC�	s		cCs)|j|�}|j|||j�dS(s  Show info about packageN(RCR�R�(R�R�R�R4((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�	
sc
Cs�y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�|jd�|j
t�tjjd�s�dStj�}|jd�d}d}xh|j�D]Z}|j|d�r�|j|d�r�|j|d�}||kr|}|}qq�q�W|s6|jtd�nyt|jjjd�}Wn/tk
r�}|jtttj���nX||kr�dS|j d	�}d
|dj!�|df}	|j"t#|	|�dS(sA
        Implement the get-distro-upgrades functionality
        RNis#/usr/share/preupgrade/releases.listtstableR,s could not get latest distro datat
releaseverRXs%s-%si($R�RjRkRlRmRKRR�R�R�RJR�R�R�R�R�R<R>RnRZtsectionst
has_optiont
getbooleantgetfloattERROR_FAILED_CONFIG_PARSINGtfloattyumvarRQR�R:RRRSR2tlowertdistro_upgradetDISTRO_UPGRADE_STABLE(
R�RDR�R�tlast_versiontsectionR,tpresent_versionttokR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_distro_upgrades
s@



$ cCsf|d}|dkrtS|dkr*tS|dkr:tS|dkrJtS|jdd|�tSdS(Nttypetsecuritytbugfixtenhancementt
newpackageR�s2status unrecognised, please report in bugzilla: %s(t
INFO_SECURITYtINFO_BUGFIXtINFO_ENHANCEMENTR�tINFO_NORMAL(R�R�tut((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_status@
s
cCsGt|krt|_ny|j�Wn0tk
rX}|j|j|jdt�dSXd|jj	_
|jt�|j
d�|jt�d|j_d|j_g}t|�}g}yN|jjdd�}|j|j�|jjdd�}|j|j�Wn�tjjk
r>}|jtt|��n^tjk
rm}|jtdt|��n/t k
r�}|jt!t"t#j$���nXi}x.|jjj%�D]\}}	|	||	d<q�W|j&}
xKt'|�D]=}|j(|�r�y|j)�}Wn�tjjk
r?}|jtt|��n^tjk
rn}|jtdt|��n/t k
r�}|jt!t"t#j$���nXt*}
|j+|j,�r||j,}|
j-|�}|rx6|D]+\}}|j.|�}
|
t/kr�Pq�q�Wqn|j0||
�q�q�W|j1�}|j2|�dS(sg
        Implement the get-updates functionality
        @param filters: package types to show
        RNiR�tupdatest	obsoletessDisk error: %s(3tFILTER_DOWNLOADEDRKR�R�RjRkRlRmRR�R�R�RJR�R�R�RWtupR�R�R�R�R@RAR�R�R�R�R(RNR�R�RQR�R:RRRStgetUpdatesTuplesR�R	t_filter_basetreturnChangelogR=R�R�tget_applicable_noticesR?R:t
add_customR�R�(R�R�RDR�R�R�R�tinstalled_dicttpkgtup_updatedtpkgtup_installedR�R�t	changelogR�R7tnoticesR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_updatesN
sj


 	 
cCsyy|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�y||jjj|�}|s�|j
�r�|j�q�|jtd�dSn-|j
�s�|j�n|jtd�dSWn�tjjk
r
}|jtt|��n^tjk
r9}|jtdt|��n/tk
rg}|jtttj���nX|jj�dS(s9
        Implement the repo-enable functionality
        RNisrepo already disabledsrepo already enabledsDisk error: %s( R�RjRkRlRmRKRR�R�R�RWR�R9R�tdisablePersistenttERROR_REPO_ALREADY_SETtenablePersistentR�R�R�R�R(RNR�R�RQR�R:RRRSRR�(R�R:tenableRDRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pytrepo_enable�
s2


 cCs2y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�y|jjjj�}Wn`t
jk
r�}|jtdt|��dStk
r�}|jtttj���dSXxR|D]J}t|kst|j�r�|j�}|j|j|j|�q�q�WdS(s;
        Implement the get-repo-list functionality
        RNisDisk error: %s(R�RjRkRlRmRKRR�R�R�RWR�R�RNR�R�R(RQR�R:RRRStFILTER_NOT_DEVELOPMENTRMR�R�R�R�(R�R�RDR�RLtenabled((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
get_repo_list�
s&

cCs�yy|jjj�|jjjdd�}xJ|D]B\}}|d|kr2|jjj|�d}|j|�Sq2WWnBtjk
r�}|j	t
dt|��ntk
r�}nXdS(NR�iisDisk error: %sR)(
RRCtdoObsoletestgetObsoletesTuplesR�tsearchPkgTupleRCRNR�RkR�R(RQ(R�R�RAt
obsoletingR�R�RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_obsoleted�
scCs�y(|jjjd|jd|j�}Wn^tjk
rZ}|jtdt	|��n/t
k
r�}|jttt
j���nX|r�|j|d�SdSdS(NR�R�sDisk error: %siR)(RR�R�R�R�RNR�RkR�R(RQR�R:RRRSRC(R�R�R�RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_updated�
s( cCs�|js�t�|_xv|jjj�D]_}y|jj|�Wq(tjk
rt}|jt	dt
|��q(tk
r�}q(Xq(Wn|jS(NsDisk error: %s(t_updateMetadataRRR�R�taddRNR�RkR�R(RQ(R�RLRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_update_metadata�
s	tfgetcCsZ|j}|j|j|j|jf�}igd6gd6gd6}|r=|d}|rp|jdd�}n|dr�|djd�d	kr�|d
r�|jjj	d}d||d
f}d
|d|d
f}|dj
d||f�q�n|d}	|	r�x�|	D]�}
|
d}|
d}|
dp;d}|jdd�}|r|dkr�||j
d||f�q�|dj
d||f�qqWnd}|dp�d}
|dp�d}|dp�d}||kr�d}n|j�jd�r|drd}nd}t
|�||||
||fSd|dddddfSdS(NtbugzillatcvetvendorR�s	RXtfromsupdates@fedoraproject.orgi����t	update_idR%s.https://admin.fedoraproject.org/updates/F%s/%ss%s Update %sR-s%s;%st
referencesR5threfttitleR)R1s, R�tissuedtupdatedR�tsystemtnone(RaRb(R�R�R�R,R-R"R?RR�R,R�R�R�R:(R�R�R�R�turlsR�R%RgRhtrefstrefttypRLtstateRiRjtreboot((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_update_extrassF	!
#
!



%		cCs�y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�|jd�|j
t�x=|D]5}y|j|�\}}WnXtk
r�}|jtkr�|jd|j�q~n|j|j|jdt
�dSX|dkr$|jddt|��q~n|j|�}|j|j�}|j|�\}}	}
}}}
}|
jdd�}
|jdd�}t|�dkrUd}y|jjjd|j�}Wn^tjk
r�}|jtd	t|��n/tk
r$}|jt t!t"j#���nXt|�d
krD|d}ny|j$�}Wn�t%j&j'k
r�}|jt(t|��n^tjk
r�}|jtd	t|��n/tk
r�}|jt t!t"j#���nXxo|D]d}t|�dkr|dt)|�7}q�nt|d
�}|j*dd
�}|r�d}yt+|d
�}Wntk
rs}nX|dkr�|d|7}nt,j-j.|j/|j0|j1j2d�df|�}|dkr�Pq�nt3j4|d�}d|d|d
|df}t|djdd��}|t!d|d|d|d�7}q�Wnt5|	d�}t5|	d�}t5|	d�}|j6|||||||
||||
|�q~WdS(s?
        Implement the get-update_detail functionality
        RNiR2scould not find %sRXtTR�sDisk error: %siis(;*Could not parse change element:* '%s';R*sh;*Could not parse header:* '%s', *expected*: 'Firstname Lastname <email@account.com> - version-release';t.s%i-%02i-%02iis	s**s** s
s

RbRaRc(R*R*R*(R*R*R*(7R�RjRkRlRmRKRR�R�R�RJR�R�R�RWR6R�R�R6R\R[R�RsR"R3R�R�RNR�R�R(RQR�R:RRRSRFR�R�R�R�RPtrsplitRERjt	miscutilst
compareEVRR+R,R-R2R�tgmtimeR<t
update_detail(R�RHRDR4R�R�R�tobsoleteR�RmRrRLRqRiRjtinstpkgtinstpkgstchangestchangetheaderR,tevrRcRyttime_strtbodytcve_urltbz_urlt
vendor_url((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_update_detail4s�



$ 
 
4/cCs�y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_y|jj	j
|�}Wn�tjj
k
r�}|jtd|dt�n�tjk
r�}|jtdt|��n�tk
r�}|jtttj���n�X|s |jtd|dt�dS|jj|||�y |jjt|jd��Wn)tk
r�}|jtt|��nXdS(s;
        Implement the repo-set-data functionality
        RNis!repo '%s' cannot be found in listsDisk error: %ssrepo %s not foundtw(R�RjRkRlRmRKRR�R�R�R9R�R�R�R�RNR�R�R(RQR�R:RRRStcfgtsettwritetfiletrepofiletERROR_CANNOT_WRITE_REPO_CONFIG(R�R:t	parameterR�RDRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
repo_set_data�s,  c	Cs�y|j�Wn0tk
r@}|j|j|jdt�dSXd|jj_|j	t
�|jd�|j
t�|jd�r�|jd�d}|jjj|�}|r�y3|jjjd|�|jj|dd��Wq�tjjk
r}|jtd	t|��q�tjk
rK}|jtd
t|��q�tk
r}}|jtd|t|�f�q�Xq�ny|j |�\}}Wn0tk
r�}|j|j|jdt
�dSX|r�y|jj!|dd
��Wq�tjjk
r(}|jtd	t|��q�tjk
rW}|jtd
t|��q�tk
r�}|jt"t#t$j%���q�|jtd|�q�XndS(NRis;;;R1i����tthisrepoR�cSstS(N(RJ(tx((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt<lambda>�sscannot install signature: %ssDisk error: %ss1Error importing GPG Key for the %s repository: %staskcbcSstS(N(RJ(R�tytz((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��ssError importing GPG Key for %s(&R�RjRkRlRmRKRR�R�R�RJR�R�R�RWR�R2R�R9tdoSetupt
getKeyForRepoR�R�R
R�RPRNR�R�R(RQRR6tgetKeyForPackageR�R:RRRS(	R�tsigtypetkey_idR4RDR:RLR�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytinstall_signature�sL


*cCs|jt�d
|j_t|jj_|jsid|jj_	x&|jj
j�D]}d|_qSWn|j
dkr�d|_
nx5|jj
j�D]!}|jr�q�n|j
|_q�Wx�|jj
j�D]�}yb|js�|jnK|jj|j�}|s6|jj
j|j�|jdd|j�nWq�tjk
ri}|jtdt|��q�tjjk
r�}|jj
j|j�|jdd	|j�q�Xq�Wtjjd
|jjj�}|r�|r�tt d��nd|jj_!t"|jj_#d
S(sJust does the caching tweaksii����ii<itREPO_METADATA_DOWNLOAD_FAILEDs;Could not contact media source '%s', so it will be disabledsDisk error: %ss5Could not contact source '%s', so it will be disabledt
yumlibpathsYThere are unfinished transactions remaining. Please run yum-complete-transaction as root.s90%Nii�Q($R�RJR�Rt_tsInfoR�R�R�R�R�R�R�R�t	cache_ageR�trepoXMLt_media_find_roottdisableRepoR�R�RNR�RkR�R(R�R�R�tmisctfind_unfinished_transactionst
persistdirRjtERROR_FAILED_INITIALIZATIONtthrottleRKtasync(R�R�RLtrootRDt
unfinished((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s@
			
	
cCs}y|jjdddd�Wn.tk
rM}ttttj����nXt|dt	�|_
|jjj|j
�dS(NR�i����R�t	showNames(
RR�RQRjR�R:RRRStDownloadCallbackRJtdnlCallbackR�tsetProgressBar(R�RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�
sN(ORRRJRhRmR�R�RtR�R�R�R�R�R�R�R�R�R�R�R�RR�RRRRR"R+R'RRRUR6RdR�RhRKRqRuRyR�R�R�R�R�RxR�R�R�R�R�R�R�R�R�RRRRRR!RCR�R4R?RNRSRVR[R\R_R]tpropertyR�RsR�R�R�R�R�(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR`�s�?			
	!				'				
		4	7	&			R	.	0		5	9	$	W		J	O	
	
@	 	,	&	X	O			F	Z	H		�	&	E	
{	M		,					2		L	#					4	Z		*8R�cBsneZdZed�Zd�Zd�Zd
d�Zd
d�Z	d
d�Z
d
d�Zd�Zd	�Z
RS(s; Customized version of urlgrabber.progress.BaseMeter class cCs>tj|�||_d|_d|_d|_d|_dS(Ni(RRhtbaset
percent_startR�t
saved_pkgstnumber_packagestdownload_package_number(R�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRhs
				cCs.||_tt|j��|_||_dS(N(R�R+R3R�R�(R�tnew_pkgsR�tpercent_length((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsetPackages!s	cCsn|s
dS|jsdS|jdd�}t|�dkr?dSx(|jD]}|d|jkrI|SqIWdS(NR>iii(R�R�RvR3R�(R�R�R&R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_getPackage&s	cCstj|||�dS(N(RR�(R�tamount_readtnow((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�AscCs0|j�}|sdS|j|ddd�dS(NgR)(t_getNametupdateProgress(R�R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt	_do_startDscCs�t|�}|j�}|jdkrU|jj�}d}|j|||d�n4|jj�}|jj�}|j|||d�dS(NgR)(	RR�RR�tretelapsed_timeR�tremaining_timet
fraction_read(R�R�R�tfreadR�tetimetfractrtime((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt
_do_updateJscCs<t|�}|j�}|s"dS|j|d|d�dS(Ng�?R)(RR�R�(R�R�R�t
total_sizeR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_do_endYs
cCs|jS(s>
        Get the name of the package being downloaded
        (R=(R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�asc
Cs�t|d�}|dkr�|r�|j|�}|rM|jj|t�q�xAtj�D]0}||krZt|}|jj|�PqZqZWn|r�|j|�}|r�|jj|jj	|�t
|�q�n|dkr|r|j|�}|r|jj|t�qntt
}	tt
}
|jdkrx|
|	|j}|	||j|d|}|jj|�n|dkr�|jd7_ndS(s
         Update the progressbar (Overload in child class)
        @param name: filename
        @param frac: Progress fracment (0 -> 1)
        @param fread: formated string containing BytesRead
        @param ftime: formated string containing remaining or elapsed time
        idigY@iN(RR�R�R�R8tMetaDataMapRwR�t
item_progressRCR5t
INFO_FINISHEDtStatusPercentageMaptSTATUS_SIG_CHECKR�R�R�(
R�R�R�R�tftimetvalR�tkeyRpt	pct_starttpct_endtdivR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�gs4	
(

N(RRt__doc__RKRhR�R�R�R�R�R�R�R�R�(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�s			R�cBs,eZd�Zd�Zd�Zd�ZRS(cCs5tj|�||_d|_d|_d|_dS(Ni(RRhR�R�tcurpkgR�R�(R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh�s

			cCs�t|j�tjkrO|jj|jddd�}|jj||d�n�t|jjj	�}|j
d�dkr�d}nt|j�}|jj|jj||jj
|�}|jj|||jj�dS(NR)R"i����RP(R5R�ttypestStringTypesR�RR�R(RLR�R?R0R�R�R�(R�R�R4R�R((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt	_showName�s	'cCs6t|�t|j�kr�||_y)|jjt|�|jt|�Wq�tjk
r�}|jj	t
dt|��q�tjk
r�}|jj
dd|t|�f�q�Xn|r�|dkr�|d|}|jr�t|j�tjkr:|jj|jddd�}	|jj|	t||�q�t|jjj�}
|
jd�dkrmd	}
nt|j�}|jj|jj||jj|
�}	|jj|	t||�q�ntt}|dkr2|dkr2|d|}d
||}
|
|d||
d|}|jj|�ndS(
NsDisk error: %ss
backend-errors9The constant '%s' was unknown, please report. details: %sildR)R"i����RPidigY@(RPR�R�R�tTransactionsStateMapR�R�RNR�RkR�R(tKeyErrorR�R5R�R�RR�RLR�R?R0R�R�R�tSTATUS_INSTALLR�(R�R�tactiont
te_currenttte_totalt
ts_currenttts_totalRDR�R4R�RR�R�R((s//usr/share/PackageKit/helpers/yum/yumBackend.pytevent�s6	 *		' 
cCsdS(N((R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyterrorlog�s(RRRhR�R�R�(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s			&R�cBseZd�Zdd�ZRS(cCs
||_dS(N(R�(R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh�scCsG|tkrI|jjt�tt}|jj|�|jjt�n�|tkrq|jj	j
|dd�n�|tkr�tt}|jj|�|jjt�n�|t
kr�tt}|jjt�|jj|�|jjt�nP|tkr,tt}|jjt�|jj|�n|jjdd|�dS(Ni
is
backend-errorsunhandled transaction state: %s(tPT_DOWNLOADR�R�RJR�R5R�R�tPT_DOWNLOAD_PKGSR�R�tPT_GPGCHECKR�t
PT_TEST_TRANStSTATUS_TEST_COMMITRKtPT_TRANSACTIONR�R�(R�RqtdataR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s*



N(RRRhR�R�(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s	tDepSolveCallbackcBs,eZd�Zd�Zd�Zd�ZRS(cCst|_||_dS(N(RKtstartedtbackend(R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh�s	cCs:|js6|jjt�tt}|jj|�ndS(N(R�R�R�tSTATUS_DEP_RESOLVER�R�(R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytstart�s	
cOsdS(N((R�R�tkwargs((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_do_nothing
scCs|jS(N(R�(R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt__getattr__
s(RRRhR�R�R�(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��s			RicBsVeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
RS(	sg
    Subclass of YumBase.  Needed so we can overload _checkSignatures
    and nab the gpg sig data
    cCs�tjj|�t|d�r2|jjd�ntj�}y,|jd�|jdd�j	d�}WnGtj
k
r�}g}n,tk
r�}tt
dt|���nX|jd�y|j}||_Wn�tjjk
r}tt
t|���nVtjk
r5}ttd	t|���n(tk
r\}ttt|���nXtjjd
tdt�d|_t|�|_ ||_!|j"|_#t|_$yRt|d�r�|j%|j&_'|j(|j&_)n|j%|j*_'|j(|j*_)Wn�tjk
r/}ttd	t|���ngtk
r�}t+|�j,d
�dkrwtt-t.t/j0����q�tt1t.t/j0����nXdS(Ntrun_with_package_namessPackageKit-yums/etc/PackageKit/Yum.confRatDisabledPluginsR1sFailed to load Yum.conf: %ssrefresh-packagekitsDisk error: %st
override_timetoverride_codecstprerepoconfsrpmdb open failedi����(2R�tYumBaseRhR�R�R^RnRZRpR2RrRQRjRoR(R�tpreconftdisabled_pluginsR�tConfigErrorRNR�R�RAR*R�tsetup_localeRJRKR�R�R�t
dsCallbackR�tMediaGrabbertmediagrabbertuse_txmbr_in_callbackt_repo_gpg_confirmR�tconfirm_funct_repo_gpg_importtgpg_import_funcR�RPR?R�R:RRRSR�(R�R�R�R�RDtpc((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh
sN
	
	
			
c
Cs�tj�}|j�}x�|D]�}|j�j�}d|}tjj|�sYqnt|d�}|j	�}|j
�t|�dkr�qn|dj�}	t
|	|�dkr�qn|SWdS(s1 returns the root "/media/Fedora Extras" or None s%s/.discinfoRLiiN(tgiotvolume_monitor_gett
get_mountstget_roottget_pathR�R<R>RYt	readlinestcloseR3R[tcmpR�(
R�tmedia_idtvmtmountstmountR�tdiscinfoRR9tmedia_id_tmp((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�U
s"


c	Os�|j|d�}|r�td|d�}y@|jd||df|dd|dd|ddd	�Wq�ttfk
r�}q�Xn|s�d
|d|df}|jjt||�|jjt	d
|dt
�tjj
d�n|dS(s(
        Handle physical media.
        R�t	checkfuncs%s/%strelativeRPR8tranget
copy_localis
%s Volume #%sR�tdiscnums0Insert media labeled '%s' or disable media reposRsThe disc was not inserted(R�RturlgrabR�RR�tmedia_change_requiredtMEDIA_TYPE_DISCRktERROR_MEDIA_CHANGE_REQUIREDRKR�R�t
MediaError(R�R�R�R�tugRDR�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�w
s"
c
Cs�|s|jjtd�n|d}|d�}dt|�ttt|��}|jjd|j|j|dj	dd�|d	|d
|t
j|d�d�|jjtd
|d
�dS(s# Confirm Repo GPG signature import s7GPG key not imported, and no GPG information was found.RLR�s%02xs;;;%sR�sfile://R)R�R�R�R�sGPG key %s requiredN(
R�RkR�R3R@R�R�R�R�R"R�R�R(R�R	RLR�R
((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�
s


#cCs|j|d|�dS(s Repo GPG signature importerR�N(R�(R�RLtconfirm((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR�
scCspxi|D]a}|j|�\}}|dkr4qq|dkrY|j|d|j�qtjj|�qWdS(s/ The the signatures of the downloaded packages iit	fullaskcb(tsigCheckPkgR�t_fullAskForGPGKeyImportR�R�R�(R�R�R�R.tresultterrmsg((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR��
s
cCs||_t��dS(N(R�R(R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR"�
s	cCstS(s&
        Ask for GPGKeyImport
        (RK(R�R.R�R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_askForGPGKeyImport�
s(RRR�RhR�R�RRR�R"R%(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRi
s	D	"					cCs*tddt�}|jtjd�dS(NR)R�i(R`RJt
dispatcherRtargv(R�((s//usr/share/PackageKit/helpers/yum/yumBackend.pytmain�
st__main__(itpackagekit.backendtpackagekit.progresstpackagekit.enumstpackagekit.packageRR�turlgrabber.progressRRturlgrabber.grabberRRtyum.rpmtransRt
yum.constantst
yum.update_mdRt
yum.callbackstyum.miscRR	tyum.packagesR
Rtyum.packageSackRt
yum.ErrorsR
RjRNR�ReR�tos.pathR�tloggingRzRttarfileR�R�Rnt	yumFilterRvR�RtPackagekitProgresstprogresstSTATUS_DOWNLOAD_REPOSITORYtSTATUS_DOWNLOAD_PACKAGELISTtSTATUS_DOWNLOAD_FILELISTtSTATUS_DOWNLOAD_CHANGELOGtSTATUS_DOWNLOAD_GROUPtSTATUS_DOWNLOAD_UPDATEINFOR�R�R5R�R�R�tSTATUS_CLEANUPR�tTS_REPACKAGINGt
INFO_UPDATINGR�t
INFO_REMOVINGtTS_ERASEtINFO_INSTALLINGR�R�tINFO_OBSOLETINGtTS_OBSOLETEDR�tINFO_CLEANUPt
TS_UPDATEDR�t
STATUS_UPDATEt
STATUS_REMOVEtSTATUS_OBSOLETEtSTATUS_REPACKAGINGR�RQRR R(R0R6R:R<RERHRMRUR_RgR`R�R�R�tobjectR�R�RiR(R(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt<module>!s�






	



					
						�����������=�B�	

Youez - 2016 - github.com/yon3zu
LinuXploit