乐于分享
好东西不私藏

为什么信创电脑装软件总提示“架构不匹配”?一文讲透

为什么信创电脑装软件总提示“架构不匹配”?一文讲透

信创电脑安装软件,安装包下载下来,双击就是一句“架构不匹配”。

很多人第一反应是:软件是不是坏了?

其实,软件没坏,电脑也没坏,问题出在下载软件时只看了软件名称,没有看电脑的CPU架构。

同样是银河麒麟桌面版,电脑里面可能是飞腾、鲲鹏、兆芯、海光、龙芯,也可能是Intel和AMD。CPU不同,系统能运行的二进制程序就可能不同。

所以,安装包不是“能下载就能装”,还得和当前电脑的架构对应上。

首先:软件安装有三个匹配条件

很多人只关注“银河麒麟版”,其实,软件能不能正常安装,通常要同时看三件事:

第一,系统发行版和版本。

比如银河麒麟、统信UOS、Ubuntu,虽然都属于Linux,但软件包依赖和系统组件不一定一样。

第二,软件包格式。

常见的有.deb、.rpm、.AppImage和压缩包。格式不同,安装方法也不同。

第三,CPU架构。

常见的有amd64、arm64、loongarch64、sw_64和riscv64。

这三个条件中,有一个对不上,就可能安装失败。

第一步:先查清楚电脑是什么架构

电脑是什么架构,不能看电脑品牌猜,也不能看到“国产CPU”就直接下载。

打开终端,输入:

uname -m

常见输出大概是这样:

x86_64aarch64loongarch64sw_64riscv64

大致可以这样理解:

x86_64通常对应Intel或AMD的64位平台,软件页面上经常写成amd64。

aarch64通常对应64位ARM平台,软件页面上经常写成arm64。飞腾、鲲鹏这类平台,常见就是这个架构。

loongarch64对应龙芯64位平台。

sw_64对应申威平台,现在已经很少了。

riscv64对应64位RISC-V平台。

这里有一个容易混淆的地方:uname -m显示的是内核识别到的机器架构,软件包页面使用的名称可能略有不同。所以不能只看名称,还要看安装包自身的架构信息。

第二步:查看软件包到底支持什么架构

如果下载的是.deb安装包,可以这样查看:

dpkg-deb -f 软件包.deb Architecture

我这里查看这个.deb安装包是amd64,而如果电脑执行uname -m输出的是:

aarch64

那就很清楚了,这个安装包是给amd64电脑准备的,当前电脑是arm64,当然装不上。

如果下载的是.rpm包,可以查看:

rpm -qp --qf '%{ARCH}\n' 软件包.rpm

如果拿到的是一个可执行文件,不是安装包,可以输入:

file 软件名称

输出中一般会直接写明它是x86-64、ARM aarch64还是其他架构。

第三步:根据架构重新下载

确认电脑架构后,再回到软件官网找对应版本。

如果电脑是x86_64,一般找amd64或x86_64版本。

如果电脑是aarch64,一般找arm64或aarch64版本。

如果电脑是龙芯、申威或RISC-V平台,就要找软件厂商有没有提供对应版本。没有对应版本时,不是随便换一个ARM包就能解决。

这里要注意,系统版本和CPU架构是两回事。

“银河麒麟桌面版”只说明软件可能针对银河麒麟做过适配,不代表一个安装包可以覆盖所有CPU平台。

有些软件会分别提供:银河麒麟X86版、银河麒麟ARM版、银河麒麟龙芯版、银河麒麟申威版,下载时要同时看系统版本、CPU架构和软件包格式。

另外一些小问题

  1. 架构不匹配”和“依赖缺失”不是一回事

如果提示“软件包架构不匹配”,重点检查CPU架构。

如果提示“缺少依赖”、“无法满足依赖关系”,说明架构可能已经对了,但系统缺少某些运行库或组件。

这时可以先查看软件包依赖:

dpkg-deb -I 软件包.deb | grep Depends
  1. 不要看到安装失败,就认为是权限不够

有些人看到安装失败,就直接给软件加上“777”权限,权限只解决文件能不能读写,解决不了CPU指令集不匹配。

  1. 没有对应版本怎么办?

如果软件厂商没有提供当前架构版本,可以按这个顺序处理:

(1)找软件厂商的信创适配版本,或者联系厂商索要对应安装包。

(2)看看系统软件商店里有没有已经适配好的版本。

(3)确认软件是否有网页版或远程服务版本。

最后总结

以后在信创电脑上装软件,至少要先确认:

(1)当前电脑是什么CPU架构。

(2)系统是银河麒麟哪个版本。

(3)软件包是.deb还是.rpm。

(4)软件包内部支持什么架构。

(5)安装失败到底是架构问题,还是依赖问题。

方向找对了,重新下载对应版本,通常比反复重装、改权限、强制安装都省事。

当然,能用软件商店安装的,就尽量使用软件商店。

我是子渊,一个讲真话的运维人,不讲虚的,只讲踩过的坑和验证过的经验。关注我,少走弯路。

相关学习资料