PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/share/yum-cli
Viewing File: /usr/share/yum-cli/yumcommands.pyc
� � v_c@s�dZddlZddlZddlZddlZddlmZddlmZmZddlm Z ddl Zddl Z ddl Z ddl 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(t LibLVMErrort 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.pyt checkRootUID8scCs�|jr dS|j�s�xw|jj�D]c}|jsA|jr)|j r)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_sigcheckst gpgKeyChecktrepost listEnabledtgpgcheckt repo_gpgchecktgpgkeyRRRRR(Rtrepotmsg((s!/usr/share/yum-cli/yumcommands.pyt checkGPGKeyBs   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|�dkrJdj g|D]}|j ^q��}|jjtd �||f�t||�tj�n|dj �s�|jj |dj�|jjtd �|dj �nd S( 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_matcht ignore_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.pyt checkItemArg�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 �d j|��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` theaderstpackagestmetadatatdbcachetpluginss expire-cachetrpmdbtallis#Error: clean requires an option: %ss, s!Error: invalid clean argument: %rN(R:spackagesR<R=R>s expire-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�}|j j |�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 �Z RS( 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.pyt doneCommands 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(s Verify 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(RXRt installPkgs(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-synchronizations distro-synct distupgrade((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&tnametarchtversiontreleaset ui_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&RptobsoletesTuplest calcColumns(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 t InfoCommandcBsGeZdZd�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 Packagest highlight_naR�thighlight_modest>t<tkernt=snot insAvailable PackagessExtra PackagessUpdated PackagesRrsObsoleting PackagestkeysRecently Added PackagesisNo matching Packages to listN(supdatess obsoletes(2Rtexclude_updatest exclude_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�t update_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 |dd kr dSt|�r@|dd kr@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 t ListCommandcBs 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 t EraseCommandcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(sSA class containing methods needed by the cli to execute the erase command. c Cs(ddddddddd d d d g 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 terasetremovet autoremoveserase-nserase-nas erase-nevras autoremove-ns autoremove-nasautoremove-nevrasremove-ns remove-nas remove-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.pyt needTsRemove�s ( RbRcRdRYR[R\R]R^R_R�(((s!/usr/share/yum-cli/yumcommands.pyR�#s    & t GroupsCommandcBs�eZdZidd6dd6dd6dd6dd 6d d 6Zd �Zd �Zd�Zd�Zd�Zd�Z d�Z d�Z d�Z d�Z RS(s; Single sub-command interface for most groups interaction. R�t grouplistRft groupinstallRit groupupdateR�t groupremovet 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(RXRt doRepoSetupt doGroupSetupRItErrorst GroupsErrort YumBaseError(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 6d d 6}|j||�}||fS(Niitsummarytmarktunmarks%s-%stupgradeRiR�R�s mark-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 t d�dj |��t j�n|jjdkr5n tjjtjj|jj��s�|j j t d��|j j t d��n�tjtjj|jj�tj�s�|j j t d��t j�n�tjj|jj�s|j j t d��|j j t d��n=tj|jjtj�sU|j j t d��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* tobjectss mark-installs mark-removesmark-blacklists mark-packagessmark-packages-forcesunmark-packagessmark-packages-syncsmark-packages-sync-forces mark-groupssmark-groups-forces unmark-groupssmark-groups-syncsmark-groups-sync-forces mark-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( s mark-installs mark-removesmark-blacklists mark-packagessmark-packages-forcesunmark-packagessmark-packages-syncsmark-packages-sync-forces mark-groupssmark-groups-forces unmark-groupssmark-groups-syncsmark-groups-sync-force(s mark-installs mark-removes mark-convertsmark-convert-whitelistsmark-convert-blacklistsmark-blacklists mark-packagessmark-packages-forcesunmark-packagessmark-packages-syncsmark-packages-sync-forces mark-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]} �j j | j| j�qWx]|D]U} t�} x-�jj| j�D]} | j| j�qcW�j j| j| �q>W�j j�d d d j|�gfS�d kr��j |dt �}|\}}}} xN|D]F}�jj|j�} | sq�nt�j _|jj| j �q�WxN|D]F}�jj!|j"�} | spqInt�j _|j#j| j�qIW�j j�d d d j|�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�j j�d dd j|d�gfS�dkrNx8�jj&d|�D]!} d| j'kr| j'`(qqWd dd j|�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 dd j|�gfSd dd j|�gfSn�d5kr~t$|�dkrdddgfS�j |d gdt �}|\}}}} |d2ks�t$|�dkr�dd gfS|d } �dk}�j |ddt �}x.|dD]"} |j j| j| j|�q�W|rSx-|d D]} | j| _)t�j _q.Wn�j j�d d!d j|d�gfS�d"kr�j |d gdt �}|\}}}} |d2kr�dd#gfSx#|D]} d2| _)t�j _q�W�j j�d d$d j|�gfS�d6kr4�j |dt �}|\}}}} |sddd gfS�d&k}xw|D]o} d jt*| j��}xN�j j+|�D]:} | r�| j)d2k r�q�n| j| _)t�j _q�WqwW�j j�|rd d'd j|�gfSd d(d j|�gfSn�d7kr� ��fd,�}x*�j j j,�D]}�j j-|�qeWx,�jD]!} d| j'kr�| j'`(q�q�W�jj.�jj/��d-tfd.t ff}xT|D]L\}}�jj!|�} | d2kr q�n|r( t| _0n|| �q�Wx6�jj1�D]%} | j|kra qF n|| �qF W�j j�d d/gfS�d0kr. �j |dt �}|\}}}} x!|D]} �j j2| j�q� Wx!|D]} �j j-| j"�q� W�j j�d d1d j|�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�s mark-installR,isMarked install: t,smark-blacklistsMarked upgrade blacklist: s mark-packagessmark-packages-forceiisNo group or package givensNo group matchedtpatternst group_membersMarked packages: sunmark-packagessUnMarked packages: smark-packages-syncsmark-packages-sync-forcesMarked packages-sync-force: sMarked packages-sync: s mark-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: s mark-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?t searchNamesR;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.s mark-removesMarked remove: N(s mark-packagessmark-packages-force(smark-packages-syncsmark-packages-sync-force(s mark-groupssmark-groups-force(smark-groups-syncsmark-groups-sync-force(s mark-convertsmark-convert-whitelistsmark-convert-blacklist(3RR�treturnGroupSummarytreturnGroupListsR.treturnGroupInfot installGroupsRRlt removeGroupst_groupReturnGroupsRQRtadd_environmentt environmentidt allgroupsR�R?RR;taddRwRRtsaveR0tcompstreturn_environmenttevgidtchangedt grp_namesRiR�t return_grouptgidRR&R�treturnPackagesR�Rt environmentR�t return_groupsR�t del_grouptcompilet simplePkgListR�t get_groupstdel_environment(RTRRR'RmtgRGtigrpstgrpstievgrpstevgrpstevgrpRRRtievgrptigrptforceR'RR)t special_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�|jj ddd d �n|jj dd d d �id d 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.xmlt prestodeltatcachedsMetadata Cache Created(RRCRRQR.Rtsorttmetadata_expiretmdpolicyR�tdoSetupt populateSackRtrepoXMLt 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    ;t CleanCommandcBsMeZdZd�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^�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^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 tprovidest whatprovides((RT((s!/usr/share/yum-cli/yumcommands.pyRY�scCsdS(sbReturn a usage string for this command. :return: a usage string for this command t SOME_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 s check-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 | d i| d 6|d6�d}nt|j�dkr�td�GHxBt|j dtjd��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�RRpR4t isEnabledForRtDEBUG_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 t localinstallt localupdate((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(RXRt localInstall(RTRRR'Rp((s!/usr/share/yum-cli/yumcommands.pyR^Ds 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 ( 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     t ShellCommandcBsDeZdZd�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 j j k r<|r��nxL�jj �D]7} y�jj| j�Wq�t j j k 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 | r q�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?|-|*|*��qI n|r� t?||,d:t�}n�jj;d;t?||)�t?|-|*|*�||�qI Wndd<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*t packagesizet 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_filtert includepkgstrepofileR5RRR�RR�R�(1RTRRR'R�R�R�targtverboseR#Rt enabled_repost on_ehibegt on_dhibegton_hiendttot_numtcolstehibegtdhibegthiendt ui_enabledt ui_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    � t HelpCommandcBsSeZdZd�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�t help_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]t staticmethodRR^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 |d f}|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-availables nogroups-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-availables nogroups-alls installedsallsgroup-installeds group-alls availablesallsgroup-availables group-all(R�snogroups-installedsnogroups-availables nogroups-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 �Z d �Z d �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.pyRYM scCsdS(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[U scCs 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�dd gfStj|j �} d |j | fGH|j |�|j ||�rUd d|j fgfSdS(Ntforce_reinstalltforce_changed_removalR�sforce-reinstallR�s force-removeiR�RiisFailed history redos!Repeating transaction %u, from %ssRepeating transaction %u( RQR&treplacetsplitR.t_history_get_transactionR�R�R�t beg_timestampttidthistoryInfoCmdPkgsAlteredt history_redo( RTRR'tkwargst kwargs_maptdoneR�R�toldttm((s!/usr/share/yum-cli/yumcommands.pyt _hcmd_redoc s2    &    cCs�|j|�}|dkr(ddgfStj|j�}d|j|fGH|j|�|j|�rdd|jfgfSdS(NisFailed history undosUndoing transaction %u, from %sisUndoing transaction %u(RR�R�R�RRRt history_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|j s|j r9|j rd}nd}||jGHd GHdd gfS|dkrZt jj|�}q�|j|�q�Wtj|j�} d |j| fGH|jd d 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 �}|jj d�d}t d�G|j GHt d�Gtj|j�GHt d�Gtj|j�GHt d �GHt d �Gtjd |d t�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-listtpackages package-listR;s packages-listspkg-infos pkgs-infos package-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-listRDs package-listspackagess packages-listspkg-infos pkgs-infos package-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-listRDs package-listR;s packages-listR<R;R:R>R=R@RARBt synchronizespkg-infos pkgs-infos package-infos packages-infos history %s(saddons addon-info(spkgspkgsspkg-lists pkgs-listspackages package-listspackagess packages-list(sredosrepeat(sstatss statistics(ssyncRE(spkg-infos pkgs-infos package-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.pyRa5 s   (RbRcRdRYR[R\RRR%R'R4R9R]R^R_Ra(((s!/usr/share/yum-cli/yumcommands.pyR H s    (     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 tchecks check-rpmdb((RT((s!/usr/share/yum-cli/yumcommands.pyRYJ scCsdS(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[R scCs 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\Y sc 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_outr siR�R�tchkcmdtheadercSsdS(N(R�(R\((s!/usr/share/yum-cli/yumcommands.pyR�w sis%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.pyRLE s     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�nXidd 6dd 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|d t�}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 |�}nt SWnt SXtS(Nsmbr:t:iR�R( R�R.RR�tintttupleRIt TS_INSTALLtgetInstalledPackageObjectt TS_AVAILABLEtgetPackageObjectRQ(tltpkgtupt current_stateR�(R(s!/usr/share/yum-cli/yumcommands.pyt _pkg_avail� s(cSse|jd�sdS|td�}|d krB|dcd7<n|d kra|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� s  is!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    { t SwapCommandcBs;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  c Csid|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} i dd6dd 6d d 6d d 6d 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�t j |�dt dd | �fSns|dkr�xI|D]A} |j d| d!td|�} || |�| t| �7} q:W| r�t j |�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-tos check-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�t onot_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|d krKt�j|||d�S|d krqt�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�is check-updates check-upgrades check-updatesscheck-upgradesR`(sinfoslist(s check-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 i dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6Z xe j D]Zee e<q�Wd�Zd �Zd!�Zd"�ZRS(#R�slist-updateinfos list-securityslist-secR5sinfo-updateinfos info-securitysinfo-secR�ssummary-updateinfocCsdgt|jj��S(NR(R�t direct_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  cCs i}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�||�ndSid d 6d d6dd 6dd 6}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 newpackagetbugfixt enhancements New PackagetSecuritytBugfixt EnhancementsUpdates 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�t newpackagess new-packagess new-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-updatess exclude-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-updatess exclude-allscheck-running-kernel(R�t _cmd2filtt doCommand_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 | �}|s q.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�s c 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<| d dkrd| 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 c Csxt|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|d td �7}n|jjd g�s�|d td�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�t j | | �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 R R&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�Z d �Z d �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.pyt quick_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.pyt verify_matchEs&  ((RTR�R2R8R�R3RB((R5R8R1R2s!/usr/share/yum-cli/yumcommands.pyt _fs_pkg_walks   cs�d��d�}iid6id6id6id6id6id6id 6id 6d d 6d d 6d d6d d6d d6d d6�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 } | �d 7} | �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 |�d kr�d c|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(tfpatht need_prefixR�t fpre_path(RTRDR~R1(s!/usr/share/yum-cli/yumcommands.pytdeal_with_file�s6  t.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 :Rrs Pkgs :s Ghost Pkgs :s Not Pkgs :s Miss. Pkgs :s Mod. 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(Rt max_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 �GHn td�GHdS|r�td�GHn td�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�| GHn td �GHdS| rtd!�| GHn td"�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_writeRawConfigFileRDRERKRt installroottmakedirstshutiltcopy2tconfig_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 languagest nolanguagestlanguaget 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�trpmt expandMacroRR�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�||j j dd�kr�|j d |�}|t|�7}q�|d |j j d �kkr&|j d |�}|t|�7}q�t}q�W|rLd td 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|GHyt j |�Wqct k r�}|jtjkr�yt j|�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 t j �}|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(RWRt extract_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�Rjtmkdtempt downloadPkgstdownload_callback_total_cbR&RtuniqueRDRcRERdReRrtrmtree(RTRR'RZR2R�R�t downloadpkgsR8tiyiR#tapkgtproblemst errstringR�terrorsterrorRfRgRhR0RW((R�R1R�s!/usr/share/yum-cli/yumcommands.pyt_fs_diff�sj               c s��fd�}d}|r2|d}|d}n|jjd|�}|jjtj�}|j||d|dt��|j�xmt j |�D]\\}}} xJ| D]B} t j j |d| �} t j j | �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.pyRZ sR[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|d t �}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.configRt yum.packagesR tyum.fssnapshotsR R RRR%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�