VULN_CHECK_I913V6 j&,dZddlmZddlmZddlmZddlZddlZddl Zddl Zddl Z ddl Z ddlZ ddlZddlZddlZej$dZGdde j(Zy) z! Contains the dnf.Package class. )absolute_import)unicode_literals)_Ndnfc\eZdZdZdZdZfdZefdZejdZedZ edZ ed Z ed Z ed Zefd Zejd ZedZedZedZedZdZedZedZedZedZedZejdZedZedZedZedZedZedZedZ d Z!d!Z"d"Z#d#Z$d$Z%d*d%Z&d&Z'ed'Z(d(Z)d)Z*xZ+S)+Packagez Represents a package. #:api z -debuginfoz -debugsourcecdtt| |||_d|_d|_d|_yN)superr__init__base _priv_chksum_repo _priv_size)self initobjectr __class__s 0/usr/lib/python3.12/site-packages/dnf/package.pyr zPackage.__init__0s/ gt%j1   c|jr |jS|jr}tjjj } t jj||j}tj |t#j$|fSt&t(|VS#t jj$r-}tjjt|d}~wwxYwr )r _from_cmdlineryummiscget_default_chksum_typelibdnfutilschecksum_valuelocationerrorError exceptions MiscErrorstrhawkey chksum_typebinascii unhexlifyr rchksum)rr% chksum_valers r_chksumzPackage._chksum7s   $$ $   '',,>>@K 7#\\88dmmT &&{3&&z24 4Wd** <<%% 7nn..s1v66 7s*B11C;(C66C;c||_yr )rrvals rr+zPackage._chksumEs rc<|jtjk(Sr )reponamer$CMDLINE_REPO_NAMErs rrzPackage._from_cmdlineIs}} 8 888rc<|jtjk(Sr )r0r$SYSTEM_REPO_NAMEr2s r _from_systemzPackage._from_systemMs}} 7 777rcd}|jr%|jjj|}|rd|zS|jS)a9 For installed packages returns id of repository from which the package was installed prefixed with '@' (if such information is available in the history database). Otherwise returns id of repository the package belongs to (@System for installed packages of unknown origin) N@)r5r historyrepor0)rpkgrepos r _from_repozPackage._from_repoQsC   ii'',,T2G = }}rcf|jr%|jjj|Sy)N)r5r r8r9r2s r from_repozPackage.from_repo`s+   99$$))$/ /rc\tjj|jS)z Returns the header of a locally present rpm package file. As opposed to self.get_header(), which retrieves the header of an installed package from rpmdb. )rrpm_headerlocalPkgr2s rrAzPackage._headergswwt}}//rcP|jr |jStt|Sr )rr rsize)rrs r_sizez Package._sizeps! ???? "Wd((rc||_yr )rr-s rrEz Package._sizevs rcd|jy|j\}}tj|Sr ) hdr_chksumr&hexlify)rrr(s r_pkgidzPackage._pkgidzs- ?? "oo F''rc|jAtjj|jd}|j ddd}|Sd}|S)zO returns name of source package e.g. krb5-libs -> krb5 Nz.src.rpm-r) sourcerpmrutilrtrimrsplit)rsrcnames r source_namezPackage.source_namesP >> %hhnnT^^Z@G nnS!,Q/GGrc|jj|jr |jS|j}|jj|jr|dt |j }||jzS)a) Returns name of the debuginfo package for this package. If this package is a debuginfo package, returns its name. If this package is a debugsource package, returns the debuginfo package for the base package. e.g. kernel-PAE -> kernel-PAE-debuginfo N)nameendswithDEBUGINFO_SUFFIXDEBUGSOURCE_SUFFIXlen)rrUs r debug_namezPackage.debug_namess 99  d33 499 yy 99  d55 66#d55667Dd++++rch|j |jn |j}||jzS)zv Returns name of the debugsource package for this package. e.g. krb5-libs -> krb5-debugsource )rSrUrXrsrc_names rdebugsource_namezPackage.debugsource_names1(,'7'7'C4##$1111rc|jsy t|jjj t j |jS#t$r*tjjdt|wxYw)a` Returns the rpm header of the package if it is installed. If not installed, returns None. The header is not cached, it is retrieved from rpmdb on every call. In case of a failure (e.g. when the rpmdb changes between loading the data and calling this method), raises an instance of PackageNotFoundError. Nz4Package not found when attempting to retrieve header) r5nextr _tsdbMatchr@RPMDBI_PACKAGESrpmdbid StopIterationrr!PackageNotFoundErrorr#r2s r get_headerzPackage.get_headersp   y --c.A.A4<<PQ Q y..556lnqrvnwx x ys AA3B ch|j |jn |j}||jzS)z returns name of debuginfo package for source package of given package e.g. krb5-libs -> krb5-debuginfo )rSrUrWr\s rsource_debug_namezPackage.source_debug_names1(,'7'7'C4##$////rc,t|jS)z: Always type it to int, rpm bindings expect it like that. )intrdr2s ridxz Package.idxs4<<  rc|jSr r0r2s rrepoidzPackage.repoid }}rc|j|jt|j|j|j fSr )rUarchr#r*vrr2s rpkgtupzPackage.pkgtups+ 499c$&&k466466BBrcx|jr |jS|jj|jSr )rr reposr0r2s rr9z Package.repos* :::: yyt}}--rc||_yr )rr-s rr9z Package.repos  rc|jtjk7ry|jjj j |Sr )ror$r4r r8r@get_reason_namer2s rreasonzPackage.reasons8 ;;&11 1yy  $$44T::rc|jSr )rr2s r relativepathzPackage.relativepathrprc|jSr )rrr2s raz Package.as yyrc|jSr )epochr2s rr*z Package.es zzrc|jSr )versionr2s rrsz Package.v ||rc|jSr )releaser2s rrtz Package.rrrc|jSr rnr2s r ui_from_repozPackage.ui_from_reporprc*|j|dk(SNrevr_cmprpkgs revr_eqzPackage.evr_eqs||C A%%rc*|j|dkDSrrrs revr_gtzPackage.evr_gt ||C 1$$rc*|j|dkSrrrs revr_ltzPackage.evr_lt rrc|jSr )medianrr2s r getDiscNumzPackage.getDiscNums ||rc*|jr |jS|j}|jjj rd|j rX|j j dr=tjj|j|jdS|jstjj|}tjj|j|jdS)z Package's location in the filesystem. For packages in remote repo returns where the package will be/has been downloaded. file:///)rrr9risLocalbaseurl startswithospathjoinget_local_baseurllstrip _is_local_pkgbasenamepkgdir)rlocs rrBzPackage.localPkgs   == mm 99?? " " $$,,:Q:QR[:\77<< 6 6 8#**S/J J!!#''""3'Cww||DKKC99rc|js |jry|jrCtjj |j|j jdS|jj|j |S)a The location from where the package can be downloaded from. Returns None for installed and commandline packages. :param schemes: list of allowed protocols. Default is ('http', 'ftp', 'file', 'https') :return: location (string) or None Nr) r5rrrrrrrr9remote_location)rschemess rrzPackage.remote_location$sb    2 2 <<77<< dmm.B.B3.GH Hyy((@@rc,|jryd|jvr|jjdsy|jxsP|jj j xr*|j xs|jjdS)NTz://rF)r5rrrr9rrrr2s rrzPackage._is_local_pkg3sx    DMM !$--*B*B9*M!!e YY__ $ $ & c ,<,b @W@WXa@b erc|jjjr*|js|jj S|jj Sr )r9rrr cache_pkgdirrr2s rrzPackage.pkgdir<sD IIOO # # %d.@.@.B99))+ +99## #rc|jy|j\}}tj|tj|j fS)z] Return the chksum type and chksum string how the legacy yum expects it. )NN)r+r$ chksum_namer&rIdecode)rr%r(s r returnIdSumzPackage.returnIdSumDsI <<  $ f"";/1A1A&1I1P1P1RSSrcj|jr td|jry|j\}} tj j ||j|S#tjj$r-}tjjt|d}~wwxYw)Nz$Can not verify an installed package.T)r5 ValueErrorrrrrchecksum_checkrBrr rr!r"r#)rr%r(r*s rverifyLocalPkgzPackage.verifyLocalPkgNs   CD D    $ 0 0 2f 3<<..{DMMOVT T||!! 3..**3q62 2 3s.A((B2(B--B2))httpftpfilehttps),__name__ __module__ __qualname____doc__rWrXr propertyr+setterrr5r;r>rArErJrSrZr^rgrirlrorur9r{r}rr*rsrtrrrrrrBrrrrr __classcell__)rs@rrr*sw'#' + + ^^  9988   00))  \\(( &,,$22y"00!!CC..  [[;; &%% : Ae$$T 3rr)r __future__rrdnf.i18nrr&dnf.exceptionsrdnf.rpm dnf.yum.miscr$ libdnf.errorr libdnf.utilsloggingrr@ getLoggerloggerrrrrsU*(&'    5 !m3fnnm3r