a "eZ @stddlmZddlmZedkrpddlmZddlmZddl m Z ddl Z ddl Z ddl Z Gd d d eZdS) )absolute_import)SystemZdebian)IPackageManager)Package)PackagesCollectionNc@sDeZdZdZddZeddZddZdd Zd d Z d d Z dS)Dpkgz" Package manager class - DPKG cKs ||_dS)N)Zopts)selfkwargsr ?/usr/lib/python3.9/site-packages/tracer/packageManagers/dpkg.py__init__'sz Dpkg.__init__cCsdS)Nz/var/log/dpkg.logr )r r r r dpkg_log*sz Dpkg.dpkg_logcCst}t|jd}|D]h}|d}|ddkr2qtt|dd|dd}||kr|dd d}|t||q|S) zp Returns list of packages which were modified between unix_time and present Requires root permissions. r Zupgraderrz%Y-%m-%d %H:%M:%S:) ropenrsplittimemktimestrptimeappendr)r Z unix_timeZnewerloglineZmodifiedpkg_namer r r packages_newer_than-s   zDpkg.packages_newer_thancCsng}ttjd}dd|g}tj|tj|d}|d}|dddD]}tj |rN| |qN|S) z)Returns list of files provided by packagewz dpkg-queryz-L)stdoutstderrr N) rosdevnull subprocessPopenPIPE communicatedecoderpathisfiler)r rfilesZfnullcommandprocessoutfiler r r package_filesDs     zDpkg.package_filescCsfd}tjdd|jgtjd}|d}|d}|D] }|dr:|dd}q:||_ dS) zFFrom database load informations about given package and set them to itNZdpkgz-srrr!z Description:r) r%r&namer'r(r)r startswithstrip description)r packager6r.r/rr r r load_package_infoPs  zDpkg.load_package_infocCsLdd|jg}tj|tjd}|d}|dd}t|ddS)z8Returns name of package which provides given applicationZdlocatez-Sr2rr!r)r3r%r&r'r(r)rr)r Zappr-r.rr r r provided_by^s   zDpkg.provided_byN) __name__ __module__ __qualname____doc__r propertyrrr1r8r9r r r r r s  r)Z __future__rZtracer.resources.systemrZ distributionZipackageManagerrZtracer.resources.packagerZtracer.resources.collectionsrr%rr#rr r r r s