আমি একটি গেম ডাউনলোড করেছি (শ্যাঙ্ক) তবে বিন ফাইলটি চলবে না। আমি এক্সিকিউটেবল লঞ্চ করার চেষ্টা করার সময় যে ত্রুটিটি প্রদর্শিত হয় তা হ'ল:
bash: ./shank-linux-120720110-1-bin: No such file or directory
আমি একটি গেম ডাউনলোড করেছি (শ্যাঙ্ক) তবে বিন ফাইলটি চলবে না। আমি এক্সিকিউটেবল লঞ্চ করার চেষ্টা করার সময় যে ত্রুটিটি প্রদর্শিত হয় তা হ'ল:
bash: ./shank-linux-120720110-1-bin: No such file or directory
উত্তর:
আপনি সম্ভবত 64৪-বিট সিস্টেমে একটি 32-বিট বাইনারি চালানোর চেষ্টা করছেন যার মধ্যে 32-বিট সমর্থন ইনস্টল নেই।
এখানে তিনটি ক্ষেত্রে আপনি "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" বার্তাটি পেতে পারেন:
file shank-linux-120720110-1-bin"ELF 32-বিট এলএসবি এক্সিকিউটেবল…" এর মতো কিছু প্রদর্শন করে) এবং আপনি যখন এটি সম্পাদন করার চেষ্টা করছেন তখন আপনাকে বলা হবে যে ফাইলটি নেই।এই শেষ ক্ষেত্রে ত্রুটি বার্তা স্বীকারোক্তিজনকভাবে বিভ্রান্তিকর। এটি আপনাকে কী বলছে যে প্রোগ্রামটি চালানোর জন্য প্রয়োজনীয় রানটাইম পরিবেশের একটি মূল উপাদান অনুপস্থিত। দুর্ভাগ্যক্রমে, যে চ্যানেলের মাধ্যমে ত্রুটিটি প্রতিবেদন করা হয়েছে কেবল তার মধ্যে ত্রুটি কোডের জন্য জায়গা রয়েছে এবং এই অতিরিক্ত তথ্যের জন্য এটি সত্যিকারের দোষযুক্ত রানটাইম পরিবেশ নয়। আপনি যদি এই ব্যাখ্যার প্রযুক্তিগত সংস্করণ চান তবে 64-বিট সিস্টেমে 32-বিট বাইনারি চালানোর সময় "পাওয়া যায় না" বার্তাটি পড়ুন ।
fileকমান্ড আপনাকে বলতে হবে ঠিক কি এই বাইনারি হয়। কয়েকটি ব্যতিক্রম ছাড়া, আপনি কেবল প্রসেসরের আর্কিটেকচারের জন্য বাইনারি চালাতে পারেন যা আপনার উবুন্টু মুক্তির জন্য। প্রধান ব্যতিক্রম হ'ল আপনি 32-বিট (x86, ওরফে IA32) বাইনারিগুলি 64-বিট (amd64, ওরফে x86_64) সিস্টেমে চালাতে পারেন।
11.04 অবধি উবুন্টুতে, 64-বিট ইনস্টলেশনতে 32-বিট বাইনারি চালানোর জন্য আপনাকে প্যাকেজটি ইনস্টলia32-libs করতে হবে । আপনাকে অতিরিক্ত লাইব্রেরি ইনস্টল করতে হবে (আপনি যদি করেন তবে আপনি একটি স্পষ্ট ত্রুটি বার্তা পাবেন)।
যেহেতু ১১.১০ (একরিক) মাল্টিআরচ সমর্থন চালু করেছে , আপনি এখনও ইনস্টল ia32-libsকরতে পারেন তবে আপনি একটি সূক্ষ্ম-দানযুক্ত পদ্ধতির চয়ন করতে পারেন, এটি পাওয়ার জন্য যথেষ্ট (আরও কোনও প্রয়োজনীয় লাইব্রেরি)।libc6-i386
lddকোনও লাইব্রেরি মিস করছেন কিনা তা পরীক্ষা করতে আপনি ব্যবহার করতে পারেন । অন্যদের মধ্যে ldd kgio_ext.soযেমন কিছু বলতে পারেlibruby.so.2.3 => not found
bash: ...some...path...: No such file or directoryএক্সিকিউটেবল ফাইল সরিয়ে নেওয়ার পরে আপাতদৃষ্টিতে অন্য একটি দৃশ্য দেখা যাবে। বাশ $ PATH- এ পাওয়া এক্সিকিউটেবলের পাথ ক্যাশে করছে বলে মনে হচ্ছে; চালানোর hash -rএটা পরিষ্কার। দেখুন: unix.stackexchange.com/a/5610/11352
file file-nameশোয়ের আউটপুট কেবল তখনই এই উত্তরটি অনুসরণ করুন ,
file-name: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
64 বিট বহু-খিলান উবুন্টু সিস্টেমের মধ্যে 32bit এক্সিকিউটেবল ফাইল চালাতে, যোগ আছে i386আর্কিটেকচার এবং এছাড়াও আপনি ইনস্টল করতে হবে libc6:i386, libncurses5:i386, libstdc++6:i386এই তিনটি গ্রন্থাগার প্যাকেজ।
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./file-name
libselinux1:i386
32 বিটের জন্য ডেবি ইনস্টল করে আমি বুঝতে পেরেছিলাম যে আমি কয়েকটি লাইব্রেরি অনুপস্থিত (ia32-libs এবং libc6 ছাড়াও)। আমি প্রথমে এই আদেশটি দিয়ে এই সমস্যার সমাধান করেছি:
sudo apt-get install -f
তারপরে আমি আরও একটি ত্রুটি পেয়েছি:
Message: SDL_GL_LoadLibrary
Error: Failed loading libGL.so.1
স্পষ্টতই, এই গ্রন্থাগারগুলি সঠিকভাবে ইনস্টল করা হয়েছিল। বিশদে না গিয়ে আমাকে লাইব্রেরিগুলি হাতে হাতে লিঙ্ক করতে হয়েছিল। আমি তখন বুঝতে পেরেছিলাম যে সাইনাপটিকের মাধ্যমে নিম্নলিখিত প্যাকেজগুলি ইনস্টল করার মাধ্যমে এটি আরও সহজ সমাধান হতে পারে:
libgl1-mesa-glx:i386
libgl1-mesa-dri: i386.
তারপরে খেলার সময় পরবর্তী সমস্যাটি ছিল ব্ল্যাক স্ক্রিন, যা আমি / শ্যাঙ্ক / বিনে এক্সিকিউটেবলের পরিবর্তে এটি দিয়ে সমাধান করেছি: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 ।
আমি আশা করি এটি কারও কাজে লাগবে। আপনার যদি আরও সহায়তা বা আরও বিশদ প্রয়োজন হয় তবে নির্দ্বিধায় আমার সাথে যোগাযোগ করুন।
সমস্যাটির প্রকৃতি এবং উবুন্টু ১ 16.০৪ অনুযায়ী এটি কীভাবে ঠিক করা যায় সে সম্পর্কে কিছুটা আরও দেখানো একটি প্রতিলিপি এখানে রয়েছে। লক্ষ্য করুন যে fileপ্রতিবেদনগুলি "গতিশীলভাবে সংযুক্ত" হলেও প্রতিবেদনগুলি " lddডায়নামিক এক্সিকিউটেবল নয়" বলে প্রতিবেদন করে।
$ ./myprogram
bash: myprogram: No such file or directory
$ file myprogram
myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped
$ ldd myprogram
not a dynamic executable
একবার আপনি libc6: i386 ইনস্টল করলে জিনিসগুলি উন্নতি করতে শুরু করে ...
$ sudo apt-get install libc6:i386 # the initial fix
...
$ ldd myprogram
linux-gate.so.1 => (0xf77fd000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7626000)
/lib/ld-linux.so.2 (0x56578000)
$ ./myprogram
myprogram: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
কাজটি শেষ করতে আপনার একবারে অতিরিক্ত লাইব্রেরি সনাক্ত এবং ইনস্টল করতে হতে পারে ...
$ sudo apt-get install libstdc++6:i386 ## may require various additional libs
$ ./myprogram
... works correctly ...
সঠিক লাইব্রেরিগুলি ইনস্টল করার জন্য চিহ্নিত করার পদ্ধতিগত উপায় আছে কিনা তা আমি জানি না। প্যাকেজের নামগুলিতে ত্রুটি বার্তাগুলি ম্যাপ করার জন্য অনুমানের কিছুটা আছে (ট্যাব সমাপ্তি সহায়তা করে)।
ldd(ভুলভাবে) রিপোর্ট করে "ডায়নামিক এক্সিকিউটেবল নয়"।
@ গিলস উত্তরে সম্প্রসারণ করতে, এই ত্রুটির ফলে কমপক্ষে তিনটি পরিস্থিতি রয়েছে:
fileএকটি অদ্ভুত ত্রুটি বার্তা তৈরি করে ফাইল উপস্থিত (যেমন কমান্ড কাজ করে)। এর অর্থ বোঝাতে পারে যে লোডারটিতে কোনও সমস্যা আছে।লোডার সমস্যার বিভাগ:
এক্সিকিউটেবলের লোডার বিদ্যমান নেই। আপনি ফাইল কমান্ডটি ব্যবহার করে এটি পরীক্ষা করে দেখতে পারেন যে লোডারটি বিদ্যমান কিনা। যেমন
file lmgrd
lmgrd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped
নোটিশ interpreter /lib64/ld-lsb-x86-64.so.3; যদি এই ফাইলটি বিদ্যমান না থাকে তবে আপনার এটি ইনস্টল করা দরকার need 16.04-এ এই নির্দিষ্ট লোডারটির জন্য, উত্তরটি পরিণত হয়েছিল sudo apt-get install lsb।
স্ক্রিপ্টের লোডার সহ সমস্যাগুলি ( এই উত্তরটি দেখুন )।
ldd <file-name>কোনও "পাওয়া যায় না" লাইব্রেরি পরীক্ষা করার জন্য ব্যবহার করুন । আরও তথ্যের জন্য এই উত্তর দেখুন ।লোডারটি বিদ্যমান নেই 32/64 বিটের অমিল বা অন্য কোনও কারণে হতে পারে। অন্যান্য ধরণের লোডার ত্রুটি থাকতে পারে যা আমি জানিনা।
file lmutilদোভাষীটি দেখাবেন না, তবে lddকরেছেন, এবং ইনস্টল lsbকরা সমস্যার সমাধান করেছে।