管理多用户 conda 安装#

Administering a multi-user conda installation

默认情况下,conda 及其安装的所有软件包都会以用户专属配置的形式安装在本地。此过程无需管理员权限,且不会影响上游文件或其他用户。

你可以使 conda 及若干指定软件包可供一个或多个用户使用,同时阻止这些用户通过 conda 安装未经授权的软件包:

  1. 在管理员控制之下并对用户可访问的位置安装 conda 及所有允许的软件包(如有)。

  2. 在该安装位置的根目录下创建一个 .condarc 系统配置文件。该系统级配置文件将覆盖用户所安装的任何用户级配置文件。

每个用户都会访问中央 conda 安装,并从其主目录下的用户级 .condarc 配置文件读取设置。该用户配置文件的路径与 conda info 显示的根环境前缀一致,如下方 用户配置文件 所示。系统级 .condarc 文件可以限制用户级 .condarc 文件的权限。

系统配置设置通常写入系统级 .condarc 文件中,但也可以用于用户级 .condarc 文件。所有用户配置设置同样也可以用于系统级 .condarc 文件中。

有关 .condarc 文件中各项设置的详细说明,请参阅 使用 .condarc conda 配置文件

By default, conda and all of the packages it installs are installed locally with a user-specific configuration. Administrative privileges are not required, and no upstream files or other users are affected by the installation.

You can make conda and any number of packages available to a group of one or more users, while preventing these users from installing unwanted packages with conda:

  1. Install conda and the allowed packages, if any, in a location that is under administrator control and accessible to users.

  2. Create a .condarc system configuration file in the root directory of the installation. This system-level configuration file will override any user-level configuration files installed by the user.

Each user accesses the central conda installation, which reads settings from the user .condarc configuration file located in their home directory. The path to the user file is the same as the root environment prefix displayed by conda info, as shown in 用户配置文件 below. The user .condarc file is limited by the system .condarc file.

System configuration settings are commonly used in a system .condarc file but may also be used in a user .condarc file. All user configuration settings may also be used in a system .condarc file.

For information about settings in the .condarc file, see 使用 .condarc conda 配置文件.

管理员控制安装示例#

Example administrator-controlled installation

以下示例介绍如何查看系统配置文件、审查其设置、将其与用户的配置文件进行比较,并判断当用户尝试访问一个被阻止的频道时会发生什么。随后将说明用户如何修改其配置文件以访问管理员允许的频道。

The following example describes how to view the system configuration file, review the settings, compare it to a user's configuration file, and determine what happens when the user attempts to access a file from a blocked channel. It then describes how the user must modify their configuration file to access the channels allowed by the administrator.

系统配置文件#

System configuration file

  1. 系统配置文件必须位于 conda 安装目录的顶层。检查 conda 所在路径,例如在 miniconda 安装中:

    $ which conda
    /tmp/miniconda/bin/conda
    
  2. 查看管理员目录中 .condarc 文件的内容:

    cat /tmp/miniconda/.condarc
    

    下列管理员 .condarc 文件使用 #!final 标志指定了可供用户使用的频道、默认频道以及 channel_alias

    $ cat /tmp/miniconda/.condarc
    
    channels:                                   #!final
      - admin
    
    channel_alias: https://conda.anaconda.org/  #!final
    

#!final 标志类似于 CSS 中的 !important 规则;在 .condarc 文件中,任何带有 #!final 后缀的参数都不能被其他来源的 .condarc 文件覆盖。有关该标志的更多信息,请参阅 Anaconda 博客

由于使用了 #!final 标志,且未显式指定默认频道,因此用户无法从默认频道下载软件包。可以在下一步中验证这一点。

  1. The system configuration file must be in the top-level conda installation directory. Check the path where conda is located, e.g. in a miniconda installation

    $ which conda
    /tmp/miniconda/bin/conda
    
  2. View the contents of the .condarc file in the administrator's directory:

    cat /tmp/miniconda/.condarc
    

    The following administrative .condarc file uses the #!final flag to specify the channels, default channels, and channel_alias available to the user.

    $ cat /tmp/miniconda/.condarc
    
    channels:                                   #!final
      - admin
    
    channel_alias: https://conda.anaconda.org/  #!final
    

The #!final flag is very similar to the !important rule in CSS; any parameter within the .condarc that is trailed by the #!final cannot be overwritten by any other .condarc source. For more information on this flag, see the Anaconda Blog on the subject.

Because the #!final flag has been used and the channel defaults are not explicitly specified, users are disallowed from downloading packages from the default channels. You can check this in the next procedure.

用户配置文件#

User configuration file

  1. 检查用户 conda 安装的位置:

    $ conda info
    Current conda install:
    . . .
             channel URLs : https://repo.anaconda.com/pkgs/free/osx-64/
                            https://repo.anaconda.com/pkgs/pro/osx-64/
             config file : /Users/username/.condarc
    

    conda info 命令显示 conda 正在使用用户的 .condarc 文件,路径为 /Users/username/.condarc,并列出了 repo.anaconda.com 等默认频道作为频道 URL。

  2. 查看第 1 步中找到的目录下的管理员 .condarc 文件内容:

    $ cat ~/.condarc
    channels:
      - defaults
    

    此用户的 .condarc 文件只指定了默认频道,但管理员配置文件通过限制只允许使用 admin 频道,已封锁默认频道。如果该用户尝试在默认频道中搜索软件包,将会收到提示告知哪些频道是被允许的:

    $ conda search flask
    Fetching package metadata:
    Error: URL 'http://repo.anaconda.com/pkgs/pro/osx-64/' not
    in allowed channels.
    Allowed channels are:
     - https://conda.anaconda.org/admin/osx-64/
    

    此错误信息提示用户应将 admin 频道添加到其配置文件中。

  3. 用户必须编辑其本地 .condarc 配置文件,以通过 admin 频道访问软件包:

    channels:
      - admin
    

    用户现在可以在被允许的 admin 频道中搜索软件包。

  1. Check the location of the user's conda installation:

    $ conda info
    Current conda install:
    . . .
           channel URLs : https://repo.anaconda.com/pkgs/free/osx-64/
                          https://repo.anaconda.com/pkgs/pro/osx-64/
           config file : /Users/username/.condarc
    

    The conda info command shows that conda is using the user's .condarc file, located at /Users/username/.condarc and that the default channels such as repo.anaconda.com are listed as channel URLs.

  2. View the contents of the administrative .condarc file in the directory that was located in step 1:

    $ cat ~/.condarc
    channels:
      - defaults
    

    This user's .condarc file specifies only the default channels, but the administrator config file has blocked default channels by specifying that only admin is allowed. If this user attempts to search for a package in the default channels, they get a message telling them what channels are allowed:

    $ conda search flask
    Fetching package metadata:
    Error: URL 'http://repo.anaconda.com/pkgs/pro/osx-64/' not
    in allowed channels.
    Allowed channels are:
     - https://conda.anaconda.org/admin/osx-64/
    

    This error message tells the user to add the admin channel to their configuration file.

  3. The user must edit their local .condarc configuration file to access the package through the admin channel:

    channels:
      - admin
    

    The user can now search for packages in the allowed admin channel.