问题标签 [nixpkgs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nix - Nix 中的构建与运行时依赖关系
我刚刚开始掌握 Nix,如果我错过了文档中问题的答案,我深表歉意。
我想使用 Nix 来设置具有最少库和可执行文件集的安全生产机器。我不希望出现任何编译器或其他构建工具,因为这些可能是安全风险。
当我安装一些包时,它们似乎只依赖于最小的运行时依赖集。例如,如果我安装apache-tomcat-8.0.23
,那么我将获得一个 Java 运行时 (JRE) 和包含 Tomcat 的预构建 JAR 文件。
另一方面,一些包似乎包含一个完整的构建工具链作为依赖项。以另一个基于 Java 的示例为例,当我安装spark-1.4.0
Nix 时,会拉下包含编译器的 Java 开发工具包 (JDK),它还会拉下 Maven 构建工具等。
所以,我的问题如下:
- Nix 包在构建和运行时依赖项之间有什么区别吗?
- 为什么有些包似乎依赖于构建工具,而另一些只需要运行时?这一切都取决于包作者如何包装应用程序吗?
- 如果一个包包含我不想要的构建依赖项,作为操作员,除了为同一个应用程序设计我自己的替代包之外,我能做些什么吗?
非常感谢。
nix - 找不到 glpk 和 pcre (NIXOS)
我正在尝试在我的 NixOS 中构建自己的 nix-shell 环境。我有 2 个 .nix 文件,default.nix 和 shell.nix,这是配置:
默认.nix:
shell.nix:
但是当我做nix-shell时,我得到了这个错误:
据我了解,default.nix 只是一个将由 shell.nix、cmiiw 调用的函数。问题是:
- 我的代码有错误吗?
- 我都用过
{nixpkgs ? (import <nixpkgs> {} ) }
,{pkgs ? (import <nixpkgs> {})}
但还是出现同样的错误,这两者有什么不同吗? - 排除 ghcwithPackages 可以吗?
qt - 如何使用 qt 库中的调试符号为 qt 5.5 创建开发 shell
我有一个开发外壳,buildInputs
其中包含一个条目qt55.qtbase
。这很好用。
今天,我遇到了一个 qt 库中发生的段错误,我想要带有调试符号的 qt 库。
我看了看,nixpkgs/pkgs/development/libraries/qt-5/5.5/default.nix
发现它需要一个参数developerBuild
。
我之前已经将参数引入到buildInputs
像这样的简单 shell 中callPackage
,但是 qt 包的构造超出了我的想象,我无法为 shell 生成有效的 nix 文件。
如何为安装带有调试符号的 qt 库的 qt 5.5 软件开发创建开发 shell?
nix - 将运行时依赖注入到 nix 包中
通过覆盖 buildInputs 将运行时依赖项添加到包会导致包重新构建。有没有一种简单的方法可以在不重新编译的情况下将运行时依赖项注入包中?
所以基本上将 package/bin 添加到 PATH 并将 package/lib 添加到 LD_LIBRARY_PATH
node.js - NixOS 安装特定的 NodeJS 版本
我可以看到 NixOS 有以下版本可供安装:
然而 systemPackages 不喜欢我安装nodejs-5.9.0
,因为它抱怨说:
这表明我做错了什么。我宁愿不只是安装,nix-env -i ...
因为我希望它在系统范围内(并且我正在为我的所有开发机器构建我的标准 NixOS 配置)。
根据nixpkgs 存储库v6 可用,但我不知道如何nixos-rebuild
通过 configuration.nix 或其他方式安装它。
如何正确配置它以便我可以安装最新版本的 NodeJS,或者专门安装 5.9.0?
haskell - nixOS:如何从同一包,同一版本的两个实例之间的冲突中恢复
这是我的nixos
版本:
这是我的shell脚本:
这是问题所在。请注意,同一包的同一版本的两个实例之间存在冲突:
我知道如果包有不同的版本,那么我可以这样做:
但是由于包名和版本都是一样的,不知道怎么办。
我怎样才能从中恢复过来?
nix - 覆盖 python27Packages.bepasty-server
为了试验上游的变化,我想src=
改变pkgs.python27Packages.bepasty-server
.
通读https://nixos.org/nixpkgs/manual/#chap-functions没有示例如何执行此操作pythonPackages
!
所以我尝试了下面的东西,我在文档的一些 xml 代码中找到了这些东西。但它不起作用......这是我需要你帮助的部分!
包覆盖
主意
结果是:
减少代码
结果是:
所以看起来这根本行不通,但为什么呢?
系统包
相反,这里似乎正在工作:
但是,我不需要 bepasty-server 二进制文件,interactive environment
而是需要覆盖 pkgs 以便bepasty service
使用它!
idris - 如何在另一个 nixpkg 中使用与 nixpkg 一起安装的 idris 包?
目前,我在使用与 nixpkg 一起安装在另一个依赖它的 Idris 包中的 Idris 包时遇到了一些问题。这两个软件包都在 Debian 系统上进行了测试,所以问题不在于 Idris 代码本身,而在于它们在 NixOS 系统上的安装方式。nix-env -f math.nix -i idris_math
我相信我可以通过调用where来成功安装第一个包,其中math.nix
定义为:
然后我可以运行nix-env -q
并查看idris_math
已安装。第二个 nixpkg 看起来与 相同math.nix
,不同之处在于名称已更改并且buildDepends
行现在是buildDepends = [ idris idris_math ]
. 但是,当我尝试构建或安装此软件包时,我遇到了error: undefined variable 'idris_math'
. 有谁知道我做错了什么,或者解决这个问题的方法?
python - 在 vim_configurable.customize 中用 python3 覆盖 python
我正在按照这个模板使用 Nix 配置我的自定义 vim。我vim-config/default.nix
的如下:
尽管第 5 行有一个(pkgs // { python = pkgs.python3; })
覆盖,python3 仍然没有使用(当我运行vim --version
它时显示+python -python3
)。我错过了什么吗?
haskell - Haskell / Stack / Nix 构建失败,需要 pkg-config >= 0.9.0 和 cairo >= 1.2.0,但最新版本是 pkg-config 0.29.2 和 cairo 1.15.4
我正在使用 Stack 和 Nix 构建一个 Haskell 项目,并依赖于cairo
Hackage 的库。
当我构建项目时,我收到一个错误:无法找到pkg-config >= 0.9.0
或cairo >= 1.2.0
. 但是,根据他们的网站,最新版本是pkg-config 0.29.2
and cairo-1.15.4
,这也反映在 Nix 包管理器中。
另一方面, 2006 年的这篇文章宣布了 Cairo 1.2.0 的发布,这进一步混淆了这个问题。
问题
nixpkgs
为什么预期版本与pkg-config
/cairo
网站上发布的版本有如此大的不同?在 macOS 上构建你有什么建议
cairo
(最好的情况:将 Nix 用于系统包,将 Stack 用于 Haskell 包)
重现步骤: