我在nix
不是root用户的系统中以“单用户模式” 使用(请参见下面有关我的nix设置的说明)。
我想快速运行我的一个二进制文件,该二进制文件与系统中不存在的库动态链接。
因此,我使用以下命令安装了该库nix
:
$ nix-env -qa 'gmp'
gmp-4.3.2
gmp-5.1.3
$ nix-env -i gmp-5.1.3
但是链接器仍然找不到该库:
$ ldd -r ../valencies
../valencies: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ../valencies)
../valencies: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ../valencies)
linux-vdso.so.1 => (0x00007fffbbf28000)
/usr/local/lib/libsnoopy.so (0x00007f4dcfbdc000)
libgmp.so.10 => not found
libffi.so.5 => /usr/lib64/libffi.so.5 (0x00007f4dcf9cc000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4dcf748000)
librt.so.1 => /lib64/librt.so.1 (0x00007f4dcf540000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4dcf33c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4dcf11f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4dced8b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4dcfde7000)
undefined symbol: __gmpz_gcd (../valencies)
undefined symbol: __gmpn_cmp (../valencies)
undefined symbol: __gmpz_mul (../valencies)
undefined symbol: __gmpz_fdiv_r (../valencies)
undefined symbol: __gmpz_fdiv_q_2exp (../valencies)
undefined symbol: __gmpz_com (../valencies)
undefined symbol: __gmpn_gcd_1 (../valencies)
undefined symbol: __gmpz_sub (../valencies)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference (../valencies)
undefined symbol: __gmpz_fdiv_q (../valencies)
undefined symbol: __gmpz_fdiv_qr (../valencies)
undefined symbol: __gmpz_add (../valencies)
undefined symbol: __gmpz_init (../valencies)
undefined symbol: __gmpz_ior (../valencies)
undefined symbol: __gmpz_mul_2exp (../valencies)
undefined symbol: __gmpz_xor (../valencies)
undefined symbol: __gmpz_and (../valencies)
symbol __fdelt_chk, version GLIBC_2.15 not defined in file libc.so.6 with link time reference (../valencies)
undefined symbol: __gmpz_tdiv_qr (../valencies)
undefined symbol: __gmp_set_memory_functions (../valencies)
undefined symbol: __gmpz_tdiv_q (../valencies)
undefined symbol: __gmpz_divexact (../valencies)
undefined symbol: __gmpz_tdiv_r (../valencies)
$
看,它存在于文件系统中:
$ find / -name 'libgmp.so.10' 2>/dev/null
/nix/store/mnmzq0qbrvw6dv1k2vj3cwz9ffdh05zr-user-environment/lib/libgmp.so.10
/nix/store/fnww2w81hv5v3dl9gsb7p4llb7z7krzd-gmp-5.1.3/lib/libgmp.so.10
$
我该怎么做才能使安装的库nix
“可见”?
可能是将标准的用户安装脚本nix
修改.bash_profile
为将其添加bin/
到中PATH
,但并没有执行与库类似的操作。
我的nix设置:
我要求root为我做的唯一一件事是:mkdir -m 0755 /nix && chown ivan /nix
,否则我遵循了标准的简单nix安装过程。所以现在我可以使用nix软件包中的自定义程序了。没有根本的帮助,我做不到很好,也就是说,没有/nix/
,因为/nix/
对我不可用。我当然可以使用其他目录,但是根据nix文档,预构建的二进制包将无效,并且所有包都必须重新构建。就我而言,向/nix/
我要要简单得多。
我所做的另一件事是添加到~/.bash_profile
:
export NIX_CONF_DIR=/nix/etc/nix
这样我可以编辑nix.conf
。(这应该是根控制/etc/
,否则,我这样做是因为我想build-max-jobs
和build-cores
它的设置。)
nix
是现代的软件包管理器,nixOS是发行版,Hydra是用于不断重建nix软件包的系统,nixOps是用于声明式管理基础结构(由多个主机组成的网络)的工具,而disNix是用于声明式管理一组服务的工具。 (在基础架构之上)。guix
是的GNU子孙nix
,具有发行版(晋升为100%自由IIC
guix
。
nix-env
,更不用说nix.conf
。这是什么操作系统?另外,您重复提及什么nix
意思?我只听说过它用作的缩写Unix
,但似乎您是在更特定的上下文中使用它。