Ich verwende nixim "Einzelbenutzermodus" in einem System, in dem ich nicht der Root bin (siehe unten für eine Beschreibung meines Nix-Setups).
Ich wollte schnell eine meiner Binärdateien ausführen, die dynamisch mit einer Bibliothek verknüpft ist, die im System nicht vorhanden ist.
Also habe ich die Bibliothek installiert mit nix:
$ nix-env -qa 'gmp'
gmp-4.3.2
gmp-5.1.3
$ nix-env -i gmp-5.1.3
Aber die Bibliothek wird vom Linker immer noch nicht gefunden:
$ 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)
$
Schauen Sie, es ist im Dateisystem vorhanden:
$ 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
$
Was mache ich, damit die von installierten Bibliotheken nix"sichtbar" sind?
Wahrscheinlich, das Standard - Benutzerinstallationsskript von nixändert .bash_profileseine hinzufügen bin/in PATH, aber nicht etwas Analoges für Bibliotheken tun.
Mein Nix-Setup:
Das einzige, was ich vom Root verlangt habe, war: mkdir -m 0755 /nix && chown ivan /nixAnsonsten habe ich das einfache Standard-Nix-Installationsverfahren befolgt. Jetzt kann ich benutzerdefinierte Programme aus nix-Paketen verwenden. Ich konnte dies ohne die Hilfe der Wurzel überhaupt nicht gut machen, dh ohne /nix/, weil /nix/es für mich nicht verfügbar war; Ich könnte natürlich ein anderes Verzeichnis verwenden, aber dann wären die vorgefertigten Binärpakete nicht gültig und alle Pakete müssten gemäß der Nix-Dokumentation neu erstellt werden. In meinem Fall war es einfacher, /nix/nach mir zu fragen .
Eine andere Sache, die ich getan habe, ist das Hinzufügen zu ~/.bash_profile:
export NIX_CONF_DIR=/nix/etc/nix
damit ich bearbeiten kann nix.conf. (Es sollte sonst in der Root-Steuerung sein /etc/. Ich habe es getan, weil ich wollte build-max-jobsund build-coresEinstellungen darin.)
nixist ein moderner Paketmanager , und nixOS ist eine Distribution, und Hydra ist ein System zum ständigen Neuerstellen von nix-Paketen. nixOps ist ein Tool zum deklarativen Verwalten einer Infrastruktur (eines Netzwerks aus mehreren Hosts) und disNix zum deklarativen Verwalten einer Reihe von Diensten (auf einer Infrastruktur). guixist ein GNU-Nachkomme von nix, mit einer Distribution (gefördert als 100% libre IIC
guix.
nix-env, ganz zu schweigen davonnix.conf. Welches Betriebssystem ist das? Was bedeuten wiederholte Referenzennix? Ich habe nur gehört, dass es als Abkürzung für verwendet wirdUnix, aber es scheint, dass Sie es in einem spezifischeren Kontext verwenden.