麒麟桌面系统【在x86机器上查找arm的软件包】
现在麒麟的软件源,已经不能通过web浏览器查看包列表了,那我们要如何查找相关软件包的下载链接呢?
-
使用apt命令查看软件包信息,比如kshell软件
apt --print-uris download kshell
如果想简介显示,可以用awk过滤输出内容apt --print-uris download kshell | awk -F " " '{print $1}'
以上是显示当前架构对应的软件包
-
查看当前系统架构
dpkg --print-architecture #显示您系统的原生架构
-
添加arm64架构的支持
sudo dpkg --add-architecture arm64 sudo apt update -y显示所有额外添加的架构
sudo dpkg --print-foreign-architectures
-
查看arm架构的包
apt --print-uris download kshell:arm64 #显示您系统的原生架构
kshell:arm64:[包名:架构] 的格式,明确告诉 apt 我们需要 ARM64 版本的kshell
-
移除支持arm64架构的支持
sudo dpkg --remove-architecture arm64 sudo apt update -y
其他说明
-
“sudo dpkg --add-architecture arm64” 命令,并不会让您的 x86 系统运行 ARM 程序,它只是在软件源列表中注册了 ARM 架构,使得 apt 能够获取到 ARM 软件包的元数据(如版本、依赖、下载链接等)。 -
添加arm架构的支持后,本机以后安装软件时会不会有影响?
通常没有影响
-
- 架构隔离:apt 和 dpkg 能够非常清晰地区分不同架构的软件包。当您执行 sudo apt install package-name 时,它默认只会安装您主机原生架构(即 amd64)的软件包。它不会自动去安装 arm64 的包。
-
- 明确指定:只有当你明确在包名后加上架构(如 sudo apt install package-name:arm64)时,系统才会尝试去安装那个特定架构的软件包。
所以,仅仅添加了 arm64 架构支持,只是让系统知道有这些包的存在,并不会主动去安装它们,因此不会干扰您正常使用 amd64 的软件。
- 明确指定:只有当你明确在包名后加上架构(如 sudo apt install package-name:arm64)时,系统才会尝试去安装那个特定架构的软件包。
-
- 但是也有风险:假设您要安装一个名为 libexample-dev 的库,它被标记为 Multi-Arch: same。在只有 amd64 架构时,apt 会毫无疑问地安装 amd64 版本。但在添加了 arm64 架构后,如果这个包的两个架构版本在某些元数据上存在细微差异(比如“Provides”或“Conflicts”声明),apt 在解决依赖关系时可能会感到“困惑”,从而报错。这在处理大量底层依赖(尤其是在进行部分升级或使用非主流软件源时)时,有可能遇到。在执行 sudo apt upgrade 或 sudo apt install 时遇到关于架构冲突的错误,您可以考虑先移除 arm64 架构支持。
-
还有依赖怎么办?
结合这个文章看看:https://gxxc.wiki/kd/3250.html
软件包名称如何知道?例如上述kshell