Conda中clang包的depends与constrains字段含义及作用咨询
问题1:constrains和depends字段分别列出的内容
depends字段列出的是当前clang包的强制运行时依赖:安装该包时,conda必须同时安装的依赖包列表,列表中可以指定依赖的版本、构建号等匹配规则。当前文件里该字段列出的是clang-13 13.0.0 default_hc23dcda_0、gcc_impl_linux-64两个依赖。constrains字段列出的是当前clang包的软版本约束规则:仅当用户环境中存在列表内的包时才生效的版本匹配规则,不会触发依赖的主动安装。当前文件里该字段列出的是libclang、clang-tools、llvm、llvm-tools、llvmdev五个包的13.0.0.*版本约束规则。
问题2:对depends的理解是否正确
你的理解整体正确,仅存在一处细节偏差:
若要安装13.0.0版本的clang,需要同时安装13.0.0版本的clang-13和gcc_impl_linux-64
修正点:clang-13要求必须为13.0.0版本且构建号为default_hc23dcda_0的特定版本,而gcc_impl_linux-64没有指定具体版本限制,只要是适配当前系统架构的可用版本即可,不需要固定为某一个版本。
问题3:constrains字段的作用、是否依赖llvm等包
作用说明
constrains是conda包的可选约束规则,用来避免包版本冲突:如果用户环境中同时安装了constrains列表内的包,这些包的版本必须匹配规则要求(本案例中要求必须是13.0.0.*的版本),否则conda会判定为冲突,阻止相关安装/升级操作。
依赖判定
本clang包不直接依赖constrains中列出的llvm等包:单独安装该clang包时,conda不会主动下载安装libclang、llvm等包,只有当你主动在环境中安装这些包时,才会触发版本校验规则。
内容的提问来源于stack exchange,提问作者doraemon
相关产品推荐
相关产品推荐

