GNU/GUIX manifest指定自定义模块找不到但guix build正常问题咨询
问题原因
- 包名拼写错误:manifest里写的包名字符串是
noguix-hugo,和你自定义模块里定义的包名nonguix-hugo不一致,少了开头的n字符,导致specifications->manifest按字符串搜索时匹配不到对应包。 - 路径拼写存在不匹配风险:你注释中标注自定义模块存放在
/module/root-1/site-lisp/下,但执行guix package时传入的--load-path参数值是/module/root1/site-lisp,root后少了横杠,如果你的模块实际放在root-1目录下,该路径配置错误会导致Guix无法扫描到模块。 specifications->manifest的搜索限制:该函数是从Guix的全局包注册表中搜索匹配字符串的包,如果你的自定义模块没有显式导出包变量,就算模块路径被正确加载,也可能无法被全局搜索命中。
解决方案
- 优先修正manifest中的包名拼写错误,将
"noguix-hugo"改为和实际包名一致的"nonguix-hugo"。 - 核对
--load-path参数的取值和实际存放模块的路径完全一致,修正/module/root1/site-lisp为/module/root-1/site-lisp(如果你的模块确实存放在root-1目录下)。 - 建议修改manifest写法,放弃字符串搜索模式,直接导入模块后引用包变量,彻底避免匹配错误,示例写法:
(use-modules (nonguix-hugo) (gnu packages golang)) (list nonguix-hugo go)
如果需要保留specifications->manifest写法,请确认自定义模块中已显式导出nonguix-hugo包变量。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

