NixOS 构建错误:找不到“dbus/dbus.h”

NixOS 构建错误:找不到“dbus/dbus.h”

我正在尝试构建“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

相关内容