處理 NixOS 缺少的依賴項 ~ libpng-dev
遠離像 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 包似乎有多個輸出,其中之一是 dev 建構。在我的 macOS 機器上:
brocking@station1:~/dev > nix-env -qasA nixpkgs.libpng.dev -PS libpng-apng-1.6.34
該系列的手冊中有一章
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 的強大之處在於它的純度——你必須準確地告訴它在哪裡可以找到所有東西,一開始這可能有點令人生畏。然而,一旦你明白了這一點,那麼純度就是你真正欣賞的東西。