Ошибка сборки NixOS: «dbus / dbus.h» не найден

Я пытаюсь собрать драйвер "nvidiaBeta", но он не может построить nvidia-settings с ошибкой

gtk + -2.x / ctkgridlicense.c: 38: 23: фатальная ошибка : dbus / dbus.h: Нет такого файла или каталога

Я пробовал устанавливать все виды пакетов dbus, но самое близкое, что я нашел в моем магазине nix, - это "dbus-c ++ / dbus.h" из производной dbus_cplusplus. Во время поиска я прочитал, что очевидно то, что мне нужно, должно содержаться в "dbus-libs", но похоже, что это не доступно в канале 17.03.

Похоже, я не могу понять, какое происхождение предполагается использовать в этой библиотеке. Могу ли я как-то обойти проблему и заставить его использовать тот, который у меня есть из производной dbus_cplusplus?

0
17.08.2017, 03:10
2 ответа

Как уже упоминалось, 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.

0
28.01.2020, 04:41

В отличие от других дистрибутивов, в NixOS, даже если вы установите правильные библиотеки, это не будет иметь значения, поскольку пакеты должны объявлять свои зависимости для успешной сборки.

Например, если вы пытаетесь собрать пакет A и он зависит от пакета B , установка пакета B не предоставит зависимость; package A его просто не увидит.

Что касается Nvidia, то я не вижу nvidiaBeta как вариант. Вы можете использовать «nv», который является драйвером с открытым исходным кодом -, или «nvidia», который является проприетарным драйвером. См.https://nixos.org/nixos/manual/#idm140737316337280

0
28.01.2020, 04:41

Теги

Похожие вопросы