NixOS'ta ikili çalıştırılamıyor - Böyle bir dosya veya dizin yok


11

Mevcut oracle jre'i NixOS çalıştıran bir sanal makineye kurmaya çalıştım.

Şimdi aşağıdakiler olur:

[michas@cc:~]$ tar xvzf jre-7u40-linux-x64.tar.gz |grep bin/java
jre1.7.0_40/bin/javaws
jre1.7.0_40/bin/java_vm
jre1.7.0_40/bin/java

[michas@cc:~]$ ls -l ./jre1.7.0_40/bin/java
-rwxr-xr-x 1 michas nogroup 7750 Aug 27 09:17 ./jre1.7.0_40/bin/java

[michas@cc:~]$ ./jre1.7.0_40/bin/java
bash: ./jre1.7.0_40/bin/java: No such file or directory

O NE LAN? Adı verilen dosya açıktır. Ne oluyor?

Daha fazla analiz etmeye çalışıyorum:

[michas@cc:~]$ strace ./jre1.7.0_40/bin/java
execve("./jre1.7.0_40/bin/java", ["./jre1.7.0_40/bin/java"], [/* 53 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
exit_group(1)                           = ?
+++ exited with 1 +++

[michas@cc:~]$ strace ./jre1.7.0_40/bin/jav
strace: Can't stat './jre1.7.0_40/bin/jav': No such file or directory

Tamam, gerçekten eksik bir dosyanın çıktısı farklı görünüyor.

[michas@cc:~]$ file ./jre1.7.0_40/bin/java
./jre1.7.0_40/bin/java: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, BuildID[sha1]=a558f547fe0b95fdc6a109cb7d9692d6d7969794, not stripped

[michas@cc:~]$ file ~/t
/home/michas/t: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped

İkincisi, problemsiz küçük bir derlenmiş ikili. Her ikisi de çok benzer. Bu nedenle biçim ikili ikili iyi görünüyor.

[michas@cc:~]$ ldd ./jre1.7.0_40/bin/java
/run/current-system/sw/bin/ldd: line 116: ./jre1.7.0_40/bin/java: No such file or directory

Gerekli paylaşılan kütüphanelerle ilgili bir sorun var gibi görünüyor.

Neler oluyor ve nasıl düzeltebilirim?


Yanıtlar:


10

NixOS'ta genellikle ikili dosyaları çalıştıramazsınız, ya bazı ortam değişkenlerine ihtiyaç duyarlar ya da patchElf ile yamaları gerekir. Sanırım nix paket yöneticisini kullanarak java kurabilir ve çalıştırabilirsiniz. Ayrıca myEnvFun kullanarak çalıştırmak için uygun bir ortam da oluşturabilirsiniz.


2
Belki de bir örnek kullanmanın patchelfNix ortamında ikili çalıştırmak için bir çözüm aramaya olanlara bazı kullanım olabilir. Ancak bu durum, kullanıcının CentOS altında tek kullanıcılı bir nix kurulumunda "aktif" nix ortamıdır, ihtiyaçlarınız farklı olabilir (IIC daha nixy yaklaşımı "aktif" sembolik ortama değil, belirli bir sürüm, nix deposunda bir karma).
imz - Ivan Zakharyaschev

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.