昇腾部署第 B4 课:七种安装方式——同一套 CANN,为什么有七种装法
编制:观澜|日期:2026-10-05|级别:T2 标准级 层级:B 层 · L1 基础软件(B 层第 4 课,前接 B3《版本对应关系与多版本共存》) 素材来源:昇腾官方文档 MCP 实时抓取(CANN 9.2.0-beta.2 官方文档) 数据纪律:安装类型枚举(
InstallType)、操作系统对应关系、各方式的安装范围逐字出自官方文档;标注「归纳」的是便于记忆的整理,非官方口径。
第一段 · 章前定位
A2《产品线与形态》 讲完卡之后,你一定在官方文档里见过这样一幕:
点进"安装 CANN",页面上弹出一排筛选条件:产品类型 / 操作系统 / 安装方式…… 安装方式一栏里,选项有七八个,每个都长得像"安装 CANN"。
当时的问题被留到了现在:
同一套 CANN,为什么要给我七种装法? 我该选哪个?选错了会怎样?
这一课把这张选择题做完。
为什么它重要:装法是第一步——第一步选错, 后面所有步骤(环境变量、算子库、服务)都会跟着走偏, 而且报错信息通常不会告诉你"是你一开始选错装法了"。
这一课也把 B1–B3 串起来: B1 讲了 CANN 装在哪、环境变量怎么配; B2 讲了 ops 包按型号分发; B3 讲了版本升级与回退。 而"用哪种方式装",决定了上面这三件事的具体做法。
第二段 · 学习目标
学完这一课,你应该能回答:
- 七种装法是从哪三个维度切出来的(在不在线 / 装哪些件 / 什么 OS)
- 官方的
InstallType是哪七个,各是什么 - 操作系统与可用装法的对应关系(为什么别人能用的方式你的机器没有)
- 每种装法"装了什么、没装什么"——特别是驱动和 ops 包
- 怎么根据自己手上的条件选出那一种
第三段 · 为什么会有七种:三个维度切出来的
这不是"七个等价选项",而是"三个维度组合出来的七个格子"。
维度一:在线还是离线
| 取值 | 含义 |
|---|---|
| 在线 | 直接从官方源下载安装(不用先下包) |
| 离线 | 先把软件包下下来、传到机器上,再装 |
什么时候必须离线(归纳):生产环境不能上外网、内网集群、 或者要装的机器连不了公网——这是最常见的情况。
维度二:一次装完还是分开装
| 取值 | 含义 |
|---|---|
| 合一包 | 驱动 & Toolkit 打在一个包里,一次装完 |
| 独立包 | 驱动、Toolkit 各自一个包,分别装 |
官方原文里能直接看到这两个概念:离线安装(驱动&Toolkit 合一包)、离线安装(驱动&Toolkit 独立包)。
区别在于颗粒度(归纳): 合一包省事(一条命令装完两层); 独立包灵活(可以只升其中一层,比如 B3 讲的"只升 CANN 不升驱动"—— 这就要求驱动和 CANN 是两个包)。
维度三:你的操作系统是什么
这是最硬的一条约束。官方原文:
在线安装(Yum)和在线安装(Apt-get):分别支持部分 OS 使用,以页面筛选结果为准。
意思是:Yum 是 RPM 系发行版的包管理器,Apt-get 是 Debian 系的——
这两个不可能同时适用于一台机器。
官方的做法是给每个操作系统列一份"可用装法清单"(下一段就是这张表)。
第四段 · 官方的七种装法:InstallType
官方在《选择安装场景》里,用一张条件表把这七种装法用英文枚举名列了出来。 这七个名字你在看官方安装命令时会遇到:
| # | 官方 InstallType |
中文(官方表格用词) | 装什么 |
|---|---|---|---|
| 1 | netyum |
在线安装(Yum) | 驱动、Toolkit、ops |
| 2 | netapt |
在线安装(Apt-get) | 驱动、Toolkit、ops |
| 3 | netconda |
在线安装(Conda) | Toolkit、ops(不含驱动) |
| 4 | netpip |
在线安装(Pip) | 见官方页面 |
| 5 | local |
离线安装(驱动&Toolkit 独立包) | 驱动与 Toolkit 分开的包 |
| 6 | localpack |
离线安装(驱动&Toolkit 合一包) | 驱动与 Toolkit 合并的包 |
| 7 | netdocker |
在线安装(Docker 镜像) | 容器镜像形态 |
⚠️ 数据纪律提示:上表第 4 行(
netpip)的安装范围, 官方"各安装方式的使用场景"一节未作说明——本课不替它补。 其余各行的范围均有官方原文依据(见附录 A)。
官方对前三种的使用场景说明(原文)
- 在线安装(Yum)和在线安装(Apt-get):分别安装 NPU 驱动、Toolkit 和 ops 包; 分别支持部分 OS 使用,以页面筛选结果为准。
- 在线安装(Conda):分别安装 Toolkit 和 ops 包, 若需要安装 NPU 驱动,请参考其他安装方式。
从这三条能读出两个很关键的差异(归纳):
| 装法 | 驱动 | Toolkit | ops |
|---|---|---|---|
| Yum / Apt-get | ✅ 一起装 | ✅ | ✅ |
| Conda | ❌ 不装 | ✅ | ✅ |
⚠️ 这是本节最实用的一条:
用 Conda 装 CANN 的人,最常见的疏漏就是"以为装完了,其实驱动还没装"。 官方原话是"若需要安装 NPU 驱动,请参考其他安装方式"—— Conda 这条路只管 CANN 侧,不管驱动侧。
第五段 · 操作系统决定你能用哪几种(官方表)
官方《选择安装场景》的条件表,把每个操作系统支持哪些 InstallType 列了出来。
这张表解释了"为什么别人的教程你的机器用不了":
| 操作系统(官方列举) | 支持的 InstallType |
|---|---|
| openEuler / Kylin / UOS / BCLinux / CTyunOS / CULinux / AliOS … | netyum、netconda、netpip、local、localpack、netdocker |
| Ubuntu / veLinux / Debian … | netapt、netconda、netpip、local、localpack、netdocker |
读这张表能读出三件事
① 差别只有"在线装驱动"那一种:
RPM 系(openEuler 这一列)用 netyum;Debian 系(Ubuntu 这一列)用 netapt。
其余六种两边都有。
② 离线装法不分发行版:local 和 localpack 两边都在——
因为离线包是 .run 格式,不依赖发行版的包管理器。
③ 容器方式也两边都有:netdocker 都在。
实操结论(归纳): 如果你的机器是 Ubuntu 系,就不要再去找
netyum的教程—— 在官方文档的筛选器里把操作系统选成 Ubuntu,可用装法会自动收窄。⚠️ 数据纪律提示:官方条件表列出的操作系统不止上表这两组, 且以官方页面筛选结果为准。本课只举两组作对照,不声称是完整清单。
第六段 · 怎么选:一张决策表
按顺序问自己四个问题(归纳):
① 这台机器能上外网吗?
能 → 走【在线】(更省事)
不能 → 走【离线】(local / localpack)
② 我在什么操作系统上?
RPM 系(openEuler / Kylin / UOS …)→ 在线可选 netyum
Debian 系(Ubuntu / Debian / veLinux …)→ 在线可选 netapt
(不确定就查 /etc/os-release —— 官方 FAQ 让用户据此选择)
③ 我要一次装完,还是分开装?
想省事 → 合一包(localpack / 在线方式)
想分层管理版本 → 独立包(local) —— 这样 CANN 才能单独升级(B3)
④ 我到底要装几件东西?
npu-smi info 有输出吗? → 驱动装了没
ops 包装了吗? → 算子库(B2)
Toolkit 装了吗? → 主包(B1)
官方给的一条"新手推荐"
官方《快速安装》原文:推荐使用在线安装(Conda)方式, 无需预先安装依赖,即可直接安装最新版本的软件包。
但记住它的边界(第四段的结论):
Conda 不装驱动 —— 用它之前先确认 npu-smi info 能出结果。
官方给的另外两条前提(原文)
- 安装 CANN 前请确认已安装 NPU 驱动和固件,执行命令查询: 若返回驱动相关信息且无异常,则可继续安装 CANN。
- 除在线安装(Conda)方式外,使用其他的安装方式时, 需确保已具备 Python 环境及 pip3,当前 CANN 支持 Python3.7.x 至 3.14.x 版本。
这两条合起来是一个很有用的判断(归纳): 几乎所有装法都要求"驱动已经装好"(这是 A1 的内容), 几乎所有装法都要求"有 Python 和 pip3"(Conda 那条除外,因为它自带环境)。
顺带一个发布节奏的概念(官方原文)
在 CANN 快速安装中,稳定版本为核心功能完善、稳定性较高的版本, Weekly 版本为提供新特性、供开发者提前试用的版本。请根据需求进行选择。
归纳: - 生产环境 → 稳定版本 - 试用新特性 → Weekly 版本 - 两者不是"新旧",是"用途不同"
第七段 · 离线装法:包从哪来、怎么装
官方原文
离线安装时,请单击获取链接下载 CANN 软件包,并上传到安装环境任意路径。
所以离线装法就三步(归纳):
① 在能上网的机器上,从官方下载页拿到对应版本的软件包
(产品类型 / 操作系统 / 架构都要选对 —— 这接上 B2 的"按型号分")
② 传到目标机器的任意路径(官方举的例子是 /home/package)
③ 在那台机器上执行 .run 安装命令
官方对离线包的形态说明
| 离线类型 | 包名形态(归纳自官方用词) |
|---|---|
| 合一包 | Ascend-cann_<version>_linux-<arch>.run(官方升级文档提到这一命名) |
| 独立包 | 各自独立的驱动包、Toolkit 包、ops 包(如 Ascend-cann-toolkit_<version>_linux-<arch>.run) |
⚠️ 数据纪律提示:具体包名以官方下载页实际给出的为准, 本课只给出官方文档中出现过的命名形态,不列出完整包名清单。
离线包安装时的判断顺序(归纳)
① bash ./xxx.run --check ← 先验包的一致性与完整性
② bash ./xxx.run --info ← 看构建信息(可选,确认是不是你要的)
③ bash ./xxx.run --install ← 真装
为什么要先
--check:离线包的传输环节多(下载 → 拷贝 → U 盘 → 内网), 传输损坏是离线场景特有的风险。官方提供了这个参数,用它比装到一半失败强。
独立包场景下,安装顺序要注意
驱动和 Toolkit 是两个包(独立包),所以要分别装。 而它们各自的顺序规则不同——这是 A1 的内容(首次安装:驱动 → 固件; 覆盖/升级:固件 → 驱动)。本课不重复,只提醒:用独立包时,这个顺序要自己记住。
一个与 B3 呼应的细节
官方原文:合一包(
Ascend-cann_<version>_linux-<arch>……)
注意"合一包"这个词在官方文档里出现的位置—— 它出现在升级章节里,用来解释为什么合一包升级和独立包升级不一样。
归纳:选合一包还是独立包,不只在"装的时候"有区别,
在"以后升级/回退的时候"也有区别(B3 讲过:驱动&Toolkit 合一包不支持 --upgrade)。
⚠️ 这一条是本课最有价值的选型提醒: 贪省事选合一包,代价是以后升级的灵活性。装之前先想清楚这台机器会不会需要单独升级某一层。
第八段 · 出问题怎么查
| 现象 | 先查什么 |
|---|---|
| 官方页面上别人的安装命令,我这里没有 | 操作系统不同(netyum vs netapt)——回官方筛选器按你的 OS 筛 |
用 Conda 装完,npu-smi info 没输出 |
Conda 不装驱动(官方原文)→ 用其他方式装驱动(A1) |
| 装 CANN 报"缺少 Python 依赖" | 官方要求除 Conda 外需具备 Python 环境与 pip3(3.7.x–3.14.x) |
| 内网机器装不了 | 走离线装法;包要在能上网的机器上下好再传 |
| 离线包装到一半失败 | 先跑 --check 验包(传输损坏是离线场景的特有风险) |
| 装完能跑,但以后想单独升 CANN 升不了 | 可能装的是合一包(官方:合一包不支持 --upgrade)→ 见 B3 |
| 不确定该选哪种装法 | 按第六段的四个问题走;不确定 OS 就看 /etc/os-release(官方 FAQ 的做法) |
⭐ 一个最省时间的判断法
"我该用哪种装法"这个问题的答案,八成由两个事实决定:
- 这台机器能不能上外网(决定在线 / 离线)
- 这台机器的操作系统是什么(决定
netyum还是netapt)
先把这两个查清楚,剩下的选择空间就只剩一两种了。
第九段 · 小结与下一课
三句话带走
- 七种装法是三个维度的组合:在线/离线 × 合一包/独立包 × 操作系统的包管理器。 不是七个等价选项。
- 在线装法的差别在"装什么":
Yum/Apt-get装驱动+Toolkit+ops;Conda不装驱动(官方原文)——这是最容易踩的坑。 - 选合一包省事,但代价是升级灵活性:官方明确合一包不支持
--upgrade—— 想以后能单独升 CANN,就用独立包。
本课在体系里的位置
─── L0 硬件与环境(A 层,已完成)───
A0 一张地图 / A1 驱动与固件 / A2 产品线与形态 / A3 HDK 到底指什么
─── L1 基础软件(B 层)───
B1 CANN 是什么、装在哪、环境变量怎么配 ✅
B2 算子库与算子包:为什么会"找不到算子" ✅
B3 版本对应关系与多版本共存 ✅
B4 七种安装方式:为什么有七种装法 ★ 本课
B5(拟)CANN 装进容器
本课留下的"钩子"
| 钩子 | 在哪一课填 |
|---|---|
netdocker 那条路——容器镜像怎么用、怎么自己搭 |
B5 |
容器里的两件大事:访问 /dev/davinci* 与 CANN 路径 |
B5 |
| 驱动、固件在容器场景怎么处理 | B5 |
课后自测(3 题)
- 为什么"在线安装(Yum)"和"在线安装(Apt-get)"不可能同时适用于一台机器?
- 用 Conda 装完 CANN,
npu-smi info没有输出。最可能的原因是什么? - 你在一台内网机器上装 CANN,以后可能需要单独升级 CANN 而不动驱动。该选合一包还是独立包?为什么?
附录 A · 本课引用的官方出处
| 内容 | 出处 |
|---|---|
七种 InstallType 枚举(netyum / netapt / netconda / netpip / local / localpack / netdocker) |
官方《选择安装场景》zh/CANNCommunityEdition/920beta2/softwareinst/instg/instg_0000.html(条件表 · InstallType 列) |
各操作系统与可用 InstallType 的对应关系 |
同上(条件表 · OS 行) |
| 「在线安装(Yum)和在线安装(Apt-get):分别安装 NPU 驱动、Toolkit 和 ops 包;分别支持部分 OS 使用」 | 官方《快速安装 FAQ》zh/CANNCommunityEdition/920beta2/softwareinst/instg/instg_0050.html |
| 「在线安装(Conda):分别安装 Toolkit 和 ops 包,若需要安装 NPU 驱动,请参考其他安装方式」 | 同上 |
| 「推荐使用在线安装(Conda)方式,无需预先安装依赖」 | 官方《快速安装》zh/CANNCommunityEdition/83RC1/softwareinst/instg/instg_quick.html |
「安装前请确认已安装 NPU 驱动和固件,执行 npu-smi info 查询」 |
同上 |
| 「除在线安装(Conda)外,其他方式需具备 Python 环境及 pip3」(版本范围) | 同上 / 官方《安装 CANN》 |
| 「离线安装时下载软件包并上传到安装环境任意路径」 | 同上 |
| 稳定版本 / Weekly 版本的区分 | 官方《选择安装场景》 |
合一包命名形态 Ascend-cann_<version>_linux-<arch>;合一包不支持 --upgrade |
官方《升级 CANN》《升级前必读》instg_0030.html / instg_0028.html |
.run 包参数(--check / --info / --install / --install-path / --devel / --full 等) |
官方《参数说明》zh/CANNCommunityEdition/920beta2/softwareinst/instg/instg_0043.html |
⚠️ 数据纪律提示: ①
netpip的安装范围:官方"各安装方式的使用场景"一节未作说明 → 本课未填; ② 操作系统清单不完整:官方条件表列举的 OS 多于本课示例 → 本课只举两组对照, 并明确"以官方页面筛选结果为准"; ③ 未列具体软件包名清单:以官方下载页实际给出的为准; ④ 标注「归纳」的解读(决策四问、选型建议)非官方口径。
附录 B · 本课出现的命令详解
npu-smi info
- 含义:查看 NPU 设备信息(A1 讲过细节)。
- 本课用法:装 CANN 之前的第 0 步——确认驱动装好了没。
- 官方原文:「安装 CANN 前请确认已安装 NPU 驱动和固件,执行命令查询, 若返回驱动相关信息且无异常,则可继续安装 CANN」。
- 期望结果:能看到设备列表(卡在、驱动正常)。
- 不用会怎样:装完 CANN 才发现驱动没装 → 白折腾一轮。
cat /etc/os-release
- 含义:查看当前操作系统的发行版与版本。
- 拆解:
/etc/os-release是大多数 Linux 发行版都提供的系统标识文件。 - 用法:
cat /etc/os-release - 期望结果:输出
NAME、VERSION等字段(如openEuler、Ubuntu)。 - 为什么本课要用:官方 FAQ 让用户据此选择安装方式——
知道了发行版,才能判断用
netyum还是netapt。 - 不用会怎样:照着别人的
yum教程在 Ubuntu 上敲,报"command not found"。
bash ./<包名>.run --check
- 含义:检查软件包的一致性和完整性(官方《参数说明》)。
- 用法:
bash ./Ascend-cann-toolkit_9.2.0-beta.2_linux-aarch64.run --check - 为什么离线装法尤其要用:离线包的传输环节多,损坏风险高。
- 期望结果:检查通过(包完整)。
- 不用会怎样:包损坏时错误在安装中途才暴露,排查更费时。
bash ./<包名>.run --info / --list
- 含义:
--info查软件包构建信息;--list查软件包文件列表。 - 用法:
bash ./Ascend-cann-toolkit_9.2.0-beta.2_linux-aarch64.run --info - 用途:装之前确认"这是不是我要的那个包"(版本对不对、是不是本型号)。
参数速查表(本课涉及的)
| 命令 / 参数 | 用途 |
|---|---|
npu-smi info |
装 CANN 前确认驱动就位(第 0 步) |
cat /etc/os-release |
查发行版 → 决定用 netyum 还是 netapt |
.run --check |
验包完整性与一致性(离线场景必做) |
.run --info / --list |
看包的构建信息 / 文件列表 |
.run --install [--install-path=<path>] |
安装(可指定路径,见 B3) |
.run --devel |
开发模式安装(只装开发环境所需);仅合一包 / Toolkit / ops 支持 |
.run --full |
无驱动场景下全量安装;仅 Toolkit 支持 |
pip3 list |
查已安装 Python 库(配合 NNAL 的 --torch_atb 使用) |
本课只列与"选装法"相关的参数。 B3 附录 B 有更完整的安装/升级/卸载参数速查表。
附:B 层四课的分工(避免重复)
| 问题 | 在哪一课 |
|---|---|
| CANN 是什么、有哪些包、装在哪、环境变量怎么配 | B1 |
| 算子库装了什么、为什么按型号分、"找不到算子"怎么查 | B2 |
版本怎么配套、cann 软链接、升级/回退规则、冷补丁 |
B3 |
| 七种装法从哪来、各装什么、怎么选、离线包怎么装 | 本课(B4) |
| 容器场景怎么装、镜像怎么选 | B5 |