Nixos
在 Nix 中,如何建構具有 Python 安裝後腳本的包?
我正在嘗試為Foliate進行 Nix 派生,這是我的第一個真正的派生,所以我還不知道我在做什麼。
這是我到目前為止所擁有的。它建構並安裝,但失敗並出現以下錯誤:
Running custom install script '/build/source/build-aux/meson/postinstall.py' Failed to run install script '/build/source/build-aux/meson/postinstall.py' FAILED: meson-install /nix/store/2b4cdbcs1xbqjna5dr4qrr1p9p9bgm98-meson-0.51.2/bin/meson install --no-rebuild ninja: build stopped: subcommand failed. builder for '/nix/store/32vn9xlxlk9zb7vmpm90bz5i5qq59fjc-foliate-1.5.3.drv' failed with exit code 1 error: build of '/nix/store/32vn9xlxlk9zb7vmpm90bz5i5qq59fjc-foliate-1.5.3.drv' failed
我嘗試添加
python3
為建構依賴項,但這似乎不起作用。我錯過了什麼?另外,還有其他方法可以改進或簡化這種推導嗎?
發生此錯誤是因為文件的 shebang 指向類似 的
/usr/bin/env
內容,這在 Nix 沙箱中不可用。我們通常通過呼叫
patchShebangs
該部分中的文件來解決這個問題postPatch
。有時該文件不可執行,因此您可能需要這樣做;不過,這不是問題。
postPatch = '' chmod +x build-aux/meson/postinstall.py # not necessary here patchShebangs build-aux/meson/postinstall.py '';
另請注意,我們已經有一個(不完整的)PR 添加 Foliate,您可能想看看。