관리-도구
편집 파일: rpm.cpython-39.opt-1.pyc
a ����"e�����������������������@���s����d�dl�mZ�d�dlmZ�e���dv�r�d�dlmZ�ddlmZ�d�dl m Z �d�dlmZ�d�d l mZmZ�d�d lmZ�d�dlZd�dlZd�dlZG�dd ��d e�ZdS�)�����)�absolute_import)�System)ZfedoraZrhelZcentoszcentos-7ZmageiaZol)�listdir����)�IPackageManager)�Package)�PackagesCollection)�LockedDatabase�DatabasePermissions)�PY3Nc�������������������@���st���e�Zd�ZdZdd��Zedd���Zdd��Zdd ��Zd d��Z dd ��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��ZdS�)�Rpmz! Package manager class - RPM c�����������������K���s ���||�_�d�S��N)�opts)�self�kwargs��r����>/usr/lib/python3.9/site-packages/tracer/packageManagers/rpm.py�__init__*���s����zRpm.__init__c�����������������C���s���t�S�r ���)�NotImplemented)r���r���r���r����history_path-���s����zRpm.history_pathc����������� ��� ���C���s����t�j�|�j�stg��S�|�j�d�r(d}nd}zbt��}|����}t� |�}tj |_|���}|� ||g��|���D�]}|�t|d�|d����ql|W�S��tjy��}�z$t|�dkr�t��nt���W�Y�d}~n d}~0�0�dS�)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�existsr���r���r����get�_database_file�sqlite3ZconnectZRowZrow_factory�cursorZexecuteZfetchall�appendr���ZOperationalError�strr ���r ���) r���Z unix_timeZsql�packagesZsqliteZconnr����result�er���r���r����packages_newer_than0���s"���� zRpm.packages_newer_thanc�����������������C���sd���t����}|�d|�}t|�}|s$g�S�trDt��|d��}dd��|D��S�t��|d��}dd��|D��S�dS�)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 r���r���c�����������������S���s���g�|�] }|j��qS�r���)r���)�.0�xr���r���r���� <listcomp>q��������z%Rpm.package_files.<locals>.<listcomp>c�����������������S���s���g�|�]}|d���qS�)r���r���)r&����fr���r���r���r(���t���r)���N)�rpm�TransactionSet�dbMatch�listr����files�fi)r����pkg_name�ts�mir"���r/���r���r���r���� package_filesb���s����zRpm.package_filesc�����������������C���s����|���|�}t���}|�d|�}|D�]h}|tj�|d�kr"|tj�|d�kr"|tj�|d�kr"|tj�|d�kr"t|�}|�� ||��|��S�q"d�S�)Nr���r���r�����������) � _splitEvrar+���r,���r-����RPMTAG_EPOCH�RPMTAG_VERSION�RPMTAG_RELEASEZRPMTAG_ARCHr����_load_package_info_from_hdr)r���r����evrar2���r3����hdr�packager���r���r����find_packagev���s���� H zRpm.find_packagec�������������� ���C���s����|sdS�t����}|�d|j�}d}|D�]r}|du�r8|}q&t��t|t�j��t|t�j��t|t�j��ft|t�j��t|t�j��t|t�j��f�}|dkr&|}q&|du�r�dS�|�� ||��dS�)zFFrom database load informations about given package and set them to itNr������) r+���r,���r-���r����labelComparer!���r8���r9���r:���r;���)r���r>���r2���r3���Zlatestr=���Zcomparer���r���r����load_package_info����s ����*&�zRpm.load_package_infoc�����������������C���s<���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+���rA���r!����epoch�version�release)r���Zp1Zp2r���r���r����compare_packages����s����zRpm.compare_packagesc�����������������C���sh���|j�d�}|��|j�}|rd|jdkr`|���dd��D�]*}tj�|�r4|��|�}|rV|nd��S�q4|S�dS�)z8Returns name of package which provides given applicationr���zDevelopment/Languagesr���N)Z instances�_file_provided_byZexe�categoryZcmdliner���r����isfile)r���ZappZprocessr>����argr���r���r����provided_by����s���� zRpm.provided_byc����������� ������C���s����|��d�}||d�d��}|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) �.r���N�-�:r@���)�rfind�find) r���r<���Z archIndexZarchZrelIndex�relZverIndexZverZ epochIndexrC���r���r���r���r7�������s���� zRpm._splitEvrac�����������������C���sH���|t�j�|_|t�j�|_|t�j�}|r,||_|t�j�|_|t�j �|_ d�S�r ���)r+���ZRPMTAG_SUMMARY�description�RPMTAG_GROUPrH���r8���rC���r9���rD���r:���rE���)r���r>���r=���rC���r���r���r���r;�������s���� zRpm._load_package_info_from_hdrc�����������������C���sJ���t����}|�d|�}|���dkr$dS�t|�}t|t�j��}|t�j�|_|S�)z1Returns name of package which provides given fileZ basenamesr���N) r+���r,���r-����count�nextr���ZRPMTAG_NAMErS���rH���)r����filer2���Zdb�pkg�pr���r���r���rG�������s����zRpm._file_provided_byc�����������������C���sP���|�j��d�r|�jS�tt|�j�dd�D�]&}|�d�r$|�d�r$|�j|���S�q$dS�)z)Returns path to yum history database filer���T)�reversezhistory-z.sqliteN)r���r���r����sortedr���� startswith�endswith)r���rV���r���r���r���r�������s ����zRpm._database_fileN)�__name__� __module__�__qualname__�__doc__r����propertyr���r%���r4���r?���rB���rF���rK���r7���r;���rG���r���r���r���r���r���r���#���s��� 2 r���)Z __future__r���Ztracer.resources.systemr���Zdistributionr���r���ZipackageManagerr���Ztracer.resources.packager���Ztracer.resources.collectionsr���Ztracer.resources.exceptionsr ���r ���Ztracer.resources.pycompr���r���r+���r���r���r���r���r����<module>���s���