निक्सन में बाइनरी निष्पादित नहीं कर सकता - ऐसी कोई फ़ाइल या निर्देशिका नहीं


11

मैं एक निमस्क चल रहे एक VM पर वर्तमान ओरेकल jre स्थापित करने की कोशिश की।

अब निम्नलिखित होता है:

[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

WTF? नामित फ़ाइल स्पष्ट रूप से वहाँ है। क्या हो रहा है?

आगे का विश्लेषण करने की कोशिश कर रहा है:

[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

ठीक है, एक बहुत ही गायब फ़ाइल का आउटपुट अलग दिखता है।

[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

उत्तरार्द्ध समस्याओं के बिना चलने वाला एक छोटा स्व संकलित बाइनरी है। दोनों बहुत समान दिखते हैं। इसलिए बाइनरी को प्रारूपित करना ठीक प्रतीत होता है।

[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

लगता है कि आवश्यक साझा पुस्तकालयों के बारे में एक समस्या है।

क्या चल रहा है और मैं इसे कैसे ठीक कर सकता हूं?


जवाबों:


10

आप आमतौर पर निक्स में बाइनरी फाइलें नहीं चला सकते हैं, उन्हें या तो कुछ पर्यावरण चर सेट करने की आवश्यकता होगी या पैचफ्लाय के साथ पैच करना होगा। मुझे लगता है कि आप निक्स पैकेज मैनेजर का उपयोग करके जावा को स्थापित और चला सकते हैं। आप शायद myEnvFun का उपयोग करके इसे चलाने के लिए एक उपयुक्त वातावरण बना सकते हैं।


2
शायद, निक्स के वातावरण में एक बाइनरी को चलाने के लिए उपयोग करने का एक उदाहरणpatchelf समाधान खोजने वाले लोगों के लिए कुछ काम का हो सकता है। लेकिन यह मामला CentOS के तहत एकल-उपयोगकर्ता निक्स इंस्टॉलेशन में उपयोगकर्ता का "सक्रिय" निक्स वातावरण है, आपकी ज़रूरतें अलग हो सकती हैं (IIC अधिक निक्सी दृष्टिकोण "सक्रिय" सिम्लिंकड वातावरण के लिए नहीं, बल्कि एक विशेष रूप से संदर्भित होगा। संस्करण, निक्स स्टोर में एक हैशेड)।
इम्ज़ - इवान ज़खरीशेव

3

ऐसा लगता है कि निक्सोस के पास ओरेकल jre7 के लिए एक पैकेज है ।

यदि आप jre या jdk स्थापित करने के लिए एक कस्टम निक्स अभिव्यक्ति बनाना चाहते हैं, तो यह jdk7 / jre7 के लिए मौजूदा निक्स अभिव्यक्ति को देखने के लिए एक अच्छा विचार हो सकता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.