HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //lib/python3.6/site-packages/cloudinit/distros/package_management/__pycache__/apt.cpython-36.pyc
3

\�me��@s�ddlZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZddl
mZmZmZddlmZmZddlmZeje�ZdZddd
dgZdZe
eeed�dd�ZGdd�de�ZdS)�N)�Any�Iterable�List�Mapping�Optional�Sequence�cast)�helpers�subp�util)�PackageManager�UninstalledPackages)�PER_INSTANCE�apt-get�(--option=Dpkg::Options::=--force-confold�*--option=Dpkg::options::=--force-unsafe-io�--assume-yes�--quietz/var/lib/dpkg/lock-frontendz/var/lib/dpkg/lockz/var/cache/apt/archives/lockz/var/lib/apt/lists/lock�)�cfg�returncCs�|sd}dg}n8|jd�}|jd�}t|t�r6|g}nt|t�sHtd��tj|�stt|�j�dkr�|r�tj	|d�r�t
tt|�SgSdS)a9Parse the 'apt_get_wrapper' section of cloud-config.

    apt_get_wrapper may be defined in cloud-config:
      apt_get_wrapper:
        enabled: true
        command: ["eatmydata"]

    The function takes the value of "apt_get_wrapper" and returns the list
    of arguments to prefix to the apt-get command.
    �autoZ	eatmydata�enabled�commandz,apt_wrapper command must be a string or listrN)�get�
isinstance�str�list�	TypeErrorrZis_true�lowerr
Zwhichrr)rrr�r �/usr/lib/python3.6/apt.py�get_apt_wrapper(s





"r"cs�eZdZdZfddd�ejeeeeeeed��fdd�Z	e
ejedd�dd	��Zd
d�Z
ejdd
�dd��Zeed�dd�Zeed�dd�Zddd�Zddd�Zefdd�Z�ZS)�AptZaptN)�apt_get_wrapper_command�apt_get_command�apt_get_upgrade_subcommand)�runnerr$r%r&csVt�j|�|dkrt}|dkr$d}t|�t|�|_||_tjj�|_	d|j	d<dS)Nzdist-upgradeZnoninteractiveZDEBIAN_FRONTEND)
�super�__init__�APT_GET_COMMAND�tuple�apt_commandr&�os�environ�copy�environment)�selfr'r$r%r&)�	__class__r r!r)Ls
zApt.__init__)r'rrcCs&t|t|jd��|jd�|jd�d�S)NZapt_get_wrapperr%r&)r$r%r&)r#r"r)�clsr'rr r r!�from_configas
zApt.from_configcCs|jjd|jdgtd�dS)Nzupdate-sources�update)Zfreq)r'Zrun�run_package_commandr)r1r r r!�update_package_sourcesls
zApt.update_package_sources�)�maxsizecCstjddg�j}t|j��S)Nz	apt-cacheZpkgnames)r
�stdout�set�
splitlines)r1Zrespr r r!�get_all_packagestszApt.get_all_packages)�pkglistcs�fdd�|D�S)Ncsg|]}|�j�kr|�qSr )r=)�.0Zpkg)r1r r!�
<listcomp>sz0Apt.get_unavailable_packages.<locals>.<listcomp>r )r1r>r )r1r!�get_unavailable_packages~szApt.get_unavailable_packages)r>rcs`|j�tjdt|��}|jdd�|D���tjd���fdd�|D�}|r\|jd|d��S)Nz%s=%scSsg|]}|jd�d�qS)�=r)�split)r?�xr r r!r@�sz(Apt.install_packages.<locals>.<listcomp>zXThe following packages were not found by APT so APT will not attempt to install them: %scsg|]}|�kr|�qSr r )r?�p)�unavailabler r!r@�sZinstall)�pkgs)r7r�expand_package_listrrA�LOG�debugr6)r1r>Z
to_installr )rFr!�install_packages�szApt.install_packagescCs�|dkrg}t|j�}|r0t|t�r0|j|�n|rHt|t�rH|j|�|dkrV|j}|j|�tjd|�}|j|�|j	|||j
dd�d�dS)NZupgradez%s=%sF)�args�envZcapture)�	short_cmd�subp_kwargs)rr,rr�append�extendr&rrH�_wait_for_apt_commandr0)r1rrLrGZfull_commandr>r r r!r6�s"



zApt.run_package_commandcCsp|dkrt}x^|D]V}tjj|�s$qt|d��4}ytj|tjtjB�Wnt	k
r\dSXWdQRXqWdS)ztDetermines if another process holds any apt locks.

        If all locks are clear, return True else False.
        N�wFT)
�APT_LOCK_FILESr-�path�exists�open�fcntl�lockfZLOCK_EXZLOCK_NB�OSError)r1Z
lock_files�lockZhandler r r!�_apt_lock_available�s
zApt._apt_lock_availablecCs�tj�}tjd�x�tj�||kr�|j�s8tjd�qtjd�y2d|�ddj|d��d�}tjtj|tj|d	�Stj	k
r�|j�r��tjd
�tjd�YqXqWt
d��dS)
z�Wait for apt install to complete.

        short_cmd: Name of command like "upgrade" or "install"
        subp_kwargs: kwargs to pass to subp
        zWaiting for APT lockr8zAPT lock availablezapt-z [� rL�])Zlogfunc�msg�func�kwargsz*Another process holds APT lock. Waiting...zCould not get APT lockN)�timerIrJr\Zsleep�joinrZlog_timer
ZProcessExecutionError�TimeoutError)r1rNrOZtimeoutZ
start_timeZlog_msgr r r!rR�s(



zApt._wait_for_apt_command)NN)N)�__name__�
__module__�__qualname__�namer	ZRunnersrrrr)�classmethodrr4r7�	functools�	lru_cacher=rrAr
rKr6r\�APT_LOCK_WAIT_TIMEOUTrR�
__classcell__r r )r2r!r#Is0



r#)rrrrr) rXrjZloggingr-rbZtypingrrrrrrrZ	cloudinitr	r
rZ4cloudinit.distros.package_management.package_managerrr
Zcloudinit.settingsrZ	getLoggerrerIr*rTrl�dictrr"r#r r r r!�<module>s*$
	!