我正在尝试构建“nvidiaBeta”驱动程序,但无法构建 nvidia-settings 并出现错误
gtk+-2.x/ctkgridlicense.c:38:23:致命错误:dbus/dbus.h:没有这样的文件或目录
我尝试过安装各种 dbus 软件包,但我在 nix 商店中得到的最接近的东西是来自 dbus_cplusplus 派生的“dbus-c++/dbus.h”。在搜索时,我读到显然我需要的内容应该包含在“dbus-libs”中,但它似乎在频道 17.03 中不可用。
我似乎无法弄清楚应该在这个库中引入哪个派生。我可以以某种方式解决这个问题并让它使用我从 dbus_cplusplus 派生中得到的问题吗?
答案1
正如已经提到的,Nix 在构建包时不会关心系统或用户安装的包,并且相关包需要显式声明其所有依赖项。
关于这个具体问题 - 该dbus/dbus.h
文件可以在推导dev
的输出中找到dbus
。 Nix 还提供了用于覆盖包定义的工具,我们可以使用这些工具将其输入dbus.dev
到 nvidia 设置的构建输入中。将以下内容添加到configuration.nix
:
nixpkgs.config.packageOverrides = pkgs:
{
linuxPackages = pkgs.linuxPackages.extend(self: super: {
nvidia_x11_beta = super.nvidia_x11_beta // {
settings = super.nvidia_x11_beta.settings.overrideAttrs(old: {
buildInputs = old.buildInputs ++ [ pkgs.dbus.dev ];
});
};
});
};
允许构建在我的 17.03 系统上成功。
答案2
与其他发行版不同,在 NixOS 上,即使您碰巧安装了正确的库,也不会产生任何影响,因为包必须声明其依赖项才能成功构建。
例如,如果您尝试构建包A这取决于包乙,安装包乙不会提供依赖;包裹A根本不会看到它。
至于Nvidia,我没看到英伟达测试版作为一个选项。您可以使用“nv”(开源驱动程序)或“nvidia”(专有驱动程序)。看https://nixos.org/nixos/manual/#idm140737316337280