OSX 上的 Nix 无法构建 nano?
Nix on OSX fails to build nano?
我正在尝试使用 nix,但我 运行 遇到了一个问题,我认为这与 nix 未能构建 nano 有关,但我不确定。我正在使用 OSX 10.11.4(我对 Mac 也很陌生)并且收到以下错误:
clang -DHAVE_CONFIG_H -I. -I.. -DLOCALEDIR=\"/nix/store/h1afxzyfxh7xc8b0scvq831s1yapczgm-nano-2.6.3/share/locale\" -DSYSCONFDIR=\"/etc\" -I/nix/store/gmb9mxkm5mqfnhlav16rx5x7wf070qqf-ncurses-5.9-dev/include/ncursesw -I/nix/store/gmb9mxkm5mqfnhlav16rx5x7wf070qqf-ncurses-5.9-dev/include -g -O2 -Wall -c -o winio.o winio.c
winio.c:513:15: error: use of undeclared identifier 'TIOCLINUX'
if (ioctl(0, TIOCLINUX, &modifiers) >= 0 && (modifiers & 0x04)) {
^
1 error generated.
是不是我哪里设置错了?我所做的就是通过 curl ... | sh
然后 source ~/.nix-profile/etc/profile.d/nix.sh
.
设置 nix
我正在尝试从这个 shell.nix:
{ nixpkgs ? import <nixpkgs> {}, compiler ? "default" }:
let
inherit (nixpkgs) pkgs;
# Build a default.nix file from our .cabal file:
here = ./.;
project = pkgs.stdenv.mkDerivation ({
name = "default.nix";
buildCommand = ''
${pkgs.cabal2nix}/bin/cabal2nix file://${here} > $out
'';
});
# Use the package set for our compiler:
haskellPackages = if compiler == "default"
then pkgs.haskellPackages
else pkgs.haskell.packages.${compiler};
# Helper function that gets Nix-packaged dependencies off GitHub.
# GitHub project needs a default.nix file for this to work.
fetchHaskell = { url, rev, sha256 }:
haskellPackages.callPackage (pkgs.fetchgit { inherit url rev sha256; }) {};
drv = haskellPackages.callPackage project {
# Specify GitHub dependencies here.
# You can get url, rev and sha256 by running 'nix-prefetch-git git@...'
...snip....
};
in
if pkgs.lib.inNixShell then drv.env else drv
任何指点将不胜感激。
我对 nix 一无所知,但我从源代码构建 nano 时遇到了同样的错误。问题是 Linux 控制台上的一段代码检查 ctrl-arrow 键被无条件包含,导致构建在除 Linux.
以外的任何系统上失败
找到 winio.c 的整个部分(我手动下载的 nano 版本 2.6.3 上的第 507-523 行),然后删除它(我在它前面放了 #ifdef TIOCLINUX
和#endif
之后,但只需删除它,使用 #if 0 或将其注释掉也可以)如果您无法控制 nix 构建的源代码,您可能需要通过其他方式安装 nano (手动源码编译,或者macports,或者fink,或者homebrew)
MacPorts 版本的 nano 包含解决此问题的补丁:https://trac.macports.org/browser/trunk/dports/editors/nano/files/patch-src-winio.c.diff
这似乎是个问题,现已修复。 nixpkgs 存储库上的错误跟踪器是报告此类问题的好地方。人们通常对损坏的包裹非常敏感。
绝大多数 Nix 用户 运行 Linux,所以包有时会在 OSX 上损坏,因为它没有经过足够的测试。
相关问题:
我正在尝试使用 nix,但我 运行 遇到了一个问题,我认为这与 nix 未能构建 nano 有关,但我不确定。我正在使用 OSX 10.11.4(我对 Mac 也很陌生)并且收到以下错误:
clang -DHAVE_CONFIG_H -I. -I.. -DLOCALEDIR=\"/nix/store/h1afxzyfxh7xc8b0scvq831s1yapczgm-nano-2.6.3/share/locale\" -DSYSCONFDIR=\"/etc\" -I/nix/store/gmb9mxkm5mqfnhlav16rx5x7wf070qqf-ncurses-5.9-dev/include/ncursesw -I/nix/store/gmb9mxkm5mqfnhlav16rx5x7wf070qqf-ncurses-5.9-dev/include -g -O2 -Wall -c -o winio.o winio.c
winio.c:513:15: error: use of undeclared identifier 'TIOCLINUX'
if (ioctl(0, TIOCLINUX, &modifiers) >= 0 && (modifiers & 0x04)) {
^
1 error generated.
是不是我哪里设置错了?我所做的就是通过 curl ... | sh
然后 source ~/.nix-profile/etc/profile.d/nix.sh
.
我正在尝试从这个 shell.nix:
{ nixpkgs ? import <nixpkgs> {}, compiler ? "default" }:
let
inherit (nixpkgs) pkgs;
# Build a default.nix file from our .cabal file:
here = ./.;
project = pkgs.stdenv.mkDerivation ({
name = "default.nix";
buildCommand = ''
${pkgs.cabal2nix}/bin/cabal2nix file://${here} > $out
'';
});
# Use the package set for our compiler:
haskellPackages = if compiler == "default"
then pkgs.haskellPackages
else pkgs.haskell.packages.${compiler};
# Helper function that gets Nix-packaged dependencies off GitHub.
# GitHub project needs a default.nix file for this to work.
fetchHaskell = { url, rev, sha256 }:
haskellPackages.callPackage (pkgs.fetchgit { inherit url rev sha256; }) {};
drv = haskellPackages.callPackage project {
# Specify GitHub dependencies here.
# You can get url, rev and sha256 by running 'nix-prefetch-git git@...'
...snip....
};
in
if pkgs.lib.inNixShell then drv.env else drv
任何指点将不胜感激。
我对 nix 一无所知,但我从源代码构建 nano 时遇到了同样的错误。问题是 Linux 控制台上的一段代码检查 ctrl-arrow 键被无条件包含,导致构建在除 Linux.
以外的任何系统上失败找到 winio.c 的整个部分(我手动下载的 nano 版本 2.6.3 上的第 507-523 行),然后删除它(我在它前面放了 #ifdef TIOCLINUX
和#endif
之后,但只需删除它,使用 #if 0 或将其注释掉也可以)如果您无法控制 nix 构建的源代码,您可能需要通过其他方式安装 nano (手动源码编译,或者macports,或者fink,或者homebrew)
MacPorts 版本的 nano 包含解决此问题的补丁:https://trac.macports.org/browser/trunk/dports/editors/nano/files/patch-src-winio.c.diff
这似乎是个问题,现已修复。 nixpkgs 存储库上的错误跟踪器是报告此类问题的好地方。人们通常对损坏的包裹非常敏感。
绝大多数 Nix 用户 运行 Linux,所以包有时会在 OSX 上损坏,因为它没有经过足够的测试。
相关问题: