PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
a 2h@s\dZddlmZddlmZddlmZddlmZddlZddlZddlZ ddl m Z ddl m Z dd lmZmZmZdd lmZdd lmZdd lmZzdd lmZWneydd lmZYn0ddlZddlZddl ZddlZddlZddl Zddl!Zddl"Zddl#Zddl$Zddl%Zddl&Zddl'Zzddl(ZdZ)Wney\dZ)Yn0ddl*Zddl+Zddl,Zddl-Zddl.Zddl/Zddl0Zddl1Zddl2Zddl3Zddl4Zddl5ZddlZddl6Zddl7Z7ddl8Z8ddl9Z9ddl:Z:ddl;Z;ddlZ>ddl?Z?ddl@Z@ddlAZAddlBZBddlCZCe;DdZEGdddeFZGddZHdS)z Supplies the Base class. )absolute_import)division)print_function)unicode_literalsN)deepcopy) CompsQuery)_P_ucd) _parse_specs) SwdbInterface)misc)SequenceTFdnfc@seZdZdddZddZddZdd Zd d Zd d Ze ddZ ddZ dddZ ddZ eddZeddZeddZejddZeejddd Zed!d"Zed#d$Zed%d&Zejd'd&Zd(d)Zdd+d,Zd-d.Zd/d0Zd1d2Zdd3d4Z dd6d7Z!dd8d9Z"d:d;Z#dd?Z%dd@dAZ&dBdCZ'e(j)e(j*e(j+e(j,e(j-e(j.e(j/dDZ0e1e(dEre(j2e0dF<dGe(j3e(j4BiZ5edHdIZ6edJdKZ7e7jdLdKZ7ddMdNZ8dOdPZ9edQdRdSdRdTdRdUdVZ:dWdXZ;dYdZZd_d`Z?dadbZ@ddcddZAddedfZBdgdhZCdidjZDdkdlZEddmdnZFddodpZGddqdrZHddsdtZIdudvZJdwdxZKdydzZLdd|d}ZMdd~dZNddZOddZPddZQddZRdddZSddZTdddZUdddZVddZWddZXddZYddZZddZ[ddZ\dddZ]ddZ^ddZ_ddZ`dddZadddZbdddZcdddZddddZeddZfddZgddZhdddZidddZjdddZkdddZldddZmdddZnd ddZoddÄZpd ddńZqddDŽZrd ddɄZsdd˄Ztd dd̈́Zud ddτZvdddфZwddӄZxdddքZyddd؄ZzddڄZ{dd܄Z|ddބZ}ddZ~ddZddZddZddZdS(BaseNcCsd|_|p||_d|_d|_d|_d|_d|_d|_t j |_ d|_ t|_t|_t j|_t j|_t j|_ttjg|_t j|_d|_ d|_!d|_"g|_#i|_$d|_%t|_&t'j(j)|_*d|_+dS)NF),_closed_setup_default_conf_conf_goal_repo_persistor_sack _transaction_priv_ts_compsrcompsTransactionBunch _comps_trans_historyset _tempfiles_trans_tempfilescallbackZDepsolve _ds_callbackloggingZLogging_loggingrepodictRepoDict_reposrpmZRPMPROB_FILTER_OLDPACKAGE_rpm_probfilterZpluginZPlugins_plugins_trans_success_trans_install_set_tempfile_persistor_update_security_filters_update_security_options_allow_erasing_repo_set_imported_gpg_keyslibdnf transactionZTransactionPersistence_UNKNOWN _persistenceoutput)selfconfr8,/usr/lib/python3.9/site-packages/dnf/base.py__init__^s4      z Base.__init__cCs|SNr8r6r8r8r9 __enter__|szBase.__enter__cGs |dSr;close)r6Zexc_argsr8r8r9__exit__sz Base.__exit__cCs |dSr;r>r<r8r8r9__del__sz Base.__del__cCs.|jr|j|n|jjrn |j|dSr;)rr updater7destdirr)r6filesr8r8r9_add_tempfiless zBase._add_tempfilesc Cs|td|jdd}|jr&d|d<z|jj|jfddi|WnVtjy}zz0Base._setup_modular_excludes..F)Z update_onlyZ debugsolvermodule_obsoletesr)repos iter_enabledsackZfilter_modules_moduleContainerr7r^Zmodule_platform_id debug_solverrgrPrQrrVErrorr rRwarningmodule module_baseZformat_modular_solver_errors)r6Z hot_fix_reposZ solver_errorsrZr8r8r9_setup_modular_excludess  &zBase._setup_modular_excludesFc Cst|jj}d|vr$tr$|dSg}g}|s0|jD]}|j|vrLq.) rr7 cacheonlyrhriZexpired_to_addrBsaver-)r6Zexpiredr8r8r9_store_persistent_datas  zBase._store_persistent_datacCs|jdur|jdd|jS)NT) arch_filter)r read_compsr<r8r8r9rs  z Base.compscCs|jSr;)rr<r8r8r9r7sz Base.confcCs|jSr;r'r<r8r8r9rh sz Base.reposcCs d|_dSr;rr<r8r8r9rhsZ _priv_rpmconncCstjj|jjSr;)rr(Z connectionZ RpmConnectionr7r^r<r8r8r9_rpmconnsz Base._rpmconncCs|jSr;)rr<r8r8r9rjsz Base.sackcCsP|jdurtjd|jjdurHtjd|jj |jj d|jj |j_|jjS)NzSack was not initializedFarch) rjrrVrmrkr2roZModulePackageContainerr7r^r] persistdirr<r8r8r9rks   zBase._moduleContainercCs|jSr;)rr<r8r8r9r3'szBase.transactioncCs|jrtd||_dS)Nztransaction already set)r ValueErrorr6valuer8r8r9r3,scCstj|jj|_dSr;)r persistorZ RepoPersistorr7cachedirrr<r8r8r9_activate_persistor3szBase._activate_persistorr8cCs,|jjr|j|j|||j||dS)z&Load plugins and run their __init__().N)r7Zpluginsr*_loadZ _run_init)r6Z disabled_globZenable_pluginsclir8r8r9 init_plugins6szBase.init_pluginscCs|jdS)z#Run plugins pre_configure() method.N)r*Z_run_pre_configr<r8r8r9pre_configure_plugins=szBase.pre_configure_pluginscCs|jdS)zRun plugins configure() method.N)r*Z _run_configr<r8r8r9configure_pluginsBszBase.configure_pluginscCs|jdS)zRun plugins unload() method.N)r*Z_unloadr<r8r8r9unload_pluginsGszBase.unload_pluginsc Cs|jj}|jdur||j}|rtjrDtd}t |dStj durhtd}t |dS|dkrtd}t |dS| }|dur||krt tddS|j D]}|jdq|j st tdd |jjdS|j D]}|\}} | dur0t td |jnv|r@| dkr^ttd |j|jnH|r| |krtd }t||j| |jnttd |j| q|rd|_|jdddt tddS)NzCMetadata timer caching disabled when running on metered connection.Fz:Metadata timer caching disabled when running on a battery.rz Metadata timer caching disabled.z"Metadata cache refreshed recently.z*There are no enabled repositories in "{}".z", "z4%s: will never be expired and will not be refreshed.z&%s: has expired and will be refreshed.zC%s: metadata will expire after %d seconds and will be refreshed nowz!%s: will expire after %d seconds.T)load_system_repoload_available_reposzMetadata cache created.)r7Zmetadata_timer_syncrrrutilZon_metered_connectionrrRinfoZ on_ac_powersince_last_makecacherhvaluesrOZsetMaxMirrorTries _any_enabledrTjoinZreposdirriZ_metadata_expire_inrUrSexpireZreset_last_makecache fill_sack) r6timerZperiodrmsgrrXrZis_cacheZ expires_inr8r8r9 update_cacheLs^            zBase.update_cacheTc Csbtjd}|jdddtj||_tj|j j |j j }||dur~z|jj ddWnt y||dkrxYn0|rg}d}t}|j jrtjj|jD]}z`|||j|kr|j}|j|kr|j}ttd|jtj|jWqtj j!yx} zD|j"|j#durDt$d | |%|j|&WYd } ~ qd } ~ 00q|rt$td d '||j(r|dkr|dkrt)td t*j+t,|dtj|n|j-&Wd n1s0Y|j } |j.| j/| j0| j1|2|tj34|j|_5| j6|j5_6|j78|jS)z'Prepare the Sack and the Goal objects. sack setupTrjgoalFrHautor%s: using metadata from %s.z Error: %sNIgnoring repositories: %s, z-Last metadata expiration check: %s ago on %s.)Zseconds)9rr#Timerresetrj _build_sackrlockbuild_metadata_lockr7r exit_on_lockrIOErrortimegpgkey_dns_verificationdnssecRpmImportedKeyscheck_imported_keys_validityrhrir[rOZ getTimestampZgetAgerRrSrrUrnormalize_timegetMaxTimestamprVrWrskip_if_unavailablernrdisablerrrdatetimeZ timedeltaintrr _configureinstallonlypkgsinstallonly_limitallow_vendor_changerrGoalrprotect_running_kernelr*run_sack) r6rrrr error_reposZmtsZagerrZr7r8r8r9rsn              .  zBase.fill_sackc Cs"tjd}|jdddtj||_tj|j j |j j }|x|dur~z|jj ddWnt y||dkrxYn0g}|j jrtjj|jD]}zj|jjdddtd|jdd}|jrd|d <|jj|jfi|ttd |jtj|j Wqt!t"j#fy}z`|j$durNtj%&td '|j|nttd '|j||(|j|)WYd }~qd }~00q|rt*td d+|Wd n1s0Y|j }|j,|j-|j.|j/|0|tj12|j|_3|j4|j3_4|j56|jS)a Prepare Sack and Goal objects and also load all enabled repositories from cache only, it doesn't download anything and it doesn't check if metadata are expired. If there is not enough metadata present (repond.xml or both primary.xml and solv file are missing) given repo is either skipped or it throws a RepoError exception depending on skip_if_unavailable configuration. rTrFrr)Z throwExceptZ ignoreMissingrFrGrrINrr)7rr#rrrjrrrrr7rrrrrrrrrhrirOZ loadCacherKrLrMrNrRrSrrUrrr RuntimeErrorrPrQrrVrWrTrrrnrrrrrrrrrrr*r) r6rrrrrXrYrZr7r8r8r9fill_sack_from_repos_in_cachesb      $  z"Base.fill_sack_from_repos_in_cachecCstj|jj|_|jjsl||j|j r\|j |j |j |jrl||j n|jj |j |jjrttdttddjtjjd|jdur|j||d|_ dS)NzRThe downloaded packages were saved in cache until the next successful transaction.z1You can remove cached packages by executing '%s'.z{prog} clean packagesprogF)rrZTempfilePersistorr7rr-Z keepcache_clean_packagesrr+r rBZget_saved_tempfilesrtr,Ztempfiles_to_addrRrrrTrZ MAIN_PROGrhistoryr?r _closeRpmDBr<r8r8r9_finalize_bases2     zBase._finalize_basecCsB|jr dSttjjdd|_||jddddd|_dS)ztClose all potential handles and clean cache. Typically the handles are to data sources and sinks. Nz Cleaning up.T)rjrhr) rrRlogrr#DDEBUGrrr*r<r8r8r9r?sz Base.closec Csdtjj|j|}|D]H}z|j|Wqtjjy\}zt |WYd}~qd}~00qdS)z?Read repositories from the main conf file and from .repo files.N) rr7readZ RepoReaderrhaddrVZ ConfigErrorrRrn)r6ZoptsreaderrXrZr8r8r9read_all_repos*s zBase.read_all_reposcCs|r d|_|rtj|_|rd|_|jdurJtj|j|_|jj |j_ |jr`|j r`|j |j durt|j tj|_d|_g|_|r|rtdS)z1Make the Base object forget about various things.N)rrr%r&r'rrrr7rrkZrollbackrrr?rrrrr.gcZcollect)r6rjrhrr8r8r9r5s$        'z Base.resetcCs|`dS)z6Closes down the instances of rpmdb that could be open.N)_tsr<r8r8r9rrszBase._closeRpmDB)Z noscriptsZ notriggersZnodocstestZjustdbZ nocontextsnocryptoRPMTRANS_FLAG_NOCAPSZnocapsrcCs|jSr;)rr<r8r8r9rsz Base.goalcCs|jdur|jStjj|jj|_|jd|jjD]V}|j |}|durbt t d|q8|j||j |}|dur8|j|q8|jjs|jtj|jjr|jtjttj|jd}|j||jS)zMSet up the RPM transaction set that will be used for all the work.Nrz!Invalid tsflag in config file: %s)rrr(r3ZTransactionWrapperr7r^setFlagsZtsflags_TS_FLAGS_TO_RPMgetrRcriticalrZ addTsFlag_TS_VSFLAGS_TO_RPM pushVSFlagsZdiskspacecheckr)rZRPMPROB_FILTER_DISKSPACEZ ignorearchZRPMPROB_FILTER_IGNOREARCH functoolsreduceoperatoror_Z setProbFilter)r6flagZrpm_flagZvs_flagZ probfilterr8r8r9rs,       zBase._tscCs&|jdurdS|j|`d|_dS)z"Releases the RPM transaction set. N)rr?r<r8r8r9rs   c Cstjd}tj|_ttjjd|j D](}|j s@q2|j sHq2|j }|sXq2ttjjd|jtjtj|d}tj|d}d}z.tj|stj|ddtj||d d Wn8ttjjfyt}|j}tj||d d Yn0z|j|WnBtjjyN}z$t d } t!| |j|WYd}~n d}~00|r2|"q2|r||jj#$|j%j&d g||jS)z6Create the groups object to access the comps metadata.z loading compszGetting group metadataz%Adding group file from repository: %sgenz groups.xmlNi)modeT)destZcheck_timestampsFz1Failed to add groups file for repository: %s - %sbasearch)'rr#rrZCompsrrRrrrhriZ enablegroupsrrOZ getCompsFnrUospathrdirnameexistsmakedirsr decompressPermissionErrorrVZ MiscErrortempfileZNamedTemporaryFilenameZ_add_from_xml_filename CompsErrorrrr?Z_irrr]) r6rrrXZcomps_fnZgen_dirZgen_fileZ temp_filerZrr8r8r9rsL     &  zBase.read_compscCs*|jdur$|jj}t|jj|d|_|jS)zeauto create the history object that to access/append the transaction history information. N)r\)rr7r\r r)r6r\r8r8r9 _getHistorys zBase._getHistorycCs|Sr;)rr<r8r8r9rfz Base.cCs t|d|SNrsetattrrr8r8r9rscCs t|ddSrrr<r8r8r9rrfzDNF SWDB Interface Object)fgetfsetfdeldoccs:jj}t|}||}|D]H|}|d}j |dj d| ||ddq8| D]tj d|}t }g}|D](} t | |kr|d| q|| q|d} || |ddq|D]j d|}fdd|D}|} |vrf|jjd rf|} |D](} || } tj| | d krj| } qj||| fd d }tj||q|D]ȉ|}d}|D]}|jjkr|}qq|dur|d}n ||fd d|D}fdd }tj|||vrd||n|||j |dj dq| }|r6j!j"t#j$d}|j%|d||D]h|jjj&d}|r|d}||j'|||j d|} |(| q|S)Nrdddrrrdcs$g|]}|vs|jjkr|qSr8rrb all_obsoletedpkgr8r9rerfz*Base._goal2transaction..r csj|dSNZodr" pkg_addedr r<r8r9rrfz(Base._goal2transaction..cs$g|]}|vs|jjkr|qSr8r rbr r8r9re+rfcsj|dSrrrr<r8r9r-rfZuduflags)Zpkg__neqrrrZ))rr(rZlist_obsoleted_get_installonly_queryr installedlist_downgradesZobsoleted_by_packager"rZ add_downgradelist_reinstallsstrinsertrZ add_reinstall list_installs get_reasonfilterrr2r3ZTransactionItemReasonCompareZ add_installrrZmapall list_upgradespopremoveZ add_upgradeZ list_erasuresrjr~rPIGNORE_EXCLUDESrr set_reasonZ add_erase)r6rtsZinstallonly_queryZinstallonly_query_installedZobsZ downgradedZ nevra_pkg obsoletesZobs_pkgZ reinstalledreasonZobsoleteZreason_obsoletecbZupgradedrdZerasuresZremaining_installed_queryZtmp_remaining_installed_queryZ remainingr8)r r r6r9_goal2transactions                         zBase._goal2transactioncCs`|}|}|}g}g}|D].}||vrH|||dq(|||q(||fS)aJ See what packages in the query match packages (also in older versions, but always same architecture) that are already installed. Unlike in case of _sltr_matches_installed(), it is practical here to know even the packages in the original query that can still be installed. r)r_na_dict availabler)r6qinstZ inst_per_archZavail_per_archZavail_lZinst_lZnar8r8r9_query_matches_installedEs zBase._query_matches_installedcCs"|jj|d}t|S)z See if sltr matches a patches that is (in older version or different architecture perhaps) already installed. r)rjr~rrmatcheslist)r6sltrr-r8r8r9_sltr_matches_installedYszBase._sltr_matches_installedcsfddjDS)z5Get iterator over the packages installed by the user.c3s|]}j|r|VqdSr;)rZuser_installedrcr r<r8r9 bs z*Base.iter_userinstalled..)rjr~rr<r8r<r9iter_userinstalled`szBase.iter_userinstalledcCs0|j||jj|jj d}|jjr,|d|S)N)allow_uninstall force_bestZignore_weak_depsz./debugdata/rpms)runr7bestZinstall_weak_depsrlZwrite_debugdata)r6r allow_erasingretr8r8r9_run_hawkey_goales zBase._run_hawkey_goalcCsb|j|jjr|j|jjD]8}tj|}|j|j dddd}| }|j |q$dS)z Add exclude_from_weak from configuration and autodetect unmet weak deps exclude them from candidates to satisfy weak dependencies TFruN) rZreset_exclude_from_weakr7Zexclude_from_weak_autodetectZexclude_from_weakrrrrrjr+Zadd_exclude_from_weak)r6Z weak_excluderr~r8r8r9_set_excludes_from_weak_to_goalms    z$Base._set_excludes_from_weak_to_goalc Cs|d}|tjd}|j|j}|rJ||j |j n|j jsd|}||||j j|j jd||||s|j jdkr|tj|}tj|}n |||_|j||jduot |jdk}|r|j!}|rtj"|}|dur*||j#$|j%}||j&7}||j'7}||j(7}|j )|j*||S)zBuild the transaction set.NZdepsolver r)+_finalize_comps_transrr#rr"startrZ req_has_eraseZpush_userinstalledrjr~rrr7Zupgrade_group_objects_upgrade_build_comps_solverZ'_exclude_packages_from_installed_groupsZ add_protectedrZprotected_packagesr=r< debuglevelZ log_decisionsr_format_resolve_problems problem_rulesrVZ DepsolveErrorr)rendr}Z_rpm_limitationsrmr*Z run_resolvedrr rrZset_modules_enabled_by_pkgsetrk) r6r:excrrsolverrZgot_transactionZnew_pkgsr8r8r9resolve|sP              z Base.resolvecCsrt|ts|g}tjjgt|}|js|j |j |j r|j j sV|j j rd}t|drx|jrxd|j}nt|dr|jrd|j}|j}|dur|j}n|j}|jj|gg||jd|j||j|jd|_dSd}tt dtj!"|j#j$|j#j%}||j&|j|'}|rzt d}t(||D]}t(|q\tj)*|tt dtj+,d } tt d |j-|j.tjjj/|dd } |j0| } t1| d krV| 2D]}t3t d 4|qt dd} | D]} | dt5| 7} q|6| }|rJ| d|7} tj)7| ~ tt d|j8t9j:rWddS| |j |j tj+,d} tjjj/||d}|j#j;dkr|j|d}Wdn1s0Y| |j?|j|jdd}tj@A||j|D]}tB|q\|S)Nargs cmds)cmdline persistenceTzRunning transaction checkz%Error: transaction check vs depsolve:zTransaction check succeeded.ztransaction testzRunning transaction test)rrRPM: {}zTransaction test error: z %s zTransaction test succeeded.r3)displaysFzRunning transaction)r(cSs(g}|D]}|d|t|q|S)Nz{}: {})rrTr)actionZtsismsgstsir8r8r9 _pto_callbacksz*Base.do_transaction.._pto_callback)C isinstancerrZyumZrpmtransZLoggingTransactionDisplayr0r3rkrZupdateFailSafeDatargroupenvhasattrrIrrKrlastrdbCookieend_rpmdb_versionbegr4rEr*Zrun_pre_transactionZrun_transactionr+rRrrrZbuild_rpmdb_lockr7rrZ_populate_rpm_ts_run_rpm_checkerrorrVZTransactionCheckErrorr#rorderZcleanZRPMTransactionrr}messagesrrTr _trans_error_summaryrm isTsFlagSetr(RPMTRANS_FLAG_TESTrBrPr5_run_transactionZunload_removed_pluginsrZ_post_transaction_outputrS)r6ZdisplayrLoldZ rpmdb_versiontidrrSrrZtestcbZtserrors errstringZdescrsummaryr(Zdisplay_rUr8r8r9do_transactions                           , zBase.do_transactioncCsd}td}i}||D]t}|ddkr.rNzCould not run transaction.zTransaction couldn't start:)Z ts_all_fnZ ts_done_fnz$Failed to remove transaction file %s)9rur0r7Zhistory_record_packagesrjr~rrr8rr[rrZr\rRrSrrTrrZMAIN_PROG_UPPERrYrIrrKrvr]r4Z reset_nicernicerr#rr!Z_sync_rpm_trans_with_swdbrr}rarrVrmr rcr(rdrEgetattrr unlink_frOSErrorbool install_setr,_verify_transactionZverify_tsi_package)r6r(rgZusing_pkgs_patsinstalled_queryZ using_pkgsrpmdbvZlastdbvrLrvZoniceerrorsZfailedrrZrdfnr8r8r9reIs                zBase._run_transactioncsdd|jD}t|fdd}tjd}d}tj|}|}t dd|D}|j j D]8} | } | D]"} | |vr|| d| q|qh|D]} || j|}q|j} |j | |d|_dS) NcSsg|]}|jtjjkr|qSr8)rRr2r3Z#TransactionItemAction_REASON_CHANGErcrTr8r8r9resz,Base._verify_transaction..cs |d7}dur|||SNrr8)r counttotal verify_pkg_cbr8r9display_banners z0Base._verify_transaction..display_bannerzverify transactionrcSsg|] }|jqSr8r rbr8r8r9rerfT)r3r}rr#rrj rpmdb_sackr~rrrrWZgetCompsGroupItemZ getPackagesgetNameZ setInstalledrr rr[rEr+)r6rZtransaction_itemsrrrrr,namesZtigrrrTrr8rr9r~s,          zBase._verify_transactioncs|tj|jj|jj}|t}tdd|D}tdd|D} j j j dkrnj t||| dn t||tj |||rtjtfdd|D} tj d|j} |jj} | d k} jr| s| d kr| d kr| d 8} td }t|d djD}fd d|D}tdd|D} t||tj |||rtj| tfdd|D7} tj | |i} qވjrtjjj}t|Wdn1s0Y|dur|| || \}}||krx||kr>td}d||d}n"||kr`td}d||d}t||d|d|dS)Ncss|] }|jVqdSr;Z download_sizercZploadr8r8r9r4rfz1Base._download_remote_payloads..cSsg|]}t|tjjr|qSr8)rVrdrpmZ DeltaPayload)rcZpayloadr8r8r9rerfz2Base._download_remote_payloads..)Z total_drpmsc3s|]}|VqdSr;Z_bandwidth_usedrrr8r9r4s)rrrrz,Some packages were not downloaded. Retrying.cSsg|]}|qSr8r8r3r8r8r9rerfcs g|]}tj|tjjqSr8)rrX _pkg2payload RPMPayloadr3)progressr8r9rescss|] }|jVqdSr;rrr8r8r9r4sc3s|]}|VqdSr;rrrr8r9r4rfz?Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)dzIFailed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)i)rrZbuild_download_lockr7rrrsumr}r@__code__ co_argcountrXZ_download_payloadsZ_irrecoverablerVZ DownloadErrorZ_update_savingZ _recoverableretriesrrRrZ errmap2str)r6payloadsrrcallback_totalZ fail_fastrZ beg_downloadZest_remote_sizeZ total_drpmZ remote_sizeZsavingrZforeverrZremaining_pkgsrealZfullpercentr8)rrr9_download_remote_payloadsst       *     zBase._download_remote_payloadsc s||\}}|rzdur$tjtj|j|j j | dd|Dfdd|D}| |||j j r|D]P}|jrtj||jd}ntj|jj|jd}t||j j qdS)aDownload the packages specified by the given list of packages. `pkglist` is a list of packages to download, `progress` is an optional DownloadProgress instance, `callback_total` an optional callback to output messages about the download operation. NcSsg|] }|qSr8)localPkgr3r8r8r9re#rfz*Base.download_packages..cs$g|]}tj|jtjjqSr8)rrXrZ delta_factoryrr3rrr8r9re$s/)_select_remote_pkgsrr!ZNullDownloadProgressrZ DeltaInforjr~rr7Zdeltarpm_percentagerErrCZbaseurlrrrZget_local_baseurllocationlstriprXZpkgdirshutilcopy) r6Zpkglistrr remote_pkgsZ local_pkgsrr rr8rr9download_packagess(     zBase.download_packagesc Csg}|s |S|jr&tjtdg}|D]}tj|sdd|vrdtj ||j |}| |gz| |j|Wq.ty}z t|| |WYd}~q.d}~00q.|jdd|r|rttdd||S)NzACannot add local packages, because transaction job already existsz://T)rzCould not open: {}rJ)rZ req_lengthrrVrmrrrrrZ_urlopen_progressr7rErrjZadd_cmdline_packagerrRrnrrTr)r6 path_liststrictrpkgsZ pkgs_errorrrZr8r8r9add_remote_rpms2s*   " zBase.add_remote_rpmsc Cs|jr|jj}d}n|j|j}|j}|j }|r|jj}tj j |}tj j ||}tj|}~|dkrd} d} n|dkr|rd} nd} td|} n\|dkrd} td|} nB|dkr|rd} nd} d} td|} n|d krd} td |} nd} d} | | fS) aVerify the GPG signature of the given package object. :param po: the package object to verify the signature of :return: (result, error_string) where result is:: 0 = GPG signature verifies ok or verification is not required. 1 = GPG verification failed but installation of the right GPG key might help. 2 = Fatal GPG verification error, give up. rrkrrQz"Public key for %s is not installedzProblem opening package %srmz Public key for %s is not trustedrzPackage %s is not signed) _from_cmdliner7Zlocalpkg_gpgcheckrhrZgpgcheckgpgkeyr^rr(r3initReadOnlyTransactionZ miscutilsZcheckSigrrrbasenamer) r6pocheckZ hasgpgkeyrXrootr%Z sigresultZlocalfnresultrr8r8r9_sig_check_pkgJsF    zBase._sig_check_pkgcCs ||S)aVerify the GPG signature of the given package object. :param pkg: the package object to verify the signature of :return: (result, error_string) where result is:: 0 = GPG signature verifies ok or verification is not required. 1 = GPG verification failed but installation of the right GPG key might help. 2 = Fatal GPG verification error, give up. )rr6r r8r8r9package_signature_checks zBase.package_signature_checkc Csh|D]^}tj|sqzt|Wn&tyJttd|YqYq0t t j j td|qdS)NzCannot remove %sz %s removed) rrrr rzr{rRrnrrrr#r)r6packagesrr8r8r9rs    zBase._clean_packagesrrcCs|dur|jj}|dur*||||||Stj|r:Jtj|j||||d}|dusdt|dkrl|dSt ||}t dd|S)aRReturn a :class:`misc.GenericHolder` containing lists of package objects. The contents of the lists are specified in various ways by the arguments. :param pkgnarrow: a string specifying which types of packages lists to produces, such as updates, installed, available, etc. :param patterns: a list of names or wildcards specifying packages to list :param showdups: whether to include duplicate packages in the lists :param ignore_case: whether to ignore case when searching by package names :param reponame: limit packages list to the given repository :return: a :class:`misc.GenericHolder` instance with the following lists defined:: available = list of packageObjects installed = list of packageObjects upgrades = tuples of packageObjects (updating, installed) extras = list of packageObjects obsoletes = tuples of packageObjects (obsoleting, installed) recent = list of packageObjects N)showdups ignore_caserzrcSs ||Sr;)Z merge_lists)abr8r8r9rrfz(Base._do_package_lists..) r7Zshowdupesfromrepos _list_patternrris_string_typerpartialr}mapr)r6 pkgnarrowpatternsrrrzZlist_fnZyghsr8r8r9_do_package_listss  zBase._do_package_listsc&slfddfdd}fdd}tj|d}g} g} g} g} g} g}g}g}g}g}|}j}|durtjj||d}|jjd d }|d kri}i}|D]<}|||j <|rq|j |j f}||vs|||kr|||<qt || } ||}|s|jd d }|D]}|rH|j |vr<| |n | |nT|j |j f}|j |vrl| |n0||vs|||r| |n | |qn|dkr||jd d} j| d d} | jddgd| } n@|dkr t ||} n"|dkr.|r||}|}|D]Tj j f}||g}fdd|D}t|dkr~| n | q6n||jd d }|}|D]p\} }!|| |!fd|| |!fdgd}"|"r|"r| n"|"r| n | qn|dkrT||jj}#|#}n|dkrvfdd|D}n|dkr|}$|jj|$d}j|d d d}|jddgdg}|D],j}%|fdd|$j|%d Dqn6|d!kr,|}|s|jd d }|| j!j"}| |_| |_| |_#| |_$| |_%||_||_&||_"||_||_'|S)"Ncsdur dSj|kS)z:Test whether given package originates from the repository.NTrrX)packagerzr6r8r9 is_from_reposz(Base._list_pattern..is_from_repocsfdd|DS)=Filter out the packages which do not originate from the repo.c3s|]}|r|VqdSr;r8)rcrrr8r9r4rfz=Base._list_pattern..pkgs_from_repo..r8)rrr8r9pkgs_from_reposz*Base._list_pattern..pkgs_from_repocsdur |S|jdS)rNry)r)r~ryr8r9query_for_reposz*Base._list_pattern..query_for_repo)iterrF)rwrrTZlatest_per_arch_by_priorityupgrades)Zupgrades_by_priority)upgradesrcnosrcZ arch__neqrr+csg|]}|jjkr|qSr8)evrr3) avail_pkgr8r9re%s z&Base._list_pattern..r autoremoveextrascsg|]}|r|qSr8r8r3rr8r9reArfr&)Zobsoletes_by_priority)rnrcsg|] }|fqSr8r8)rcrf)newr8r9rePrfprovidesrecent)(r Z GenericHolderrjr~rrrrrZpkgtuprrr0rr+rrZevr_gt_merge_update_filterslatestr8r*rr}Zevr_eq _unneededrswdbrrr&extendZ_recentr7rreinstall_available old_availableupdatesobsoletesTuplesr)&r6rpatternrrrzrrZyghrr+rrrr&rrrrZicr,rZdinstZndinstrkeyZavailr Zinstalled_dictinstalled_pkgsZsame_verZavailable_dictrrZinst_pkgZ autoremove_qr-Zobsoleted_reldepsr8)rrrrzr6r9rs                                        zBase._list_patterncCs|j|7_t|Sr;)rr})r6transr8r8r9_add_comps_transgszBase._add_comps_transcs|}|sdS|jjjdd}|jfdd|Dd}||}|D]}j|tjj qJ| |}| |}|r|D]}j j |j jdq~dS)z Mark to remove packages that are not required by any user installed package (reason group or user) :param query: dnf.query.Query() object NFrlcs g|]}jj|jr|qSr8)rrWZis_removable_pkgrrbr<r8r9rewrfz,Base._remove_if_unneeded..r clean_deps)rZ_safe_to_removerrr differencer$r2r3Z TransactionItemReason_DEPENDENCY intersectionreraser7clean_requirements_on_remove)r6r~Z unneeded_pkgsZunneeded_pkgs_historyZpkg_with_dependent_pkgsr Zremove_packagesr8r<r9_remove_if_unneededks   zBase._remove_if_unneededcs:j}jjd}fdd}fdd}dd}jjdd }|jtj|dd f|j tj|d d f|j |f|j |ff}|D]\}} |D]} d | j i} | j r| d |ijjfi| } | jddgd| s | j } | j r| d|7} ttd| q| | || }jj| j qq|dS)Nrcs,tjj}|j|djj|d|S)Nrselect)rselectorSelectorrjrrr)r~ remove_query comps_pkgr1r<r8r9 trans_upgrades z1Base._finalize_comps_trans..trans_upgradecs jjdkrr|js"j||dnN|}|tj j }|j d |j |jdjj|| dntj j }|jr|j d |j |jdnVjjr|r|j j|d}n |j j|jddd}|j |d jj|| d|S) Nrrrz ({} if {})rrZoptionalr&Trr)r7multilib_policyZrequires_install_multiarchrr_report_already_installedrrrrjrrTrrinstallr&rr~rr)r~rrrrr1r<r8r9 trans_installs(     z1Base._finalize_comps_trans..trans_installcSs||}|Sr;)r)r~rrr8r8r9 trans_removes z0Base._finalize_comps_trans..trans_removeTrsrFrrrrr.zNo match for group package "{}")rr7r]rjr~rrrr install_optrr"rZ basearchonlyrBrrRrnrrTrZ group_membersrr)r6rrrrrrZattr_fnattrrrZ query_argsr,Zpackage_stringr8r<r9r?s6       zBase._finalize_comps_transcs fdd}tjjj|S)NcsRjj|d}|sdSzjj|dWStyLtj j YS0dS)Nr r) rjr~rrrr(rAttributeErrorr2r3ZTransactionItemReason_UNKNOWN)Zpkgnamer,r<r8r9 reason_fns z+Base._build_comps_solver..reason_fn)rrZSolverrr)r6rr8r<r9rAs zBase._build_comps_solvercCsXtj|sJ|}t|ts.tj|}| |||p>t ||}|sNdS| |S)a&Installs packages of environment group identified by env_id. :param types: Types of packages to install. Either an integer as a logical conjunction of CompsPackageType ids or a list of string package type ids (conditional, default, mandatory, optional). r) rrrrArVrr2r3listToCompsPackageTypeZ_environment_installrr)r6env_idtypesexcluderexclude_groupsrGrr8r8r9environment_installs  zBase.environment_installcCs,tj|sJ|}||}||Sr;)rrrrAZ_environment_removerr6r rGrr8r8r9environment_removes zBase.environment_removec sfddtj|sJd}|rBfdd|D}tj|}}t|ts`t j |}| ||||}|sxdS|r|j } n|j} ttd|| |S)anInstalls packages of selected group :param pkg_types: Types of packages to install. Either an integer as a logical conjunction of CompsPackageType ids or a list of string package type ids (conditional, default, mandatory, optional). :param exclude: list of package name glob patterns that will be excluded from install set :param strict: boolean indicating whether group packages that exist but are non-installable due to e.g. dependency issues should be skipped (False) or cause transaction to fail to resolve (True) cs6tj|r,jj|d}tdd|S|fSdS)NZ name__globcSs|jSr;r )rrr8r8r9rrfzABase.group_install.._pattern_to_pkgname..)rris_glob_patternrjr~rr)rr,r<r8r9_pattern_to_pkgnames z/Base.group_install.._pattern_to_pkgnameNcsg|] }|qSr8r8)rcrr)rr8r9rerfz&Base.group_install..rz#Adding packages from group '%s': %s)rrr itertoolschain from_iterablerArVrr2r3r Z_group_installrrrRrSrr) r6grp_idZ pkg_typesr rZexclude_pkgnamesZnested_excludesrGrZinstlogr8)rr6r9 group_installs&     zBase.group_installc Cst|j|jtjtjBtj}d}d}|D]} z|| } WnFtjj y} z*t t | d}WYd} ~ q(WYd} ~ n d} ~ 00| j D]&} |r| |vr||j| |||d7}q| jD]} ||j| ||||d7}qq(|s|rtjtd|S)NrTF)r r)r rr zNothing to do.)rrr ENVIRONMENTSGROUPS AVAILABLErrrVrrRr_r groupsr environmentsrrmr)r6rr rr r r,cntdonerreserrZgroup_idr r8r8r9env_group_installs,"    zBase.env_group_installcCs,tj|sJ|}||}||Sr;)rrrrAZ _group_removerr6rrGrr8r8r9 group_remove0s zBase.group_removec Cst|j|jtjtjBtj}z|j|}WnHtjj yr}z,t dt |tj tdWYd}~n d}~00d}|jD]}|||7}q~|jD]}|||7}q|S)Nz Warning: %szNo groups marked for removal.r)rrrrr INSTALLEDrrrVrrRr_r rmrrrrr$)r6rr,r r!rrXgrpr8r8r9env_group_remove7s  &  zBase.env_group_removec Csbt|j|jtjtjBtj}d}|D]}z||}WnBtjj yz}z&t t |WYd}~q$WYd}~n d}~00|j D]Z}z||d}Wqtjj y}z&t t |WYd}~qWYd}~qd}~00q|jD]\}z||d}Wqtjj y>}z&t t |WYd}~qWYd}~qd}~00qq$|s^td} tj| dS)NFTzNo group marked for upgrade.)rrrrrr%rrrVrrRr_r renvironment_upgrader group_upgraderrZCliError) r6rr,Zgroup_upgradedrr r!rXr&rr8r8r9env_group_upgradeGs8   "  $  &zBase.env_group_upgradecCs,tj|sJ|}||}||Sr;)rrrrAZ_environment_upgraderrr8r8r9r(ds zBase.environment_upgradecCs,tj|sJ|}||}||Sr;)rrrrAZ_group_upgraderr#r8r8r9r)ks zBase.group_upgradecCs|jjd}tj|rdS|jj}tjjj |d}| tj tj B| dd}t|}~~|dkrldStj|}tj|st|t|d}|~dSdS) zChecks for the presence of GPG keys in the rpmdb. :return: 0 if there are no GPG keys in the rpmdb, and 1 if there are keys z/.gpgkeyschecked.yumr)rrz gpg-pubkeyrwN)r7rrrrr^rr(r3rr_RPMVSF_NOSIGNATURES_RPMVSF_NODIGESTSZdbMatchr}rropenr?)r6Zgpgkeyscheckedr^ZmytsidxkeysZmydirfor8r8r9_gpg_key_checkrs&       zBase._gpg_key_checkc Cs||\}}|||D]~}tj|j}|jj|d}|jj rh| |jj|j ddd}|j |d}|dur|j |d}|j j|| dqt|S)NrTrrryr)r.rrrrrjr~rr7r&rrrrrr}) r6r~rzr already_instr+rr1r,r8r8r9rs    zBase._install_multiarchcCs,t}t}t||t||||fS)a Categorize :param install and :param exclude list into two groups each (packages and groups) :param install: list of specs, whether packages ('foo') or groups/modules ('@bar') :param exclude: list of specs, whether packages ('foo') or groups/modules ('@bar') :return: categorized install and exclude specs (stored in argparse.Namespace class) To access packages use: specs.pkg_specs, to access groups use: specs.grp_specs )argparse Namespacer )r6rr  install_specs exclude_specsr8r8r9_categorize_specss   zBase._categorize_specscsddd|jDfdd|jD}|jj|d}|jjd}|j||j|dS)NcSsg|]}tj|r|qSr8)rrrrcr r8r8r9res z/Base._exclude_package_specs..csg|]}|vr|qSr8r8r9Z glob_excludesr8r9resr r) pkg_specsrjr~rr)r6r7excludesrZglob_exclude_queryr8r:r9_exclude_package_specss  zBase._exclude_package_specsc Cst}t|j|jtjtjBtjtjB}|D]}z||}WnDt j j y}z(t dt|WYd}~q,WYd}~n d}~00||j||j|jD]*}|j|}|D]} || jqqq,t|S)NzWarning: Module or %s)rrrrrrrr%rrrVrrRr_r rBrrZ_environment_by_idZ groups_iterrrUr0) r6 group_specsrr,rr r!Zenvironment_idZ environmentrWr8r8r9_expand_groupss$   "     zBase._expand_groupsc Cs|D]v}zL|jj}d|vr:|d}|d}|dd}||g|||j|jWqtjjyx| d|Yq0qdS)Nrrr,@) r7Zgroup_package_typessplitr"r; grp_specsrrVrmr)r6r>r<ZskippedrZ group_specr rBr8r8r9_install_groupss zBase._install_groupsc Cs|dur g}g}g}g}g} |||\} } || | jD]\} z|j| |||dWq<tjjy} z$tt | | | WYd} ~ q||gnV|tj |vrft j td|jn.t j|j}|j|gd|jj|| ddS)NrWrrr)rjr~_nevrarrrr.rrrrrrVPackageNotFoundErrorrrrrrrr)r6r rr,r3r+r1r8r8r9package_installNszBase.package_installcCsf|jj|j|j|jdr0|j|dSt d}t |t |t jt d|j|jdS)N)rrrrz.Package %s not installed, cannot reinstall it.rW)rjr~rrrrrrrrrRrnrrrVrKr)r6r rr8r8r9package_reinstall\s   zBase.package_reinstallcCs|j|dSr)rrrr8r8r9package_removeds zBase.package_removecCs`|jrd}t||jdkr6td}t||jdS|j }|j j r|jj |gdj |drtj|j}|j|gd|jj|ddS|jd kr|j|jd }n|j|j|jd gd }|std }t||jtjtd |j|jnZt|d|krBtj|j}|j|gd|jj|ddStd}t||jdSdS)Nz+upgrade_package() for an installed package.rz.r rryT)rSrcSsg|] }|jqSr8r r3r8r8r9rerfrrr)rjr~rrrr+rrrrrrrrrrr) r6r~r&rzrSZ installed_allr,rr1r8r8r9_upgrade_internals""     zBase._upgrade_internalc Csvtj|}||j}|d}|r\tj|}|s,|dr,|djr,|dj}|j }|j j r~|j |dn|jjdd} | s,|j |d } | std} t| |tjtd||nV|djr,tj|djs,| j|djd s,td } t| d ||dj|j j oJ|doJ|d} ||| ||Stjtd||dS) Nr~nevrarTrsr z(Package %s available, but not installed.rW)rz?Package %s available, but installed for different architecture.z{}.{})rrrrPrjrrrr~rrr7r&rrrrRrnrVPackagesNotInstalledErrorrrTZ has_just_namerbrK) r6rSrzrrOr,Zwildcardpkg_namerZ obsoletersZinstalled_namerr&r8r8r9rs:        z Base.upgradecCs|j|j|jj|ddS)N)rS)rbrjr~r7r&)r6rzr8r8r9 upgrade_allszBase.upgrade_allcCs|dur|jnttj|}|j|jdd}|djtj d|j |||j j dd}|spt td|dS|D]}|jj|d qtd S) NF)rMr~Z reponame__neqT)rOr&rNzNo package %s installed.rrr)rZdistupgrade_allrrrrPrjrrPZSYSTEM_REPO_NAMErRr7r&rRrrZ distupgrade)r6rSrrOrUr1r8r8r9 distro_syncs  zBase.distro_syncc Cst|||gr||7}d}|rB|rB|D]}td}t||q&n|rT||rTd}|D]R}z|j||dWn6tjjy} zt t | WYd} ~ qXd} ~ 00d}qX|sttdn0|j j |jj|jjd} | D]} || qdS)zRemoves all 'leaf' packages from the system that were originally installed as dependencies of user-installed packages but which are no longer required by any such package.FzNot a valid form: %sT)rENzNo packages marked for removal.r)anyrrRrnr'r"rrVrKrrrjr~rrrr7rlr`) r6rEr;rC filenamesrZgrp_specrrSrZrr r8r8r9rs. $zBase.autoremovec sd|i}|r$d|d<d|d<d|d<tj|jjfi|}fdd|D}|sj||jj}|D]}j j ||d qvt |S) z'Mark the specified package for removal.rETrvFrwrxcs(g|] }dus j|kr|qSr;rr3rr8r9re szBase.remove..r) rrrrrjr"_raise_package_not_installed_errorr7rrrr}) r6rSrzrErTr/rrr r8rr9r" s z Base.removec s0tj|}|j}fdd|D}|} |durL| j|d|dur`| j|dtj | } |stj d|| d} j j} j j} |D]t}z| t|}Wn*ty|sYqjj|| dYn.0tjj}|j|djj|| d | d 7} q| dkr,tj d||| S) Ncs(g|] }dus j|kr|qSr;rr3 old_reponamer6r8r9re& sz"Base.reinstall..ryrgzno package matchedrrrrr)rrrrrjrr+rr~Z_per_nevra_dictrVrdr8r7rrr KeyErrorrrrrrrZPackagesNotAvailableError)r6rSrmZ new_reponameZnew_reponame_neqZ remove_narr,rZ available_qZavailable_nevra2pkgrrrZ installed_pkgavailable_pkgsr1r8rlr9 reinstall" sD           zBase.reinstallcCs ||S)zMark a package to be downgraded. This is equivalent to first removing the currently installed package, and then installing an older version. ) downgrade_to)r6rSr8r8r9 downgradeL szBase.downgradec Cstj|}||j}|s6td|}tj||d}|}t | }|j j|d} t| dkrtd|}tj|||| D]^} |j| d} | std}t|| qtj|j} | j| d|jj| | dd}q|S) zDowngrade to specific version if specified otherwise downgrades to one version lower than the package installed. rWrr z6Packages for argument %s available, but not installed.zDPackage %s of lowest version already installed, cannot downgrade it.rrr)rrrrrjrrVr]r+r0 _name_dictr0r~rrr}rdZ downgradesrrRrnrrrrr) r6rSrrr,rrroZavailable_pkg_namesZ q_installedreZdowngrade_pkgsr1r8r8r9rqV s.       zBase.downgrade_tocs|jjd}|r |gfStj|j}|r>|gfSdsRdr^dg}n&drr|gfSfdddD}|jj|d|fS) N)Z file__glob/bin//sbin/z/usrrcsg|] }|qSr8r8)rcprefix provides_specr8r9re sz!Base.provides..)rtruz /usr/bin/z /usr/sbin/)rjr~rrZ _by_provides startswith)r6rxZ providersZbinary_providesr8rwr9rr s      z Base.providesc Csddd}||vrtd||}|rDd|} |j| t||rfd|} |j| t||rd|} |j| t||rd|} |j| t||rd |} |j| t|d S) a It modifies results of install, upgrade, and distrosync methods according to provided filters. :param cmp_type: only 'eq' or 'gte' allowed :param types: List or tuple with strings. E.g. 'bugfix', 'enhancement', 'newpackage', 'security' :param advisory: List or tuple with strings. E.g.Eg. FEDORA-2201-123 :param bugzilla: List or tuple with strings. Include packages that fix a Bugzilla ID, Eg. 123123. :param cves: List or tuple with strings. Include packages that fix a CVE (Common Vulnerabilities and Exposures) ID. Eg. CVE-2201-0123 :param severity: List or tuple with strings. Includes packages that provide a fix for an issue of the specified severity. Z__eqgZ __eqg__gt)eqZgtez Unsupported value for `cmp_type`Z advisory_typeadvisoryZ advisory_bugZ advisory_cveZadvisory_severityN)rr/ setdefaultrrB) r6Zcmp_typer r{ZbugzillaZcvesZseverityZcmp_dictcmprr8r8r9add_security_filters s& zBase.add_security_filterscCs i|_dS)z, Reset all security filters N)r/r<r8r8r9reset_security_filters szBase.reset_security_filtersc Cs4|js |jr|s|S|jjdd}|jrJ|jD]}||}q2|g|_|jr|jD]2\}}|rn|d}||i} ||jfi| }qZ||}|s0|r0| }t | } | dkr0|durt d| } t d| } tt| | | n2t d|| } t d || } tt| | | |S) z Merge Queries in _update_filters and return intersection with q Query @param q: Query @return: Query TrsZ __upgraderNz3No security updates needed, but {} update availablez4No security updates needed, but {} updates availablez._prov_key_dataFrz)GPG key at %s (0x%s) is already installedTzThe key has been approved.zThe key has been rejected.)ruseridZhexkeyidkeyurl fingerprint timestampzKey import failed (code %d)zKey imported successfullyzDidn't install any keyszThe GPG keys listed for the "%s" repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository.z+Import of key(s) didn't help, wrong key(s)?N)4rrrrhrrUr1rrrZcryptoZretriever Z keyInstalledrZrpm_idrrRrZshort_idr7rrZKeyInfoZfrom_rpm_key_objectrZraw_keyZDNSSECKeyVerificationZverifyZ nice_user_msgurlZlog_dns_key_importZlog_key_importZassumenoZ assumeyesZValidityZVALIDZPROVEN_NONEXISTENCEZany_msgrrcr(rdZ getTsFlagsrZpgpImportPubkeyZ procgpgkeyrVrmrrr )r6raskcb fullaskcbrZ key_installedZkeyurlsrZ user_cb_failrr0rZ dns_input_keyZ dns_resultrcZ test_flagZ orig_flagsrerrmsgr8rr9_get_key_for_package s                   zBase._get_key_for_packagecCs||||dS)aRetrieve a key for a package. If needed, use the given callback to prompt whether the key should be imported. :param pkg: the package object to retrieve the key of :param askcb: Callback function to use to ask permission to import a key. The arguments *askcb* should take are the package object, the userid of the key, and the keyid :param fullaskcb: Callback function to use to ask permission to import a key. This differs from *askcb* in that it gets passed a dictionary so that we can expand the values passed. :raises: :class:`dnf.exceptions.Error` if there are errors retrieving the keys N)r)r6r rrr8r8r9package_import_key` szBase.package_import_keycCs0g}|j|jD]}|t|q|Sr;)rrZproblemsrr )r6resultsZprobr8r8r9r^q s  zBase._run_rpm_checkw+bcKstjj||j||fi|S)z Open the specified absolute url, return a file object which respects proxy setting even for non-repo downloads )rrZ_urlopenr7)r6rrXrrTr8r8r9urlopen| sz Base.urlopencCs,|dur|jjtjd}|j|jjd}|S)Nrr)rr~rPr#rr7r)r6r,Z installonlyr8r8r9r szBase._get_installonly_querycCsrtjj|dd}|j|jdddd}|drn|drn|djrn||ddjkrnttd |ddjdS) NTrFrur~rcrz * Maybe you meant: {}) rrrrPrjrrRrrrT)r6rSrrOr8r8r9_report_icase_hint s zBase._report_icase_hintcCsdd}g}g}|D].}|r8|jtjkrB||q||qtd}|||sftjtd|j j rtd}|||stjtdg}||fS)a  Check checksum of packages from local repositories and returns list packages from remote repositories that will be downloaded. Packages from commandline are skipped. :param install_pkgs: list of packages :return: list of remote pkgs c Ssvd}|D]h}d}z |}Wn2tyN}ztt|WYd}~n d}~00|durt|||jd}q|S)NTF)ZverifyLocalPkgrQrRrrrTrz)Zpkg_listZ logger_msgZall_packages_verifiedr Zpkg_successfully_verifiedrZr8r8r9_verification_of_packages s $z;Base._select_remote_pkgs.._verification_of_packagesz>Package "{}" from local repository "{}" has incorrect checksumz;Some packages from local repository have incorrect checksumz8Package "{}" from repository "{}" has incorrect checksumzVSome packages have invalid cache, but cannot be downloaded due to "--cacheonly" option) Z _is_local_pkgrzrPZCMDLINE_REPO_NAMErrrrVrmr7r)r6Z install_pkgsrrZlocal_repository_pkgsr rr8r8r9r s*     zBase._select_remote_pkgscCs|D] }t|qdSr;)_msg_installed)r6rr r8r8r9r szBase._report_already_installedc Cs|jjtjd}tj|}|j|j|d|d}|durH|dj|d|dsdtj t d|nB|jjtj d}|d |}|rt d}nt d}tj ||dS) NrFrErMr~r~ryNo match for argument?All matches were filtered out by exclude filtering for argumentz?All matches were filtered out by modular filtering for argument)rjr~rPr#rrrrPrrVr]rZIGNORE_REGULAR_EXCLUDESr) r6rSrErz all_queryrrOZwith_regular_queryrr8r8r9rQ s   z#Base._raise_package_not_found_errorc sjjtjd}tj|}|jj|d|d}|dsNtj t d|durpfdd|dD}n|d}|st d}nt d }tj ||dS) NrFrr~rcs g|]}j|kr|qSr8rr3rr8r9re rfz;Base._raise_package_not_installed_error..zCAll matches were installed from a different repository for argumentr) rjr~rPr#rrrrrPrVrdr) r6rSrErzrrrOrrr8rr9rk s   z'Base._raise_package_not_installed_errorcCs|jj|jdddS)z Setup DNF file loggers based on given configuration file. The loggers are set the same way as if DNF was run from CLI. T)Zfile_loggers_onlyN)r$Z_setup_from_dnf_confr7r<r8r8r9 setup_loggers szBase.setup_loggersc s|jjtjtjBtjB@r d}nd}t|j}|j|dd}|jfi|}|sn|rnt j | }t |t|jdd}t|jdd|} ddfdd|Dtfd d|D} tfd d| D} | | fS) zreturns set of conflicting packages and set of packages with broken dependency that would be additionally installed when --best and --allowerasingTF)r6r7Z ignore_weak)r+cSstj|j|j|j|j|jdS)N)repochversionreleaser)rPZNEVRArrrrr)itemr8r8r9r\ sz&Base._skipped_packages.._nevracsg|] }|qSr8r8r)r\r8r9re rfz*Base._skipped_packages..csg|]}|vr|qSr8r8r3r\Ztransaction_nevrasr8r9re rfcsg|]}|vr|qSr8r8r3rr8r9re rf)ractionsrPZINSTALLZUPGRADEZ UPGRADE_ALLrr0r8rrrCrDrRrnrproblem_conflictsZproblem_broken_dependency) r6Zreport_problemsr3r9Zngparamsr;rrZproblem_dependencyZskipped_conflictsZskipped_dependencyr8rr9_skipped_packages s.  zBase._skipped_packagescs8|js dStd|jj|jjB}tfdd|DS)zfCheck whether a system reboot is recommended following the transaction :return: bool F) Zkernelz kernel-rtZglibczlinux-firmwareZsystemdZdbusz dbus-brokerz dbus-daemonZ microcode_ctlc3s|]}|jvVqdSr;r r3Z need_rebootr8r9r4 rfz%Base.reboot_needed..)r3 frozensetr}Z remove_setri)r6Z changed_pkgsr8rr9 reboot_needed s zBase.reboot_needed)N)F)r8r8N)F)TT)T)N)FFF)F)F)r8)N)T)NN)TN)rrNNFN)N)NTN)NT)TNN)NT)T)NNTN)NTN)F)T)N)N)N)N)NNNN)NN)NNNF)F)r8r8r8r8r8)NTF)NN)NN)Nr)N)__name__ __module__ __qualname__r:r=r@rArEr[ staticmethodrrqrrpropertyrr7rhdeleterrrZlazyattrrrjrkr3setterrrrrrrrrrr?rrrr(ZRPMTRANS_FLAG_NOSCRIPTSZRPMTRANS_FLAG_NOTRIGGERSZRPMTRANS_FLAG_NODOCSrdZRPMTRANS_FLAG_JUSTDBZRPMTRANS_FLAG_NOCONTEXTSZRPMTRANS_FLAG_NOFILEDIGESTrrYrr,r-rrrrrrr)r.r2r5r<r=rHrjrbrurer~rrrrrrrrrrr?rArrrr"r$r'r*r(r)r2rr8r=r?rDr6rr[r^r_r`rarbrrfrhrr"rprrrqrr~rrrrr^rrrrrrQrkrrrr8r8r8r9r\s(   =             8 ; > =      +^ ; l"^ * C  ;  * F  *     / #  % &    #  *  % )    -rcCs t|}td}t||dS)Nz Package %s is already installed.)r rrRr)r rrr8r8r9r sr)I__doc__Z __future__rrrrr4rZlibdnf.transactionr2rrZ dnf.compsrZdnf.i18nrr r Zdnf.utilr Zdnf.db.historyr Zdnf.yumr collections.abcr ImportError collectionsrZ dnf.callbackZdnf.confZ dnf.conf.readZ dnf.cryptoZ dnf.dnssecZdnf.drpmZdnf.exceptionsZdnf.goalZ dnf.historyZdnf.lockZ dnf.loggingZdnf.module.module_baser|Z dnf.persistorZ dnf.pluginZ dnf.queryZdnf.repoZ dnf.repodictZdnf.rpm.connectionZdnf.rpm.miscutilsZdnf.rpm.transactionZdnf.sackZ dnf.selectorZ dnf.subjectZdnf.transactionZdnf.yum.rpmtransrrrPrr#rqrrrnr(rrrZ getLoggerrRobjectrrr8r8r8r9s            Y