অনুরূপ কোন ফাইল বা ডিরেক্টরি নেই? তবে ফাইলটি বিদ্যমান!


186

আমি একটি গেম ডাউনলোড করেছি (শ্যাঙ্ক) তবে বিন ফাইলটি চলবে না। আমি এক্সিকিউটেবল লঞ্চ করার চেষ্টা করার সময় যে ত্রুটিটি প্রদর্শিত হয় তা হ'ল:

bash: ./shank-linux-120720110-1-bin: No such file or directory

2
সম্ভবত "chmod u + x ./shank*bin" প্রথমে?
এজেন্ট 86

'-বিন'-এর পরিবর্তে' .বিন 'হওয়াও উচিত নয়, সম্ভবত এটি কেবল একটি টাইপোকো
আনেকে :25

ধন্যবাদ তোমার উত্তরের জন্য. আপনি এজেন্ট said86 বলেছিলেন সেই আদেশটি আমি করে ফেলেছি তবে আমার একই ফলাফল রয়েছে have আমি .deb ফাইলটি ডাউনলোড করেছি তবে সমস্যাও আছে। আমি জানি না এই গেমটি কি সমস্যা আছে।
ফ্রান্সেসকো

আপনি 64-বিট ইনস্টলেশন চালাচ্ছেন কিনা তা দয়া করে নিশ্চিত করুন (এটিই এই সমস্যার জন্য সর্বাধিক সাধারণ ঘটনা)।
গিলস 21

হ্যাঁ আমি নিশ্চিত করি যে আমি আমার ল্যাপটপে একটি 64৪-বিট আর্কিটেকচার ব্যবহার করছি।
ফ্রান্সেস্কো

উত্তর:


235

আপনি সম্ভবত 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 ইনস্টল করুন । আপনাকে অতিরিক্ত লাইব্রেরি ইনস্টল করতে হবে (আপনি যদি করেন তবে আপনি একটি স্পষ্ট ত্রুটি বার্তা পাবেন)।

যেহেতু ১১.১০ (একরিক) মাল্টিআরচ সমর্থন চালু করেছে , আপনি এখনও ইনস্টল ia32-libsকরতে পারেন তবে আপনি একটি সূক্ষ্ম-দানযুক্ত পদ্ধতির চয়ন করতে পারেন, এটি পাওয়ার জন্য যথেষ্ট (আরও কোনও প্রয়োজনীয় লাইব্রেরি)।libc6-i386 Libc6-i386 ইনস্টল করুন


গিলস একটি দুর্দান্ত উত্তরের জন্য ধন্যবাদ। যদিও আমি এই সমস্যাটি এখনও অনুভব করি নি (ভবিষ্যতে!), ভবিষ্যতের রেফারেন্সের জন্য আমি আপনার উত্তর সরিয়ে রেখেছি।
জিম সি

আপনার উত্তরের জন্য ধন্যবাদ! আমি যে ফাইল বিন ডাউনলোড করেছি তা এই বিন্যাসে (বিন) একমাত্র উপলব্ধ ছিল। সুতরাং আমি মনে করি সমস্ত স্থাপত্যের জন্য ভাল। আমি আমার আর্কিটেকচারের জন্য .deb ফাইলটি ডাউনলোড করেছি (64 বিট) তবে ভিন্ন ত্রুটি সহ। এই মুহুর্তে আমি মনে করি যে গেমটি কিছু বাগ দ্বারা প্রভাবিত হয়েছে বা আমি এই গেমটি ইনস্টল করতে সক্ষম হব না। এখন আমি libc6-i386 ডাউনলোড করার চেষ্টা করি এবং এখনও এটি ইনস্টল করার চেষ্টা করি। উল্লেখযোগ্য পরিবর্তন হলে আবার লিখব। আপনি কিছু সময়ের জন্য আপনাকে ধন্যবাদ।
ফ্রান্সেস্কো

2
@ ফ্রান্সেসকো দয়া করে সমাধান পোস্ট করুন! এটি সম্ভবত উবুন্টুতে শঙ্ক চালানোর চেষ্টা করা অন্যান্য ব্যক্তিকে সহায়তা করবে। আপনার নিজের প্রশ্নের উত্তর দেওয়া পুরোপুরি ঠিক
গিলস

1
আপনি lddকোনও লাইব্রেরি মিস করছেন কিনা তা পরীক্ষা করতে আপনি ব্যবহার করতে পারেন । অন্যদের মধ্যে ldd kgio_ext.soযেমন কিছু বলতে পারেlibruby.so.2.3 => not found
EnabrenTane

1
bash: ...some...path...: No such file or directoryএক্সিকিউটেবল ফাইল সরিয়ে নেওয়ার পরে আপাতদৃষ্টিতে অন্য একটি দৃশ্য দেখা যাবে। বাশ $ PATH- এ পাওয়া এক্সিকিউটেবলের পাথ ক্যাশে করছে বলে মনে হচ্ছে; চালানোর hash -rএটা পরিষ্কার। দেখুন: unix.stackexchange.com/a/5610/11352
ওরকভেল

53

64 বিট উবুন্টু মাল্টিয়ার্ক সিস্টেম

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

আমি শেষ কমান্ডের জন্য সুডো ব্যবহার করব: একটি 32 বিট বাইনারি চালু করা (সুস্পষ্টভাবে আপনি বা উবুন্টু দ্বারা সংকলিত নয়) সুডো ঝুঁকিপূর্ণ হতে পারে। (ভাল, এমনকি অ মূল হিসাবে, স্বীকৃতভাবে)
alci

এটি সর্বশেষে হতে পারে তবে এটি কাজ করে।
অবিনাশ রাজ

1
এটি লক্ষ করা উচিত যে আপনি যদি সেন্টস বা রেডহ্যাট ব্যবহার করছেন তবে এই উত্তরটি প্রযোজ্য নয়। এই কারণে কয়েক ঘন্টা বন্ধ ফেলে দেওয়া হয়েছিল।
omikes

1
কালী 2 64 বিটে, আমাকে কেবল ইনস্টল করতে হয়েছিলlibselinux1:i386
অ্যারালক্স

4

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

আমি আশা করি এটি কারও কাজে লাগবে। আপনার যদি আরও সহায়তা বা আরও বিশদ প্রয়োজন হয় তবে নির্দ্বিধায় আমার সাথে যোগাযোগ করুন।


3

সমস্যাটির প্রকৃতি এবং উবুন্টু ১ 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(ভুলভাবে) রিপোর্ট করে "ডায়নামিক এক্সিকিউটেবল নয়"।
নবার

3

@ গিলস উত্তরে সম্প্রসারণ করতে, এই ত্রুটির ফলে কমপক্ষে তিনটি পরিস্থিতি রয়েছে:

  1. ফাইলটি নেই।
  2. ফাইলটি বিদ্যমান তবে একটি জটলা প্রতীকী লিঙ্ক।
  3. fileএকটি অদ্ভুত ত্রুটি বার্তা তৈরি করে ফাইল উপস্থিত (যেমন কমান্ড কাজ করে)। এর অর্থ বোঝাতে পারে যে লোডারটিতে কোনও সমস্যা আছে।

লোডার সমস্যার বিভাগ:

  1. এক্সিকিউটেবলের লোডার বিদ্যমান নেই। আপনি ফাইল কমান্ডটি ব্যবহার করে এটি পরীক্ষা করে দেখতে পারেন যে লোডারটি বিদ্যমান কিনা। যেমন

    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

  2. স্ক্রিপ্টের লোডার সহ সমস্যাগুলি ( এই উত্তরটি দেখুন )।

  3. ভাগ করা লাইব্রেরি হারিয়েছে - যে ldd <file-name>কোনও "পাওয়া যায় না" লাইব্রেরি পরীক্ষা করার জন্য ব্যবহার করুন । আরও তথ্যের জন্য এই উত্তর দেখুন ।

লোডারটি বিদ্যমান নেই 32/64 বিটের অমিল বা অন্য কোনও কারণে হতে পারে। অন্যান্য ধরণের লোডার ত্রুটি থাকতে পারে যা আমি জানিনা।


1
আমার ক্ষেত্রে, file lmutilদোভাষীটি দেখাবেন না, তবে lddকরেছেন, এবং ইনস্টল lsbকরা সমস্যার সমাধান করেছে।
ডেভিডা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.