软件包架构后缀怎么读
同一种软件在不同 CPU 架构上要分发不同的包:rpm 系看 aarch64、x86_64、loongarch64 等后缀,deb 系看 arm64、amd64 等。仓库同样按架构提供元数据,客户端只应指向本机架构的源。信创环境里 ARM 与 x86 混用很常见,部署脚本如果硬编码包名与版本号,换架构就装不上,正确做法是按本机架构动态选择。注意 aarch64 与 arm64 是同一架构的两种叫法。
基本信息
| 查本机架构 | uname -m、lscpu、rpm -q --qf '%{ARCH}\n' 包名 |
|---|---|
| rpm 查看包架构 | rpm -qp --qf '%{NAME}-%{VERSION}.%{ARCH}\n' 包文件 |
| deb 查看包架构 | dpkg-deb -I 包文件 | grep -E 'Package|Architecture' |
| 对应关系 | aarch64 与 arm64 同架构;x86_64 与 amd64 同架构 |
| 仓库要求 | 源清单保持单一架构,不要混配 |
典型使用场景
- 下载安装包前:先确认本机架构再取对应产物,避免装错
- 脚本适配:部署脚本按 uname -m 动态拼包名
- 仓库核对:确认内网源同步的架构与本批机器一致
- 故障排查:安装报架构不符时快速定位是取错包
- 资产盘点:统计现网机器架构分布,规划补丁与镜像
包架构查看
包架构查看
uname -m # 本机架构
lscpu | grep -E 'Architecture|Model name' # 架构与 CPU 型号
rpm -qp --qf '%{NAME}-%{VERSION}.%{ARCH}\n' pkg.rpm # rpm 包声明的架构
dpkg-deb -I pkg.deb | grep -E 'Package|Architecture' # deb 包声明的架构
rpm -q --qf '%{ARCH}\n' kernel # 已装包的架构源架构核对
源架构核对
grep -hE 'name=|baseurl=' /etc/yum.repos.d/*.repo | head -20
head /etc/apt/sources.list 2>/dev/null
rpm -qa --qf '%{ARCH}\n' | sort | uniq -c | sort -rn # 已装包架构分布
dpkg --print-architecture # deb 系统架构
# 脚本里按架构取包(示例):
case $(uname -m) in
x86_64) pkg="tool-x86_64.rpm" ;;
aarch64) pkg="tool-aarch64.rpm" ;;
esac架构命名对照
| 架构 | rpm 后缀 | deb 后缀 | 典型平台 |
|---|---|---|---|
| 64 位 x86 | x86_64 | amd64 | 主流国产 x86 整机 |
| 64 位 ARM | aarch64 | arm64 | 鲲鹏、飞腾整机 |
| 龙芯 | loongarch64 | loong64 | 龙芯平台 |
| 兆芯/海光 | x86_64 | amd64 | x86 兼容路线 |
| 32 位 ARM | armv7hl | armhf | 老旧嵌入式设备 |
aarch64 与 arm64 是同一架构的两种叫法,脚本做判断时要同时兼容两者,否则在 deb 系 ARM 机上判定失败;同理 x86_64 在 deb 系里写作 amd64。
下载安装包时先 uname -m 再选产物,能省掉一轮「装到一半才发现架构不对」的返工;交付清单里建议同时记录包架构信息。
多架构仓库混配会让包管理器解析出错或装错包,源清单保持单一架构,混用机器分别配置。