%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/cloudinit/distros/package_management/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/cloudinit/distros/package_management/__pycache__/apt.cpython-312.pyc

�

���f�!����ddlZddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZm
Z
ddlmZmZmZddlmZmZddlmZmZej0e�ZdZgd�ZdZd	eed
e	efd�Z Gd�d
e�Z!y)�N)�Any�Iterable�List�Mapping�Optional�Sequence�cast)�helpers�subp�util)�PackageManager�UninstalledPackages)�
PER_ALWAYS�PER_INSTANCE)zapt-getz(--option=Dpkg::Options::=--force-confoldz*--option=Dpkg::options::=--force-unsafe-ioz--assume-yesz--quiet)z/var/lib/dpkg/lock-frontendz/var/lib/dpkg/lockz/var/cache/apt/archives/lockz/var/lib/apt/lists/lock��cfg�returnc�|�|sd}dg}nQ|jd�}|jd�}t|t�r|g}nt|t�st	d��tj|�s6t|�j�dk(r1|r/tj|d�rttt|�SgS)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.
    �auto�	eatmydata�enabled�commandz,apt_wrapper command must be a string or listr)�get�
isinstance�str�list�	TypeErrorr�is_true�lowerr�whichr	r)rrrs   �J/usr/lib/python3/dist-packages/cloudinit/distros/package_management/apt.py�get_apt_wrapperr")s�������-���'�'�)�$���'�'�)�$���g�s�#��i�G��G�T�*��J�K�K��|�|�G���G������&�7�t�z�z�'�!�*�7M��D��I�w�'�'��	�c
� ��eZdZdZdddd�dej
deedeeedeef�fd	�Z	e
dej
d
eddfd��Zde
fd
�Zdd�d�Zej"d��d��Zdeefd�Zdedefd�Zdd�Zd�Zefd�Z�xZS)�Apt�apt�N��apt_get_wrapper_command�apt_get_command�apt_get_upgrade_subcommand�runnerr)r*r+c���t�|�|�|�t|_|�d}t	|�t	|j�z|_||_ddi|_y)Nzdist-upgrade�DEBIAN_FRONTEND�noninteractive)�super�__init__�APT_GET_COMMANDr*�tuple�apt_commandr+�environment)�selfr,r)r*r+�	__class__s     �r!r1zApt.__init__Msh���	���� ��"�#2�D� �%�-�)7�&� �!8�9�E�� � �=
�
���+E��'�-�/?�@��r#rrc��t|t|jd��|jd�|jd���S)N�apt_get_wrapperr*r+r()r%r"r)�clsr,rs   r!�from_configzApt.from_configasC����$3����)�*�%� �G�G�$5�6�'*�w�w�/K�'L�

�	
r#c�X�ttj|jd��S)Nr)�boolrr r*)r6s r!�	availablez
Apt.availablels!���D�J�J�t�3�3�A�6�7�8�8r#F)�forcec�|�|jjd|jdg|rt��yt��y)Nzupdate-sources�update)�freq)r,�run�run_package_commandrr)r6r?s  r!�update_package_sourceszApt.update_package_sourcesos<���������$�$�
�J�$��		�	
�+7�		�	
r#�)�maxsizec�v�tjddg�j}t|j��S)Nz	apt-cache�pkgnames)r�stdout�set�
splitlines)r6�resps  r!�get_all_packageszApt.get_all_packagesws/���I�I�{�J�7�8�?�?���4�?�?�$�%�%r#�pkglistc��|D�cgc]<}tjd|�djd�|j�vr|��>c}Scc}w)Nz/|=rz-^)�re�split�rstriprN)r6rO�pkgs   r!�get_unavailable_packageszApt.get_unavailable_packages�sS���
���x�x��s�#�A�&�-�-�d�3��(�(�*�+�
�
�	
��
s�AA	c�\�|j�tjdt|��}|j	|D�cgc]}|jd�d��c}�}|rtjd|�|D�cgc]	}||vs�|��}}|r|jd|��|Scc}wcc}w)N�%s=%s�=rzXThe following packages were not found by APT so APT will not attempt to install them: %s�install)�pkgs)	rEr�expand_package_listrrUrR�LOG�debugrD)r6rO�x�unavailable�p�
to_installs      r!�install_packageszApt.install_packages�s����#�#�%��*�*�7�D��M�B���3�3�&-�.��Q�W�W�S�\�!�_�.�
����I�I�2��
�
")�A�A�A�[�,@�a�A�
�A���$�$�Y�Z�$�@����
/��Bs�B$�=	B)�B)c��|�g}t|j�}|r"t|t�r|j	|�n#|r!t|t�r|j|�|dk(r|j}|j	|�tjd|�}|j|�|j|||jdd���y)N�upgraderWF)�args�
update_env�capture)�	short_cmd�subp_kwargs)rr4rr�append�extendr+rr[�_wait_for_apt_commandr5)r6rrerZ�full_commandrOs      r!rDzApt.run_package_command�s����<��D��D�,�,�-���J�t�S�)�����%�
�j��t�,�����%��i���5�5�G����G�$��*�*�7�D�9�����G�$��"�"��$�"�.�.� ��	#�	
r#c�:�tD]n}tjj|�s�#t	|d�5}	tj|t
jt
jz�	ddd��py#t$rYddd�ywxYw#1swY��xYw)ztDetermines if another process holds any apt locks.

        If all locks are clear, return True else False.
        �wNFT)
�APT_LOCK_FILES�os�path�exists�open�fcntl�lockf�LOCK_EX�LOCK_NB�OSError)r6�lock�handles   r!�_apt_lock_availablezApt._apt_lock_available�s���
#�	!�D��7�7�>�>�$�'���d�C��
!�F�!��K�K���
�
��
�
�(E�F�
!�
!�		!����!� �	
!�
!�!��
!�
!�s(�B�5A9�9	B�B�
B�B�B	c��tj�}tjd�tj�|z
|kr�|j	�stj
d��@tjd�	d|�ddj
|d��d�}tjtj|tj|�	�Std��#tj$r>|j	�r�tjd
�tj
d�YnwxYwtj�|z
|kr���|)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 lockrFzAPT lock availablezapt-z [� re�])�logfunc�msg�func�kwargsz*Another process holds APT lock. Waiting...zCould not get APT lock)�time�	monotonicr\r]r|�sleep�joinr�log_timer�ProcessExecutionError�TimeoutError)r6rhri�timeout�
start_time�log_msgs      r!rlzApt._wait_for_apt_command�s
���^�^�%�
��	�	�(�)��n�n���+�g�5��+�+�-��
�
�1�
���I�I�*�+�
� ���2�c�h�h�{�6�7J�.K�-L�A�N���}�}��I�I�����&�	��*�3�4�4���-�-�
��+�+�-���	�	�F�G��
�
�1�
�
���n�n���+�g�5�s�AC�AD,�+D,)NN)�__name__�
__module__�__qualname__�namer
�Runnersrrrr1�classmethodrr;r=r>rE�	functools�	lru_cacherNrrUrrbrDr|�APT_LOCK_WAIT_TIMEOUTrl�
__classcell__)r7s@r!r%r%Js�����D�24�37�48�
A����A�"*�#��	A�
"�(�3�-�0�A�%-�S�M�
A�(�
����
�w�
�5�
��
�9�4�9�/4�
��Y����#�&�$�&�
���
�
����5H��"
�2�"/D�'5r#r%)"rur��loggingrqrQr��typingrrrrrrr	�	cloudinitr
rr�4cloudinit.distros.package_management.package_managerr
r�cloudinit.settingsrr�	getLoggerr�r\r2rpr��dictrr"r%r'r#r!�<module>r�s������	�	��I�I�I�)�)��8��g����!����������$���D��I��Bf5�.�f5r#

Zerion Mini Shell 1.0