私が使用しているnix
私はルートじゃないシステムで「シングルユーザモード」で(私のnixのセットアップの説明については以下を参照)。
システムに存在しないライブラリに動的にリンクされているバイナリの1つをすばやく実行したいと思っていました。
だから、私はライブラリをインストールしました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/
でした。
私がやったもう一つはに追加すること~/.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%libre IICとして昇格
guix
。
nix-env
ませんnix.conf
。これはどんなOSですか?また、繰り返し参照はnix
どういう意味ですか?の省略形として使用したと聞いたことUnix
がありますが、より具体的なコンテキストで使用しているようです。