%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3.9/site-packages/tracer/packageManagers/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3.9/site-packages/tracer/packageManagers/__pycache__/rpm.cpython-39.opt-1.pyc

a

"e��@s�ddlmZddlmZe��dvr�ddlmZddlmZddl	m
Z
ddlmZdd	l
mZmZdd
lmZddlZddlZddlZGdd
�d
e�ZdS)�)�absolute_import)�System)ZfedoraZrhelZcentoszcentos-7ZmageiaZol)�listdir�)�IPackageManager)�Package)�PackagesCollection)�LockedDatabase�DatabasePermissions)�PY3Nc@steZdZdZdd�Zedd��Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�Rpmz!
		Package manager class - RPM
		cKs
||_dS�N)�opts)�self�kwargs�r�>/usr/lib/python3.9/site-packages/tracer/packageManagers/rpm.py�__init__*szRpm.__init__cCstSr
)�NotImplemented)rrrr�history_path-szRpm.history_pathc	
Cs�tj�|j�stg�S|j�d�r(d}nd}zbt�}|��}t�	|�}tj
|_|��}|�
||g�|��D]}|�t|d|d��ql|WStjy�}z$t|�dkr�t�nt��WYd}~n
d}~00dS)zp
			Returns list of packages which were modified between unix_time and present
			Requires root permissions.
			�modern_swdbz�
					SELECT DISTINCT rpm.name, trans.dt_end AS end

					FROM trans JOIN trans_item JOIN rpm
					ON trans.id=trans_item.trans_id
					AND trans_item.item_id=rpm.item_id

					WHERE trans.dt_begin > ?
					ORDER BY rpm.name
				aJ
					SELECT DISTINCT pkgtups.name, trans_end.timestamp AS end

					FROM trans_beg JOIN trans_end JOIN trans_data_pkgs JOIN pkgtups
					ON trans_beg.tid=trans_end.tid
					AND trans_data_pkgs.tid=trans_beg.tid
					AND trans_data_pkgs.pkgtupid=pkgtups.pkgtupid

					WHERE trans_beg.timestamp > ?
					ORDER BY pkgtups.name
				�name�endzdatabase is lockedN)�os�path�existsrrr�get�_database_file�sqlite3ZconnectZRowZrow_factory�cursorZexecuteZfetchall�appendrZOperationalError�strr	r
)	rZ	unix_timeZsql�packagesZsqliteZconnr�result�errr�packages_newer_than0s"
zRpm.packages_newer_thancCsdt��}|�d|�}t|�}|s$gStrDt�|d�}dd�|D�St�|d�}dd�|D�SdS)z�
			Returns list of files provided by package
			See also: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch04s02s03.html
			rrcSsg|]
}|j�qSr)r)�.0�xrrr�
<listcomp>q�z%Rpm.package_files.<locals>.<listcomp>cSsg|]}|d�qS)rr)r&�frrrr(tr)N)�rpm�TransactionSet�dbMatch�listr�files�fi)r�pkg_name�ts�mir"r/rrr�
package_filesbszRpm.package_filescCs�|�|�}t��}|�d|�}|D]h}|tj|dkr"|tj|dkr"|tj|dkr"|tj|dkr"t|�}|�	||�|Sq"dS)Nrrr��)
�
_splitEvrar+r,r-�RPMTAG_EPOCH�RPMTAG_VERSION�RPMTAG_RELEASEZRPMTAG_ARCHr�_load_package_info_from_hdr)rr�evrar2r3�hdr�packagerrr�find_packagevs
H
zRpm.find_packagec	Cs�|sdSt��}|�d|j�}d}|D]r}|dur8|}q&t�t|tj�t|tj�t|tj�ft|tj�t|tj�t|tj�f�}|dkr&|}q&|dur�dS|�	||�dS)zFFrom database load informations about given package and set them to itNr���)
r+r,r-r�labelComparer!r8r9r:r;)rr>r2r3Zlatestr=Zcomparerrr�load_package_info�s *&�zRpm.load_package_infocCs<t�t|j�t|j�t|j�ft|j�t|j�t|j�f�S)zf
			labelCompare returns:
			0 if the EVR matches
			1 if EVR(1) > EVR(2)
			-1 if EVR(2) > EVR(1)
			)r+rAr!�epoch�version�release)rZp1Zp2rrr�compare_packages�szRpm.compare_packagescCsh|jd}|�|j�}|rd|jdkr`|��dd�D]*}tj�|�r4|�|�}|rV|ndSq4|SdS)z8Returns name of package which provides given applicationrzDevelopment/LanguagesrN)Z	instances�_file_provided_byZexe�categoryZcmdlinerr�isfile)rZappZprocessr>�argrrr�provided_by�s


zRpm.provided_byc
Cs�|�d�}||dd�}|d|��d�}||d|�}|d|��d�}||d|�}|�d�}|dkrvd}	n|d|�}	|	|||fS)z�
			Derived from rpmUtils.miscutils.splitFilename
			https://github.com/rpm-software-management/yum/blob/master/rpmUtils/miscutils.py

			Given: 9-123a.ia64
			Return: (9, 123a, 1, ia64)
			�.rN�-�:r@)�rfind�find)
rr<Z	archIndexZarchZrelIndex�relZverIndexZverZ
epochIndexrCrrrr7�s	

zRpm._splitEvracCsH|tj|_|tj|_|tj}|r,||_|tj|_|tj	|_
dSr
)r+ZRPMTAG_SUMMARY�description�RPMTAG_GROUPrHr8rCr9rDr:rE)rr>r=rCrrrr;�s
zRpm._load_package_info_from_hdrcCsJt��}|�d|�}|��dkr$dSt|�}t|tj�}|tj|_|S)z1Returns name of package which provides given fileZ	basenamesrN)	r+r,r-�count�nextrZRPMTAG_NAMErSrH)r�filer2Zdb�pkg�prrrrG�szRpm._file_provided_bycCsP|j�d�r|jStt|j�dd�D]&}|�d�r$|�d�r$|j|Sq$dS)z)Returns path to yum history database filerT)�reversezhistory-z.sqliteN)rrr�sortedr�
startswith�endswith)rrVrrrr�s
zRpm._database_fileN)�__name__�
__module__�__qualname__�__doc__r�propertyrr%r4r?rBrFrKr7r;rGrrrrrr#s
2	r)Z
__future__rZtracer.resources.systemrZdistributionrrZipackageManagerrZtracer.resources.packagerZtracer.resources.collectionsrZtracer.resources.exceptionsr	r
Ztracer.resources.pycomprrr+rrrrr�<module>s

Zerion Mini Shell 1.0