经常会有人拿着一个安装包来找我。
他说:"这个软件是不是坏了?"
我问:"怎么了?"
他说:"别人电脑能装,我这台电脑就是装不上。"
过去一看,报错信息只有一句:软件包架构不匹配。说实话,刚接触国产系统那会儿,我第一次看到这个报错也是一脸懵,软件包还有架构?架构又是什么?为什么同样一个安装包有人能装,有人不能装?后来做信创项目越来越多,才发现这个问题真的太常见了,尤其是在银河麒麟、统信UOS这些系统里,几乎每隔一段时间就会有人来问一次。
以前用Windows的时候,很多人几乎感觉不到架构的存在,因为大部分电脑都是Intel CPU或者AMD CPU,下载软件时一般选择Windows版,结束。但信创环境不一样,现在你可能遇到海光、飞腾、鲲鹏、龙芯、兆芯、申威各种不同CPU,问题也随之而来。
举个最简单的例子,你在网上下载了一个软件,看到名字后面写着amd64,很多人觉得能下载就能装,结果拷到龙芯电脑上,直接报错。为什么?因为这个安装包是给x86架构准备的,而龙芯是LoongArch架构,两者根本不是同一个平台。这就好比你买了一把汽车钥匙,结果拿去开摩托车,钥匙本身没坏,但对象错了。
这些年我发现很多用户有一个误区,觉得Linux就是Linux,安装包应该通用,实际上并不是,同样都是.deb安装包,里面可能对应amd64、arm64、loongarch64完全不同的架构,外表一样,里面完全不同。
以前有个项目特别典型,用户使用的是龙芯平台,从网上下载了一个xxx_amd64.deb软件包,结果死活装不上,后来重新下载xxx_loongarch64.deb一装就成功,问题瞬间解决。所以后来每次安装软件,我都会先看两件事。第一电脑是什么架构;第二软件是什么架构。这比研究安装命令重要得多。
实际上随着国产化推进,这种问题以后还会越来越常见,因为过去大家基本都在同一种CPU环境工作。而现在一个单位里同时出现海光、飞腾、龙芯并不奇怪,同样的软件可能要准备三套安装包。
所以如果以后你遇到软件包架构不匹配,不要急着怀疑软件坏了,也不要急着重装系统。先看看你的电脑是什么架构,软件又是什么架构,很多时候问题其实就出在这里。
这些年做信创运维,我越来越觉得真正让人头疼的不是复杂故障,反而是这种看起来简单却经常被忽略的小问题。而软件包架构不匹配绝对算得上其中之一。
不知道大家在工作中有没有遇到过类似情况?欢迎评论区聊聊。