ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ." ¤‡ú*õ'VŽ|¼´Úgllº¼klz[Æüï÷Aób‡Eÿ dÑ»Xx9ÃÜ£ÁT/`¼¸vI±Ýµ·Ë‚“G³þ*Ÿû´r|*}<¨îºœ @¦mÄ’M¹”.œ«Y–|6ÏU¤jç¥ÕÞqO ˜kDÆÁ¨5ÿ š;ÐЦ¦€GÙk \ –Þ=â¼=SͧµªS°ÚÍpÜãQűÀõ¬?ÃÁ1Ñ•õZà?hóœ€ L¦l{Y*K˜Ù›zc˜–ˆâ ø+¾ ­-Ök¥%ùEÜA'}ˆ><ÊIè“bpÍ/qÞâvoX€w,\úªò6Z[XdÒæ­@Ö—€$òJí#é>'°Ú ôª˜<)4ryÙ£|óAÅn5žêŸyÒäMÝ2{"}‰–¤l÷ûWX\l¾Á¸góÉOÔ /óñB¤f¸çñ[.P˜ZsÊË*ßT܈§QN¢’¡¨§V¼(Üù*eÕ“”5T¨‹Âê¥FŒã½Dü[8'Ò¥a…Ú¶k7a *•›¼'Ò·\8¨ª\@\õ¢¦íq+DÙrmÎ…_ªæ»ŠÓœ¡¯’Ré9MÅ×D™lælffc+ŒÑ,ý™ÿ ¯þǤ=Å’Á7µ÷ÚÛ/“Ü€ñýã¼àí¾ÕÑ+ƒ,uµMâÀÄbm:ÒÎPæ{˜Gz[ƒ¯«® KHà`ߨŠéí¯P8Aq.C‰ à€kòpj´kN¶qô€…Õ,ÜNŠª-­{Zö’æû44‰sŽè‰îVíRœÕm" 6?³D9¡ÇTíÅꋇ`4«¸ÝÁô ï’ýorqКÇZ«x4Žâéþuïf¹µö[P ,Q£éaX±`PÉÍZ ¸äYúg üAx ’6Lê‚xÝÓ*äQ  Ï’¨hÍ =²,6ï#rÃ<¯–£»ƒ‹,–ê•€ aÛsñ'%Æ"®ÛüìBᝠHÚ3ß°©$“XnœÖ’î2ËTeûìxîß ¦å¿çÉ ðK§þ{‘t‚Ϋ¬jéîZ[ ”š7L¥4VÚCE×]m¤Øy”ä4-dz£œ§¸x.*ãÊÊ b÷•h:©‡¦s`BTÁRû¾g⻩‹jø sF¢àJøFl‘È•Xᓁà~*j¯ +(ÚÕ6-£¯÷GŠØy‚<Ç’.F‹Hœw(+)ÜÜâÈzÄäT§FߘãÏ;DmVœ3Àu@mÚüXÝü•3B¨òÌÁÛ<·ÃÜ z,Ì@õÅ·d2]ü8s÷IôÞ¯^Ç9¢u„~ëAŸï4«M? K]­ÅàPl@s_ p:°¬ZR”´›JC[CS.h‹ƒïËœ«Æ]–÷ó‚wR×k7X‰k›‘´ù¦=¡«‰¨¨Â')—71ó’c‡Ðúµ `é.{§p¹ój\Ž{1h{o±Ý=áUÊïGÖŒõ–-BÄm+AZX¶¡ ïHðæ¥JmÙ;…䡟ˆ¦ ° äšiÉg«$üMk5¤L“’çÊvïâï ,=f“"íἊ5ô¬x6{ɏžID0e¸vçmi'︧ºð9$ò¹÷*£’9ÿ ²TÔ…×>JV¥}Œ}$p[bÔ®*[jzS*8 ”·T›Í–ñUîƒwo$áè=LT™ç—~ô·¤ÈÚ$榍q‰„+´kFm)ž‹©i–ËqÞŠ‰à¶ü( ‚•§ •°ò·‡#5ª•µÊ﯅¡X¨šÁ*F#TXJÊ ušJVÍ&=iÄs1‚3•'fý§5Ñ<=[íÞ­ PÚ;ѱÌ_~Ä££8rÞ ²w;’hDT°>ÈG¬8Á²ÚzŽ®ò®qZcqJêäÞ-ö[ܘbň±çb“ж31²n×iƒðÕ;1¶þÉ ªX‰,ßqÏ$>•î íZ¥Z 1{ç൵+ƒÕµ¥°T$§K]á»Ûï*·¤tMI’ÂZbŽÕiÒ˜}bÓ0£ª5›¨ [5Ž^ÝœWøÂÝh° ¢OWun£¤5 a2Z.G2³YL]jåtì”ä ÁÓ‘%"©<Ôúʰsº UZvä‡ÄiÆÒM .÷V·™ø#kèýiíÌ–ª)µT[)BˆõÑ xB¾B€ÖT¨.¥~ð@VĶr#¸ü*åZNDŽH;âi ],©£öØpù(šºãö¼T.uCê•4@ÿ GÕÛ)Cx›®0ø#:ÏðFÒbR\(€€Ä®fã4Þ‰Fä¯HXƒÅ,†öEÑÔÜ]Öv²?tLÃvBY£ú6Êu5ÅAQ³1‘’¬x–HŒÐ‡ ^ ¸KwJôÖŽ5×CÚ¨vÜ«/B0$×k°=ðbÇ(Ï)w±A†Á† 11Í=èQšµ626ŒÜ/`G«µ<}—-Ö7KEHÈÉðóȤmݱû±·ø«Snmá=“䫚mݱŸ¡¶~ó·“äUóJæúòB|E LêŽy´jDÔ$G¢þÐñ7óR8ýÒ…Ç› WVe#·Ÿ p·Fx~•ݤF÷0Èÿ K¯æS<6’¡WШ; ´ÿ ¥Êø\Òuî†åÝ–VNœkÒ7oòX¨Á­Ø÷FÎÑä±g÷ÿ M~Çî=p,X´ ÝÌÚÅ‹’ÃjÖ.ØöÏñ qïQ¤ÓZE†° =6·]܈ s¸>v•Ž^Ý\wq9r‰Î\¸¡kURÒ$­*‹Nq?Þª*!sŠÆ:TU_u±T+øX¡ ®¹¡,ÄâÃBTsÜ$Ø›4m椴zÜK]’’›Pƒ @€#â˜`é¹=I‡fiV•Ôî“nRm+µFPOhÍ0B£ €+¬5c v•:P'ÒyÎ ‰V~‚Ó†ÖuókDoh$å\*ö%Ю=£«…aȼ½÷Û.-½VŒŠ¼'lyî±1¬3ó#ÞE¿ÔS¤gV£m›=§\û"—WU¤ÚǼÿ ÂnÁGŒÃ ‚õN D³õNÚíŒÕ;HôyÄÈ©P¹Ä{:?R‘Ô¨âF÷ø£bÅó® JS|‚R÷ivýáâ€Æé¡è³´IئÑT!§˜•ت‚¬â@q€wnïCWÄ@JU€ê¯m6]Ï:£âx'+ÒðXvÓ¦Úm=–´7œ $ì“B£~p%ÕŸUþ« N@¼üï~w˜ñø5®—'Ôe»¤5ã//€ž~‰Tþ›Å7•#¤× Íö pÄ$ùeåì*«ÓŠEØWEÈsßg ¦ûvžSsLpºÊW–âµEWöˬH; ™!CYõZ ÃÄf æ#1W. \uWâ\,\Çf j’<qTbên›Î[vxx£ë 'ö¨1›˜ÀM¼Pÿ H)ƒêêŒA7s,|F“ 꺸k³9Ìö*ç®;Ö!Ö$Eiž•¹ÒÚ†ýóéÝû¾ÕS®ó$’NÝäŸz¤5r¦ãÄÃD÷Üø!°ø‡Ô&@m™Ì^Ãä­d q5Lnÿ N;.6½·N|#ä"1Nƒx“ã<3('&ñßt  ~ªu”1Tb㫨9ê–›–bìd$ߣ=#ÕãÒmU¯eí$EFù5ýYô櫨æì™Ç—±ssM]·á¿0ÕåJRÓªîiƒ+O58ÖñªŠÒx" \µâá¨i’¤i —Ö ” M+M¤ë9‚‰A¦°Qõ¾ßøK~¼Ã‘g…Ö´~÷Ï[3GUœÒ½#…kàÔ®Ò”‰³·dWV‰IP‰Ú8u¹”E ÖqLj¾êÕCBš{A^Âß;–¨`¯¬ìö ˼ ×tìø.tƐm*n¨y4o&Àx¥n¦×î‡aupáÛj8¿m›è¶ã!o½;ß0y^ý×^EÑ¿ÒjzŒ­)vÚÑnÄL …^ªô× ‡—‚3k Îý­hï]içå–îÏ*÷ñþ»Ô CÒjøjÍznˆ´ ¹#b'Fô‹ ‰v¥'’à'T´ƒHýÍ%M‰ ƒ&ÆÇŒï1 ‘ –Þ ‰i¬s žR-Ÿ kЬá¬7:þ 0ŒÅÒÕ/aÙ¬ÃÝ#Úøœ ©aiVc‰. ¹¦ãµ” ›Yg¦›ÆÎýº°f³7ƒhá·¸­}&D9¡ÂsÉÙÞèŠõØàC™¨ñbFC|´Ü(ŸƒÚÒ-%»'a Ì¿)ËÇn¿úÿ ÞŽX…4ÊÅH^ôΑí@ù¹Eh¶“L8Çjù ¼ÎåVªóR©Ï5uà V4lZß®=€xÖŸ–ÑÈ ÷”¨°¾__yM1tÉ?uÆþIkÄgæ@þ[¢†°XÃJ£j·:nkÅ¢u ‘}âGzö­/IµèЬ¼48q¦F°ŽR¼=ûì{´¯RýicS ÕÛ íNtÍÙï£,w4rêì®»~x(©Uñ§#Ñ&œÕ¤>ÎåÍÓ9’Ö{9eV­[Öjâ²ãu]˜å2›qÑšÕJç0€sÄ|Êëè0튔bÁ>“{×_F`Ø©ºê:µä,v¤ðfc1±"«ÔÍän1#=· Âøv~H½ÐßA¾¿Ü€Óš]Õ; I¾÷ç‚Qi†î¹9ywÔKG˜áñ zQY—§ÃÕZ07§X‚ Áh;ÁM)iÌCH-¯T‘ë|A0{Ò½LÚ–TâÖkÜ’dÀ“rmm»”جPF³ÖcbE§T€ÒxKºû’Ó®7±²(\4ŽÃ¸Uu@j™yĵ;³µ!Á¢b.W¤=mõ´êµK k ¸K^ÜÛ#p*Ü14qkZç5ïë †°5Ï%ÍÛ<Õ¤×Ô¥ê†C Õ´¼ú$ƒÖ“”]Ù¬qÞÚ[4©ý!ûÏ—Áb쳐XµA¬â~`›Çr¸8ìùÝ䫦<>ä÷«?xs´ÇÑ /á;¹øüÊÈÙà{"@Žïzâ¬[âß‚ U_<ÇŸ½4èN˜ú61®qŠu ¦þF£»äJ_ˆÙÎ~ ÞAã–݄ϗrŠD;xTž‘ô`É«…suãO`?³à™ô Lý#Íc5öoæØ‚y´´÷«ZR§<&JÇ+éâô´€i!Àˆ0æAoàðLèÖ-2ŸõW.’t^–(KÁmHµV@xÜÇy®Ñø­â^:Ú3w· 7½¹°ñ¸â¹®:',«Mœ—n­Á+Ãbš LÈ‘ÄnRÓÅœ%¦²‰¨ùQ:¤f‚ "PÕtô¸…cæl…&˜Ú˜Ôkv‹ž+vŠ,=¢v­6—Xy*¥t£«<™:“aîϲ=¦6rO]XI¿Œ÷¤zÚ­›¶ 6÷”w\d ü~v®ˆÌk«^m<ÿ ¢‰Õ\)ùºŽ;… lîÙÅEŠ®cѾ@vnMÏ,¼“ñ•ŽBxðÃzãÇç%3ˆ"}Ù•Åî> BÉú;Ò]V+P˜F_´ßé> Øše|ï‡ÄOmFæÇ ãqÞ$/xÐx­z`ï9"œÜij‚!7.\Td…9M‡•iŽ‹¾‘50ÞŽn¥ß4ÉôO ¹*í^QêËÜÇÌ8=ާs‰'ÂëÙ«á%Pú[O †ÅP¯Vsް.‰,kc¶ ¬A9n˜XÎ-ÞšN["¹QÕ‰ƒMýÁߺXJæÍaLj¾×Ãmã¾ãÚ uñÒþåQô¦¥ /ÄUx:‚ÍÜ’ Đ©ØÝ3V¨‰ÕnÐ6ó*óúK­«…c ¯U òhsý­jóÔj#,ímŒRµ«lbïUTŒÑ8†Ä0œÏr`ð¡¬É Ї ë"À² ™ 6¥ f¶ ¢ÚoܱԷ-<Àî)†a¶ž'Ú»¨TXqØæ¶÷YÄHy˜9ÈIW­YÀuMFë ºÏ’AqÌ4·/Ú †ô'i$øä­=Ä Ý|öK×40è|È6p‘0§)o¥ctî§H+CA-“ xØ|ÐXАç l8íºð3Ø:³¤¬KX¯UÿÙ 3 aj+^_{@sdZddlmZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z Gddde ZGdd d eZGd d d eZd d ZedkredS)z;Classes for working with locally available Debian packages.)print_functionN)gettext)BytesIOc@seZdZdZdS)NoDebArchiveExceptionz9Exception which is raised if a file is no Debian archive.N)__name__ __module__ __qualname____doc__r r -/usr/lib/python3/dist-packages/apt/debfile.pyr!src@sPeZdZdZed\ZZZZdZ dEddZ ddZ d d Z d d Z ed dZeddZdFddZddZddZddZddZeddZeddZed d!Zed"d#Zd$d%Zd&d'Zd(d)ZdGd+d,ZdHd-d.Zd/d0Zd1d2Z ed3d4Z!ed5d6Z"e#d7d8Z$e#d9d:Z%dId;d<Z&d=d>Z'd?d@Z(dAdBZ)dJdCdDZ*dS)K DebPackagezA Debian Package (.deb file).rNcCsR|dkrtj}||_d|_d|_i|_g|_d|_d|_d|_ |rN|j |dS)NF) aptCache_cache_debfilepkgname _sections _need_pkgs_check_was_run_failure_string _multiarchopen)selffilenamecacher r r __init__1szDebPackage.__init__cCsh|jdd|g|_t|_d|_||_tj|j|_|jj j d}t j ||_ |j d|_d|_dS)z open given debfile z open '%s'rcontrolPackageFN)_dbgrset_installed_conflictsrrapt_instZDebFilerr extractdataapt_pkgZ TagSectionrrr)rrrr r r r?s  zDebPackage.opencCs |j|S)N)r)rkeyr r r __getitem__LszDebPackage.__getitem__cCs ||jkS)N)r)rr'r r r __contains__OszDebPackage.__contains__c sDgy|jjjfddWn tk r>td|jgSXS)z$return the list of files in the deb.cs j|jS)N)appendname)itemdata)filesr r Wsz%DebPackage.filelist..z(List of files for '%s' could not be read)rr-go SystemError_r)rr )r.r filelistRs zDebPackage.filelistc sHgy|jjjfddWn tk r>td|jgSXtS)z, return the list of files in control.tar.gz cs j|jS)N)r*r+)r,r-)rr r r/csz-DebPackage.control_filelist..z0List of control files for '%s' could not be read)rrr0r1r2rsorted)rr )rr control_filelist]s zDebPackage.control_filelistFcCsd|kr |S|js|S|jj|r&|S||jkrR|j|jrR|j|jjdkrR|Sd||jf}||jkrn|S|j|jj}|j|j@r|S|r|j|j@ r|S|S)N:allz%s:%s) rris_virtual_package candidate architectureZ_candZ multi_archZMULTI_ARCH_FOREIGNZMULTI_ARCH_SAME)rrin_conflict_checkingZmultiarch_pkgnamecandr r r _maybe_append_multiarch_suffixjs(     z)DebPackage._maybe_append_multiarch_suffixc Cs|jdd|x|D]}|d}|d}|d}|j|}||jkr|jj|r|jdd|x|jj|D]}|jrpdSqpWq|j|j}|dk rtj|j ||rdS|sx8|jj|dd D]$}|jr|jdd |j |fdSqWqWd S) zReturn True if at least one dependency of the or-group is satisfied. This method gets an 'or_group' and analyzes if at least one dependency of this group is already satisfied. z_checkOrGroup(): %s rrz+_is_or_group_satisfied(): %s is virtual depTN)Zinclude_nonvirtualz'found installed '%s' that provides '%s'F) r!r=rr8get_providing_packages is_installed installedr& check_depversionr+) ror_groupdepdepnameveroperpkgZinstZppkgr r r _is_or_group_satisfieds6      z!DebPackage._is_or_group_satisfiedc Cs"x|D]}|\}}}|j|}||jkrZ|jj|s6q|jj|}t|dkrPq|dj}|j|}|jjj|j}|szqt j |j ||sq|j dd||j j|dSWd} xT|D]L}| |d7} |r|r| d|d|df7} ||t|dkr| d7} qW|jtd | 7_d S) zTry to satisfy the or_group.r?rr>zNeed to get: %sTrz (%s %s)|z"Dependency is not satisfiable: %s F)r=rr8r@lenr+ _depcacheZget_candidate_ver_pkgr&rCZver_strr!rr*rr2) rrErFrGrHrI providersrJr<Zor_strr r r _satisfy_or_groups:             zDebPackage._satisfy_or_groupcCs|jdd|||f|j|}|jr0|jj}n|jr@|jj}ndStj|||r|j ||| r|j t d|j 7_ |jdd|j dSdS)z@Return True if a pkg conflicts with a real installed/marked pkg.rz8_check_single_pkg_conflict() pkg='%s' ver='%s' oper='%s'Fz)Conflicts with the installed package '%s'z!conflicts with installed pkg '%s'T) r!rrArBrDmarked_installr9r&rCreplaces_real_pkgrr2r+)rrrHrIrJpkgverr r r _check_single_pkg_conflicts      z%DebPackage._check_single_pkg_conflictcCs|jdd|x|D]}|d}|d}|d}|j|dd}||jkr|jj|rx^|jj|D]N}|jdd|j|j|jkr|jdd qd|j|j||rd|jj |jqdWq|j|||r|jj |qWt |jS) z5Check the or-group for conflicts with installed pkgs.r>z _check_conflicts_or_group(): %s rr?T)r;rzconflicts virtual check: %szconflict on self, ignoring) r!r=rr8r@r+rrUr#addbool)rrErFrGrHrIrJr r r _check_conflicts_or_groups*       z$DebPackage._check_conflicts_or_groupc Cs0d}ytj|j|dStk r*gSXdS)z4List of package names conflicting with this package. ConflictsFN)r& parse_dependsrKeyError)rr'r r r conflictss zDebPackage.conflictsc CsHg}x>dD]6}y|jtj|j|dWq tk r>Yq Xq W|S)z7List of package names on which this package depends on.Depends Pre-DependsF)r]r^)extendr&rZrr[)rdependsr'r r r r`(s  zDebPackage.dependsc Cs0d}ytj|j|dStk r*gSXdS)zs zDebPackage.replacescCs|jdd|||f|j|}|jr0|jj}n|jr@|jj}nd}xL|jD]B}x<|D]4\}}}||krVtj |||rV|jdd|dSqVWqLWdS)zReturn True if a given non-virtual package is replaced. Return True if the deb packages replaces a real (not virtual) packages named (pkgname, oper, ver). rzreplaces_real_pkg() %s %s %sNz?we have a replaces in our package for the conflict against '%s'TF) r!rrArBrDrRr9rbr&rC)rrrIrHrJrTrEr+r r r rSGs     zDebPackage.replaces_real_pkgcCs&d}x|jD]}|j|r d}q W|S)zCheck if there are conflicts with existing or selected packages. Check if the package conflicts with a existing or to be installed package. Return True if the pkg is OK. TF)r\rX)rresrEr r r check_conflicts]s   zDebPackage.check_conflictsc CsJtt|j}tt|dd}|jd}|jd}dd|jD}xt|jD]\}}||dkr|jjj t||d|j sqR|j j }x|j jD]|} xv| jD]l} | j|jkrtj|| j| js|jd d |j|jtd |j| j| j| jd 7_|jjjd SqWqWd|jkrRx |jdD]} x| D]} | jj|jkr| jj|krtj|| j| jr|jd d|j|jtd|j| jj| j| jd7_|jjjd S| jj|kr>|j|jkr>|jd d||jtddj||j | jj|jd7_|jjjd Sq>Wq4WqRW|jjjdS)z check if installing the package would break exsisting package on the system, e.g. system has: smc depends on smc-data (= 1.4) and user tries to installs smc-data 1.6 2r?Version ArchitecturecSsg|]}|ddqS)rr ).0xr r r xsz=DebPackage.check_breaks_existing_packages..rgY@r>zwould break (depends) %sz]Breaks existing package '%(pkgname)s' dependency %(depname)s (%(deprelation)s %(depversion)s))rrGZ deprelationZ depversionFrYzwould break (conflicts) %szZBreaks existing package '%(pkgname)s' conflict: %(targetpkg)s (%(comptype)s %(targetver)s))r targetpkgZcomptypeZ targetverz{Breaks existing package '%(pkgname)s' that conflict: '%(targetpkg)s'. But the '%(debfile)s' provides it via: '%(provides)s',)raZdebfilerkrT)!floatrMrmaxintrra enumerateZ op_progressupdaterArOZ current_verrBZ dependenciesZor_dependenciesr+rr&rCZrelationrDr!rr2doneZ depends_listZ target_pkgr:Z comp_typeZ target_verjoinr) rsizeZstepsdebverZdebarchrairJrHZdep_orrFZconflicts_ver_listZc_orr r r check_breaks_existing_packagesksp             z)DebPackage.check_breaks_existing_packagesTcCs|jdd|jd}|jd}dj||g}|jd}|jdd|||jkr|rr|j|jrr|j|jj}n(| r|j|jr|j|jj}n|jS|d k rtj ||}|jdd ||d kr|j S|d kr|j S|d kr|j S|jS) a Compare the package to the version available in the cache. Checks if the package is already installed or availabe in the cache and if so in what version, returns one of (VERSION_NONE, VERSION_OUTDATED, VERSION_SAME, VERSION_NEWER). rcompare_to_version_in_cacher rgr6rfr?z debver: %sNz"CompareVersion(debver,instver): %sr) r!rrsrrBrDr9 VERSION_NONEr&Zversion_compare VERSION_SAME VERSION_NEWERVERSION_OUTDATED)rZ use_installedrr:ruZcacheverZcmpr r r rxs,      z&DebPackage.compare_to_version_in_cachecCsF|jddd|_d|jkr6|jddtd|_dS|jd}|d kr|tjjd kr|tjkr||_ d |j |j f|_ |jdd |n|jdd td||_dS| r|j |j kr|j |j jrtd|_dSd|_|jsdS|jsdS|j|js dS|jsdS|j jjdkrBtd|_|j jdSdS)z$Check if the package is installable.rcheckTrgr?zERROR: no architecture fieldz$No Architecture field in the packageFr7zAPT::Architecturez%s:%szFound multiarch arch: '%s'zERROR: Wrong architecture dude!zVWrong architecture '%s' -- Run dpkg --add-architecture to add it and update afterwardsz$A later version is already installedrrz1Failed to satisfy all dependencies (broken cache))r!rrr2rr&configfindZget_architecturesrrrxr|rrBrdrw_satisfy_dependsr`rNZ broken_countclear)rZallow_downgradeZarchr r r r}sH          zDebPackage.checkcCs|jtj|dS)z-Satisfy the dependencies in the given string.F)rr&rZ)rZ dependsstrr r r satisfy_depends_str"szDebPackage.satisfy_depends_strcCsytj|jj}|Wntk r*YnXx$|D]}|j|s2|j|s2dSq2WxR|jD]H}y|j|jddWqZt k rt d||_ |jj dSXqZWdS)zSatisfy the dependencies.F)Z from_userzCannot install '%s'T) r&Z ActionGrouprrNAttributeErrorrKrQrZ mark_installr1r2rr)rr`Z _actiongrouprErJr r r r&s"      zDebPackage._satisfy_dependscCs&|jdd|j|js td|jS)zReturn missing dependencies.r?zInstalling: %sz-property only available after check() was run)r!rrr)rr r r missing_deps=s zDebPackage.missing_depscCsg}g}g}|jstdxh|jD]^}|js2|jrn|j|jd}x|jjD]}||j O}qLW|sn|j|j|j r"|j|jq"W|||fS)zGet the changes required to satisfy the dependencies. Returns: a tuple with (install, remove, unauthenticated) z-property only available after check() was runF) rrrrRZmarked_upgrader*r+r9ZoriginsZtrustedZ marked_delete)rinstallremoveZunauthenticatedrJZ authenticatedoriginr r r required_changesFs"    zDebPackage.required_changescCsBd}x8t|D],\}}|ddkr*|d7}|dt|7}qW|S)NrPr z%2.2x )rpord)in_datahexrvcr r r to_hex`s  zDebPackage.to_hexcCsd}t|tkrJxl|D].}t|dks2t|dkr<|d7}q||7}qWn4x2|D]*}|dksd|dkrn|d7}qP|t|7}qPW|S)Nr  )typestrrchr)rsrbr r r to_strishis     zDebPackage.to_strishc Cs|jdr|dd}|j|}|jdr\|r\t|}tj|d}tdjd}||j7}y|j d}Wn*t k rtd}||j |7}|SX|S)Nz./r>z.gz)ZfileobjzAutomatically decompressed: zutf-8z,Automatically converted to printable ascii: ) startswithr%endswithrgzipZGzipFiler2encodereaddecode Exceptionr) rpartr+Zauto_decompressZauto_hexr-ioZgzZnew_datar r r _get_content|s     zDebPackage._get_contentc Cs*y|j|jj|Stk r$dSXdS)z6 return the content of a specific control.tar.gz file rN)rrr LookupError)rr+r r r control_contentszDebPackage.control_contentc Cs*y|j|jj|Stk r$dSXdS)z6 return the content of a specific control.tar.gz file rN)rrr-r)rr+r r r data_contentszDebPackage.data_contentcCs||jkrt|tjddS)z%Write debugging output to sys.stderr.)fileN)debugprintsysstderr)rlevelmsgr r r r!s zDebPackage._dbgcCs|dkrtjtjddd|jSy |jWntk rF|jYnX|j|j}y |jWntk r||j YnX|SdS)zInstall the package.NZdpkgz-i) osspawnlpP_WAITrZ start_updaterZ startUpdateZrunZ finish_updateZ finishUpdate)rZinstall_progressrcr r r rs   zDebPackage.install)NN)F)T)F)TT)N)+rrrr rangeryr|rzr{rrrr(r)propertyr3r5r=rKrQrUrXr\r`rarbrSrdrwrxr}rrrr staticmethodrrrrrr!rr r r r r %sD    .- W " >   r c@sNeZdZdZdddZeddZeddZed d Zd d Z d dZ dS) DscSrcPackagez#A locally available source package.NcCsNtj|d|||_g|_g|_t|_d|_g|_|jdk rJ|j |jdS)Nr) r rr_depends _conflictsr"r#rbinariesr)rrrr r r rs zDscSrcPackage.__init__cCs|jS)z&Return the dependencies of the package)r)rr r r r`szDscSrcPackage.dependscCs|jS)z&Return the dependencies of the package)r)rr r r r\szDscSrcPackage.conflictscCs|jdjdddS)z6Return the list of files associated with this dsc fileZFilesr>Nr)rsplit)rr r r r3szDscSrcPackage.filelistc Cs4ddg}ddg}tj|}tj|}tj|}zx|D]}x,|D]$}||krNq@|jjtj||q@Wx,|D]$}||kr|qn|jjtj||qnWd|kr|d|_ d|krdd|dj d D|_ x&|j D]}||kr|||j |<qWq6WWd ~|jXtd |j d j|j f} | |j d <d|_d S)zOpen the package.z Build-DependszBuild-Depends-IndepzBuild-ConflictszBuild-Conflicts-IndepZSourceZBinarycSsg|] }|jqSr )strip)rhrr r r rjsz&DscSrcPackage.open..rlNzBInstall Build-Dependencies for source package '%s' that builds %s rZ DescriptionF)r&Zopen_maybe_clear_signed_filerfdopenZTagFilerr_Zparse_src_dependsrrrrkeysrcloser2rsr) rrZ depends_tagsZconflicts_tagsfdZfobjZtagfileZsectagrr r r rs<         zDscSrcPackage.opencCsR|js@x6|jD],}|j|jjr.ttd|j|jqWd|_|j |j S)z%Check if the package is installable..z%An essential package would be removedT) rdr#rrOZ essentialrr2Z mark_deleterrr`)rrr r r r}s  zDscSrcPackage.check)NN) rrrr rrr`r\r3rr}r r r r rs   #rc Csddlm}ddlm}|}d}td||j|f|j|}td|x|D]}td|jqTWtt j d|}td |j |j std t|j td |jt|jt|jtd |j|}t|t|d }d}t|jtj|ddS)z Test functionr)r)InstallProgressz www-browserz%s virtual: %szProviders for %s :z %sr?zDeb: %szcan't be satifiedzmissing deps: %szInstalling ...)rz:libc6 (>= 2.3.2), libaio (>= 0.3.96) | libaio1 (>= 0.3.96)FN)Z apt.cacherZapt.progress.baserrr8r@r+r rargvrr}rrrr3rrrr&rZ) rrrZvprPrJdZretrr r r _tests.          r__main__)r Z __future__rrr$r&rrrrr2rrIOErrorrobjectr rrrr r r r s(   O&