def install(plugin_name, *args, **kwargs):
if isinstance(plugin_name, (str,)):<EOL><INDENT>plugin_name = [plugin_name]<EOL><DEDENT>conda_args = (['<STR_LIT>', '<STR_LIT>', '<STR_LIT>'] + list(args) + plugin_name)<EOL>install_log_js = ch.conda_exec(*conda_args, verbose=False)<EOL>install_log = json.loads(install_log_js.split('<STR_LIT:\x00>')[-<NUM_LIT:1>])<EOL>if '<STR_LIT>' in install_log and not install_log.get('<STR_LIT>'):<EOL><INDENT>_save_action({'<STR_LIT>': conda_args, '<STR_LIT>': install_log})<EOL>logger.debug('<STR_LIT>', install_log['<STR_LIT>'])<EOL><DEDENT>return install_log<EOL>
Install plugin packages based on specified Conda channels.

.. versionchanged:: 0.19.1
    Do not save rollback info on dry-run.

.. versionchanged:: 0.24
    Remove channels argument.  Use Conda channels as configured in Conda
    environment.

    Note that channels can still be explicitly set through :data:`*args`.

Parameters
----------
plugin_name : str or list
    Plugin package(s) to install.

    Version specifiers are also supported, e.g., ``package >=1.0.5``.
*args
    Extra arguments to pass to Conda ``install`` command.

Returns
-------
dict
    Conda installation log object (from JSON Conda install output).