gpt4 book ai didi

nix - 如何从源代码构建 Nix 包?

转载 作者:行者123 更新时间:2023-12-04 13:22:19 25 4
gpt4 key购买 nike

我认为 NixOS 很棒,但无法弄清楚如何从源代码构建包。了解Nix expression language不是问题,而是要知道该放什么 default.nix为了构建一个包。
gedit 的 Nix 表达式为例:

{ stdenv, intltool, fetchurl, enchant, isocodes
, pkgconfig, gtk3, glib
, bash, wrapGAppsHook, itstool, libsoup, libxml2
, gnome3, librsvg, gdk_pixbuf, file, gspell }:

stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;

propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];

nativeBuildInputs = [ pkgconfig wrapGAppsHook ];

buildInputs = [ gtk3 glib intltool itstool enchant isocodes
gdk_pixbuf gnome3.defaultIconTheme librsvg libsoup
gnome3.libpeas gnome3.gtksourceview libxml2
gnome3.gsettings_desktop_schemas gnome3.dconf file gspell ];

enableParallelBuilding = true;

preFixup = ''
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ gnome3.libpeas gnome3.gtksourceview ]}")
'';

meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Gedit;
description = "Official text editor of the GNOME desktop environment";
maintainers = gnome3.maintainers;
license = licenses.gpl2;
platforms = platforms.linux;
};
}
有人怎么能找到这个解决方案?我肯定错过了什么。

最佳答案

毫不奇怪,这样的包定义对任何人来说都有些不知所措。当您了解各种属性的影响时,您的示例包就变得非常简单。

根据我的经验,您会得到如下这样的包定义。我假设您现在没有从特定于语言的存储库中打包一些东西。您可能会使用的东西 make , 例如。

  • mkDerivation 开始
  • 观察构建失败
  • 通过添加依赖项、额外命令、配置标志、补丁等来修复错误。
  • 重复

  • 所以你有它,这是反复试验。使用所需的构建工具的经验有很大帮助。

    一些提示:
  • 看看类似的包,它们是如何定义的
  • 阅读 Nixpkgs 文档
  • 扫一扫语言生态包支持码
  • https://nixos.wiki/wiki/Generic_Algorithm_on_Doing_Packaging
  • 关于nix - 如何从源代码构建 Nix 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49209643/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com