在Guix中如何指定特定平台(如i686-linux)安装hello软件包?
在Guix中指定平台安装软件包
刚好我对Guix的跨架构安装流程比较熟悉,针对你提到的安装i686-linux版本hello包的需求,这里有两种实用的方法,从简单到进阶都覆盖到了:
1. 直接用--system参数快速安装
这是普通用户最常用的方式,直接在guix install命令里加上--system选项指定目标架构就行。比如安装i686-linux版本的hello,只需要运行:
guix install --system=i686-linux hello
这个参数会告诉Guix:要么从官方二进制缓存拉取预编译好的i686-linux版本hello(如果有的话,速度很快),要么自动启动交叉编译流程,为i686-linux架构构建这个包。
如果不想把不同架构的包混在默认profile里,还可以指定一个单独的profile来管理i686的软件:
guix install --system=i686-linux --profile=~/my-i686-apps hello
之后要使用这个profile里的程序,只需要加载它的环境:
source ~/my-i686-apps/etc/profile
2. 进阶:通过包属性指定架构
如果是在脚本、guix shell或者系统配置文件里需要指定架构,可以在包名后附加系统属性。比如用guix shell启动一个i686-linux的环境:
guix shell --system=i686-linux hello@i686-linux
或者在Guix的Scheme配置中定义特定架构的包:
(package (inherit hello) (properties `((system . "i686-linux"))))
不过这种方法更多用于定制化场景,日常安装用第一种方法就完全足够了。
小提示
- 确认目标架构是Guix官方支持的,i686-linux属于标准支持的架构,不用担心兼容性问题;如果是小众架构,可能需要先配置对应的交叉编译工具链。
- 如果遇到构建失败,先试试更新Guix到最新版本:
guix pull,很多问题都是旧版本的依赖导致的。
内容的提问来源于stack exchange,提问作者hmk
相关产品推荐
相关产品推荐

