信创电脑安装软件,安装包下载下来,双击就是一句“架构不匹配”。
很多人第一反应是:软件是不是坏了?
其实,软件没坏,电脑也没坏,问题出在下载软件时只看了软件名称,没有看电脑的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架构和软件包格式。
另外一些小问题
架构不匹配”和“依赖缺失”不是一回事
如果提示“软件包架构不匹配”,重点检查CPU架构。
如果提示“缺少依赖”、“无法满足依赖关系”,说明架构可能已经对了,但系统缺少某些运行库或组件。
这时可以先查看软件包依赖:
dpkg-deb -I 软件包.deb | grep Depends不要看到安装失败,就认为是权限不够
有些人看到安装失败,就直接给软件加上“777”权限,权限只解决文件能不能读写,解决不了CPU指令集不匹配。
没有对应版本怎么办?
如果软件厂商没有提供当前架构版本,可以按这个顺序处理:
(1)找软件厂商的信创适配版本,或者联系厂商索要对应安装包。
(2)看看系统软件商店里有没有已经适配好的版本。
(3)确认软件是否有网页版或远程服务版本。
最后总结
以后在信创电脑上装软件,至少要先确认:
(1)当前电脑是什么CPU架构。
(2)系统是银河麒麟哪个版本。
(3)软件包是.deb还是.rpm。
(4)软件包内部支持什么架构。
(5)安装失败到底是架构问题,还是依赖问题。
方向找对了,重新下载对应版本,通常比反复重装、改权限、强制安装都省事。
当然,能用软件商店安装的,就尽量使用软件商店。
我是子渊,一个讲真话的运维人,不讲虚的,只讲踩过的坑和验证过的经验。关注我,少走弯路。
夜雨聆风