Yod*_*ltz 3 dependencies software-installation nixos nix
远离像 Arch 这样的操作系统,其中软件包大多可用,如何处理缺少的开发依赖项,例如libpng-dev
?
我有一个 Node 包依赖问题 - pngquant-bin
. 它依靠libpng-dev
包来构建pngquant-bin。libpng
&pngquant
都在 Nixpkgs 中可用,但它试图找到libpng-dev
.
在这种情况下最好的解决方案是什么?例如设置一个覆盖,从源创建包...
研究:
使用libpng-config --cflag
显示开发标题的位置。我假设我可以以某种方式将 NPM 包定向到这些头文件以构建pngquant-bin
二进制文件。
我在 GitHub 上记录了一个问题,其中提供了更多详细信息:https : //github.com/svanderburg/node2nix/issues/123
免责声明:我是 NixOS 的新手 - 来自 Arch。我感谢任何建议,喜欢 NixOS!
看起来 libpng 包有多个输出,其中之一是开发版本。在我的 macOS 机器上:
brocking@station1:~/dev > nix-env -qasA nixpkgs.libpng.dev
-PS libpng-apng-1.6.34
Run Code Online (Sandbox Code Playgroud)
该集合的手册中有一个章节nixpkgs
涵盖了这一点。IIRC nixpkgs 集合包含了最近几个主要版本的多个输出,我相信现在许多软件包都是以这种方式构建的。
PS 在 nixpkgs 手册中还有一个部分涵盖了node.js 包,这可能也值得一看。
我快速浏览了您打开的 GitHub 问题,您似乎确实走在了正确的轨道上,但不幸的是,我对 node.js 不够熟悉,也node2nix
无法确切了解问题所在.
但是,我可以提出的一个一般观点是,每当您尝试使用 Nix 打包某些东西并且遇到如下错误时,这几乎总是意味着 1. 您需要告诉 nix 它是如何做到的可以获得依赖项(libpng-dev
在这种情况下)和 2. 您需要确保您尝试构建的 nix 表达式以某种方式包含对 1 的引用。(通常是通过buildInputs
nix 属性,尽管这在很大程度上取决于您正在使用什么构建系统),在您的情况下,我猜测它可能是由 生成pngquant
的default.nix
文件中表达式的参数node2nix
,尽管正如我所说,它对我来说非常陌生,所以我可能对此非常错误。
? compiling from source
? pngquant pre-build test passed successfully
? RequestError: pngquant failed to build, make sure that libpng-dev is installed
你可能会在#nixos IRC 频道的聊天中找到更多更快的帮助,那里的人非常有帮助,我以前在那里找到了很多知识。
最后一句话,Nix 的强大之处在于它的纯洁性——你必须准确地告诉它在哪里可以找到所有东西,一开始这可能有点令人生畏。然而,一旦你明白了这一点,那么纯度就是你可以真正欣赏的东西。
归档时间: |
|
查看次数: |
509 次 |
最近记录: |