跳至主要内容

2024 年 1 月发布

·阅读时长:7 分钟
Ken Odegard
Conda 维护者

2024 年 1 月的版本发布包括对四个 Conda 社区项目进行的更新:Conda、Conda-Build、Conda-Libmamba-Solver 和 Conda-Index!🎉 这些项目都已发布到 mainconda-forge 中。

Conda 中的更改 24.1.0/24.1.1/24.1.2

要更新 Conda,请运行

conda install -n base conda=24.1.2

✨ 新功能 ✨

  • 验证即将安装的软件包的签名,而不是所有软件包的签名。
  • 添加新的 pre-solvespost-solves 插件钩子。
  • 添加对 Python 3.12 的支持。
  • 检查 repodata.json.zst 以加快 repodata 下载速度。
  • conda search 中添加 --skip-flexible-search 选项以跳过灵活搜索。
  • 在尝试重命名不存在的前缀时提供更有用的警告。
  • 添加一个新的标志 --keep-envconda remove --all 使用。它允许用户删除环境中的所有软件包,同时保留环境本身。
  • 添加一个 Y/N 提示,警告用户 conda env removeconda remove --all 不仅会删除 Conda 软件包,还会删除指定环境的全部内容。
  • 添加 --repodata-use-zst/--no-repodata-use-zst 标志来控制 repodata.json.zst 检查;.condarc 中有相应的 repodata_use_zst: true/false 设置。默认值为检查 repodata.json.zst。如果远程返回不可解析的 repodata.json.zst 而不是正确的数据或 404,则禁用。

🔧 已修复问题 🔧

  • 在尝试写入 environments.txt 文件之前创建 ~/.conda 目录。
  • 确保 PackageRecord.timestamp 以毫秒为单位转储。
  • 修复通过 CONDA_REPODATA_FNS 设置非默认 repodata 文件名时的错误。
  • 修复集成 Anaconda 客户端网关从其加载用户配置的配置文件位置。这是在 Conda 23.11.0 中采用 platformdirs 库时引入的回归。
  • 将缺少的 Cache-Control 标头解释为 max-age=0,而不是异常。
  • (24.1.1) 如果 repodata.json.zst 无法作为 zstandard 解压缩,则回退到 repodata.json
  • (24.1.1) 在大多数 4xx 错误代码上从 repodata.json.zst 回退到 repodata.json
  • (24.1.2) 修复 conda.core.subdir_data.fetch_repodata_remote_request 在启用 repodata_use_zst 时失败的问题。

🌅 已标记为 弃用 的内容? 🌅

conda_env.* 模块已合并到 conda 包中!

为了改进 conda env 子命令(以前是独立的)的集成,我们将它的代码移动到 conda 包中,同时允许通过 Python 导入重定向继续使用旧的 conda env 命令。这是改进 Conda 命令行界面与环境管理相关的用户体验的许多步骤中的第一步。

📄 文档中的新内容? 📄

  • 更新用户指南中的 入门 文档。
  • 添加 GoatCounter 以进行文档网站分析。
  • 改进类型提示和文档字符串。

Conda-Build 中的更改 24.1.0/24.1.1/24.1.2

要更新 Conda-Build,请运行

conda install -n base conda-build=24.1.2

✨ 新功能 ✨

  • 更新 conda inspect channels 以使用更新的求解器/事务逻辑。
  • script_env 中引用未定义的变量时,放松输出中的 script_env 错误。这将当前行为与顶层构建统一起来。
  • 添加对 Python 3.12 的支持。
  • 根据 CEP-8 采用日历版本控制 (CalVer),以保持与 Conda 的一致性。
  • 采用 CEP-9 的加速弃用政策。

🔧 已修复问题 🔧

  • (24.1.1) 修复成功时的非零退出代码。
  • (24.1.2) 修复对符号链接运行 rpaths 修补程序的问题。
  • (24.1.2) 修复子包测试中输出的损坏的软件包缓存。

🌅 已标记为 弃用 的内容? 🌅

这是 Conda-Build 的第一个版本,它删除了先前根据 加速弃用时间表 标记为已弃用的代码。以下是已删除内容的列表

  • conda_build.api.update_index
  • conda_build.cli.main_build.main
  • conda_build.cli.main_convert.main
  • conda_build.cli.main_debug.main
  • conda_build.cli.main_develop.main
  • conda_build.cli.main_index
  • conda_build.cli.main_inspect.main
  • conda_build.cli.main_metapackage.main
  • conda_build.cli.main_render.main
  • conda_build.cli.main_skeleton.main
  • conda_build.conda_interface.IndexRecord
  • conda_build.conda_interface.CrossPlatformStLink
  • conda_build.conda_interface.SignatureError
  • conda_build.conda_interface.which_package
  • conda_build.conda_interface.which_prefix
  • conda_build.conda_interface.get_installed_version
  • conda_build.config.python2_fs_encode
  • conda_build.config._ensure_dir
  • conda_build.config.Config.CONDA_LUA
  • conda_build.config.Config.CONDA_PY
  • conda_build.config.Config.CONDA_NPY
  • conda_build.config.Config.CONDA_PERL
  • conda_build.config.Config.CONDA_R
  • conda_build.environ.clean_pkg_cache
  • conda_build.index.update_index
  • conda_build.inspect_pkg.dist_files
  • conda_build.inspect_pkg.which_package(avoid_canonical_channel_name)
  • conda_build.inspect_pkg._installed
  • conda_build.metadata.Metadata.name(fail_ok)
  • conda_build.os_utils.ldd.get_package_files
  • conda_build.os_utils.liefldd.is_string
  • conda_build.os_utils.liefldd.codefile_type_liefldd
  • conda_build.os_utils.liefldd.codefile_type_pyldd
  • conda_build.os_utils.liefldd.codefile_type
  • conda_build.os_utils.pyldd.mach_o_change
  • conda_build.os_utils.pyldd.is_codefile
  • conda_build.os_utils.pyldd.codefile_type
  • conda_build.os_utils.pyldd.inspect_rpaths
  • conda_build.os_utils.pyldd.get_runpaths
  • conda_build.os_utils.pyldd.otool_sys
  • conda_build.os_utils.pyldd.ldd_sys
  • conda_build.plugin.index
  • conda_build.post.determine_package_nature
  • conda_build.post.library_nature(subdir)
  • conda_build.post.library_nature(bldpkgs_dirs)
  • conda_build.post.library_nature(output_folder)
  • conda_build.post.library_nature(channel_urls)
  • conda_build.post.dists_from_names
  • conda_build.post.FakeDist
  • conda_build.post._get_fake_pkg_dist
  • conda_build.utils.relative
  • conda_build.utils.samefile

此外,我们继续努力删除所有剩余的旧版 conda.models.dist.Dist 对象的使用。

  • conda inspect channels --test-installable 标记为待弃用。
  • conda_build.inspect_pkg.check_install(package) 标记为待弃用,推荐使用 conda_build.inspect_pkg.check_install(subdir)
  • conda_build.inspect_pkg.check_install(prepend) 标记为待弃用。
  • conda_build.inspect_pkg.check_install(minimal_hint) 标记为待弃用。
  • conda_build.conda_interface.Dist 标记为待弃用。
  • conda_build.conda_interface.display_actions 标记为待弃用。
  • conda_build.conda_interface.execute_actions 标记为待弃用。
  • conda_build.conda_interface.execute_plan 标记为待弃用。
  • conda_build.conda_interface.get_index 标记为待弃用。
  • conda_build.conda_interface.install_actions 标记为待弃用。
  • conda_build.conda_interface.linked 标记为待弃用。
  • conda_build.conda_interface.linked_data 标记为待弃用。
  • conda_build.utils.linked_data_no_multichannels 标记为待弃用。
  • conda_build.environ.get_install_actions 标记为待弃用,推荐使用 conda_build.environ.get_package_records
  • conda_build.environ.create_env(specs_or_actions) 标记为待弃用,推荐使用 conda_build.environ.create_env(specs_or_precs)
  • conda_build.index.channel_data 标记为待弃用。
  • conda_build.index._determine_namespace 标记为待弃用。
  • conda_build.index._make_seconds 标记为待弃用。
  • conda_build.index.REPODATA_VERSION 标记为待弃用。
  • conda_build.index.CHANNELDATA_VERSION 标记为待弃用。
  • conda_build.index.REPODATA_JSON_FN 标记为待弃用。
  • conda_build.index.REPODATA_FROM_PKGS_JSON_FN 标记为待弃用。
  • conda_build.index.CHANNELDATA_FIELDS 标记为待弃用。
  • conda_build.index._clear_newline_chars 标记为待弃用。
  • conda_build.index._apply_instructions 标记为待弃用。
  • conda_build.index._get_jinja2_environment 标记为待弃用。
  • conda_build.index._maybe_write 标记为待弃用。
  • conda_build.index._maybe_build_string 标记为待弃用。
  • conda_build.index._warn_on_missing_dependencies 标记为待弃用。
  • conda_build.index._cache_post_install_details 标记为待弃用。
  • conda_build.index._cache_recipe 标记为待弃用。
  • conda_build.index._cache_run_exports 标记为待弃用。
  • conda_build.index._cache_icon 标记为待弃用。
  • conda_build.index._make_subdir_index_html 标记为待弃用。
  • conda_build.index._make_channeldata_index_html 标记为待弃用。
  • conda_build.index._get_source_repo_git_info 标记为待弃用。
  • conda_build.index._cache_info_file 标记为待弃用。
  • conda_build.index._alternate_file_extension 标记为待弃用。
  • conda_build.index._get_resolve_object 标记为待弃用。
  • conda_build.index._get_newest_versions 标记为待弃用。
  • conda_build.index._add_missing_deps 标记为待弃用。
  • conda_build.index._add_prev_ver_for_features 标记为待弃用。
  • conda_build.index._shard_newest_packages 标记为待弃用。
  • conda_build.index._build_current_repodata 标记为待弃用。
  • conda_build.index.ChannelIndex 标记为待弃用。
  • conda_build.render.actions_to_pins 标记为待弃用。
  • conda_build.render.execute_download_actions(actions) 标记为待弃用,推荐使用 conda_build.render.execute_download_actions(precs)
  • conda_build.render.get_upstream_pins(actions) 标记为待弃用,推荐使用 conda_build.render.get_upstream_pins(precs)

📄 文档更新内容 📄


Conda-Libmamba-Solver 的变更 24.1.0

要更新 conda-libmamba-solver,请运行

conda install -n base conda-libmamba-solver=24.1.0

✨ 新功能 ✨

  • 优先考虑具有更严格约束的显式请求规范,而不是隐式规范或仅名称规范(例如,CLI 指定的 name=version=build 将在 CLI 指定的 name=versionname 之前发送到求解器)。
  • 在离线模式下调用时加载 pkgs_dirs 记录。

🔧 问题修复 🔧

  • 修复了在 23.11.1 中引入的回归,其中某些求解由于给定的规范输入顺序会导致程序崩溃。
  • 正确传播自定义本地通道(conda-build 工作区)。需要 libmamba 1.5.6 或更高版本。
  • 如果可以安全地删除不支持的 MatchSpec 字段,则不会引发错误。目前忽略 urlmd5sha256
  • 如果使用 --offline--use-index-cache 访问无状态 repodata 缓存,则不会崩溃。

Conda-Index 的变更 0.4.0

要更新 conda-index,请运行

conda install -n base conda-index=0.4.0

✨ 新功能 ✨

  • 添加 --compact-json/--no-compact-json 选项,默认值为 compact。
  • 添加了一个使用 conda 的新子命令插件挂钩的 index 子命令,允许使用 conda index 而不是 python -m conda_index。请注意,与旧的 conda-index 相比,CLI 已经更改。如果安装了 conda-build < 24.1.0,则仍将使用旧的 conda-index 代码而不是此插件。

🔧 问题修复 🔧

  • 在决定要索引的包时,除了检查 mtime 之外还要检查大小。
  • 更新缓存的 index.json,而不仅仅是统计值,以用于已索引的已更改包。

我们 ❤️ 我们的社区

总的来说,我们在本次发布周期中新增了 2 位贡献者;感谢我们开源社区的所有成员,他们的帮助使这些改进成为可能。

如果您有任何想法或想帮助改进任何 conda 社区项目,我们非常欢迎新(和回归)贡献者!😄