Anaconda中的攻击性更新包到底是什么?

2024-05-19 01:49:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用Anaconda环境,在配置列表中我遇到了一个名为aggressive_update_packages的选项。我不太清楚当我添加一个新的包时会发生什么。我找不到关于这个选项(only a little bit here)的任何令人满意的描述,所以我只能假设它做了什么:我认为它将继续自动更新特定的包。但是我肯定不知道它是如何工作的,这就是我要问的。我正在积极开发一个软件包,特别是针对Anaconda环境,对其他人来说,它将是一个很好的功能,让它自动更新


Tags: 功能only列表here环境packages选项bit
2条回答

它存在的原因

aggressive_updates_packages集的默认设置主要用于安全目的。由于Conda带来了许多本机库,其中一些库提供了在互联网上安全通信的核心功能,因此有一个隐含的责任,即确保它正在努力修补经常出现在一般网络攻击表面的软件

尝试在NIST's National Vulnerability Database中搜索任何默认软件(例如,openssl),您将很快了解为什么对这些软件包进行修补是至关重要的。运行旧的SSL协议或拥有过时的证书颁发机构列表会使人容易受到攻击

工作原理

本质上,只要有人表示愿意改变环境(例如,conda (install|update|remove)),Conda就会检查并请求在集合中安装最新版本的软件包。没有比这更重要的了它不会自动更新软件包。如果用户从未尝试改变环境,则包将永远不会更新

重新调整功能的用途

OP建议将此作为一种方式“保持自动更新特定包”。如果您的用户已经频繁地改变他们的环境,那么包可能会通过此设置频繁更新。但是,该设置不是包可以自行操作的(manipulating anything other than install files is expressly forbidden)。用户必须手动操作其设置,才能将“特定包”添加到列表中

对于注重再现性的用户,我会积极劝阻他们不要更改全局设置,将非安全基本包添加到aggressive_updates_packages列表中

根据康达的发行说明

aggressive updates: Conda now supports an aggressive_update_packages configuration parameter that holds a sequence of MatchSpec strings, in addition to the pinned_packages configuration parameter. Currently, the default value contains the packages ca-certificates, certifi, and openssl. When manipulating configuration with the conda config command, use of the system and env flags will be especially helpful here. For example:

conda config add aggressive_update_packages defaults::pyopenssl system would ensure that, system-wide, solves on all environments enforce using the latest version of pyopenssl from the defaults channel.

conda config add pinned_packages Python=2.7 env

would lock all solves for the current active environment to Python versions matching 2.7.*.

根据本期-https://github.com/conda/conda/issues/7419 这可能意味着默认情况下创建的任何新env都会在aggressive_update_packages配置中添加/更新包

如何获取变量值?-conda config show

相关问题 更多 >

    热门问题