কীভাবে আমি "বাইনারি ফাইল কার্যকর করতে পারি না" ত্রুটিটি সমাধান করতে পারি?


80

আমি যখন এসএসএইচ ব্যবহার করে লগইন করি তখন আমি যা দেখতে পাই তা হ'ল ...

-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected

আমি এখানে কিছুই করতে পারি না। যেমন কমান্ড halt, poweroff, rebootফিরে আসবে command not found

আমি এটা কিভাবে ঠিক করবো? আমি ডেবিয়ান স্কুইজ লিনাক্স ব্যবহার করছি


7
আপনি কি এই মেশিনটি কি করলেন?
স্ল্যাচ করুন

1
আমি শেষ জিনিসটি লগওয়াচ ইনস্টল করেছিলাম। আর কিছু না.
সুপারইউজার

3
PATHএনভায়রনমেন্ট ভেরিয়েবল যা ফোল্ডারগুলির একটি তালিকা রয়েছে যা শেল প্রোগ্রামগুলির জন্য অনুসন্ধান করে। lsউদাহরণস্বরূপ, সাধারণত উল্লেখ করা হয় /bin/lsএবং আপনার শেল PATHএটি খুঁজে না পাওয়া অবধি এক-একের মধ্যে তালিকাবদ্ধ ফোল্ডারগুলির মধ্যে দিয়ে এটি সন্ধান করে বা এটি যদি এটির কোনওটিতে না খুঁজে পায় তবে তা ছেড়ে দেয়। আমি মনে করি একটি ভাল সূচনা পয়েন্ট হতে পারে, এর আউটপুট কি echo $PATH? (সম্পাদনা করুন: exportকমান্ডটি বাশে পরিবেশের পরিবর্তনশীল সংজ্ঞা দেওয়ার একটি উপায়))
ডারথ অ্যান্ড্রয়েড

1
আহ ... আমি আপনাকে সিস্টেমটি বন্ধ না করার জন্য সতর্ক করেছিলাম: পি আপনি কী এতে কনসোল অ্যাক্সেস পেতে পারেন (শারীরিক মনিটর + কীবোর্ড সংযুক্ত)? একক-ব্যবহারকারী মোডে সিস্টেমটি বুট করার চেষ্টা করুন (রিকভারি মোড হিসাবে লেবেলযুক্ত হতে পারে) এবং আপনি কোনও রুট শেল পেতে পারেন কিনা তা দেখুন।
ডারথ অ্যান্ড্রয়েড

2
@ ডেভিড আপনি টাইপ করার পরে কোনও আউটপুট দেখতে পাবেন না export PATH=/bin:/user/bin:/sbin:/usr/sbin। এটি একটি নীরব আদেশ।
বেন রিচার্ডস

উত্তর:


84

সাধারণত সেই ত্রুটি বার্তার অর্থ লিনাক্স ফাইলটিকে শেল স্ক্রিপ্ট বা এক্সিকিউটেবল ফাইল হিসাবে স্বীকৃতি দেয় না।

সাধারণত কারণটি ভুল আর্কিটেকচারে একটি এক্সিকিউটেবল চালাচ্ছে - আপনি যদি কোনও এআরএম সিপিইউতে x86 এক্সিকিউটেবল চালানোর চেষ্টা করেন তবে এই বার্তাটি সামনে আসে।

কি /usr/bin/idoverwritten হয়ে, সম্ভবত?


15
"আপনি যদি কোনও এআরএম সিপিইউতে x86 এক্সিকিউটেবল চালনার চেষ্টা করেন, তবে এই বার্তাটি উপস্থিত হবে।" এটি হ'ল একেবারে কারণ। আপনার ইনপুট জন্য ধন্যবাদ সবাই!
সুপারউজার

দেখা গেল আমার বাইনারিটি একটি উইন্ডোজ
এক্সি

আমরা কীভাবে এটি সমাধান করতে পারি? আমি নিশ্চিত যে আমি একই সমস্যা পেয়েছি, তবে এই উত্তরটি আমাকে সত্যিই কোনও সমাধান বলে না: /
নিউজকুলার

সমাধানের জন্য, আপনাকে একটি এআরএম বাইনারি ব্যবহার করতে হবে, একটি x86 বাইনারি নয়। যদি উত্স উপলব্ধ থাকে তবে আপনি একটি এআরএম সিস্টেমের অধীনে পুনরায় সংকলন / পুনর্নির্মাণ করতে পারেন। যদি উত্সটি উপলভ্য না হয় তবে একটি এআরএম বাইনারিটির জন্য বিক্রেতার সাথে চেক করুন। উদাহরণস্বরূপ, সূর্যের অফিশিয়াল জেআরই x86 এবং "এমবেডেড" বা এআরএম সংস্করণ উভয়ই রয়েছে। আপনাকে এআরএম সংস্করণ ব্যবহার করতে হবে।
লরেন্সসি

24

Sh এক্সিকিউটেবল ফাইল ব্যবহার করার পরিবর্তে। / এক্সিকিউটেবল ফাইল ফাইল ব্যবহার করে এটি চালানোর চেষ্টা করুন। এটি সর্বোপরি শেল স্ক্রিপ্ট নয়।


আমার রাস্পবেরি পাইতে কিউইক্স-পরিবেশন চালানোর চেষ্টা করার সময় আমার এই সমস্যা হয়েছিল। আমার বিশ্বাস আমার সামগ্রিক সমাধানটি ফাইলের অনুমতিগুলি সামঞ্জস্য করা ছিল (এটি ডিফল্টরূপে কারও দ্বারা ./kiwix-serve
নির্বাহযোগ্য

9

সমস্যাটি একটি পৃথক প্রসেসরের আর্কিটেকচারের জন্য বাইনারি চালাচ্ছে। বাইনারিগুলির আর্কিটেকচার চেক করতে আপনি অবজডাম্প (বাইনুটিস থেকে) ব্যবহার করতে পারেন। আপনি কোনও মেশিনের আর্কিটেকচার চেক করতে অখাদ্য ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, এফএফ.কমিনিউসেক্টর ইনস্টল করার সময় আমি এই ত্রুটির "বাইনারি ফাইল কার্যকর করতে পারি না" - ক্রোমের জন্য একটি ফায়ারফক্স প্লাগইন (যাতে আমি জাভা অ্যাপলেট ব্যবহার করে এমন পৃষ্ঠাগুলি চালাতে পারি)।

  • objdump দেখায় বাইনারি 64-বিট হয় elf64-x86-64 '
  • uname দেখায় আমার মেশিনটি 32-বিট i686

    /। / এফএফ.কমিউনিকেটর ব্যাশ:। ./FF.Communicator

  • objdump আমার মেশিনে কাজ বাইনারি দেখানো এটা 32 বিট হয় elf32-মধ্যে i386

    $জেজডাম্প -a / বিন / এলএস / বিন / এলএস: ফাইল ফর্ম্যাট elf32-i386

এই সরঞ্জামগুলি ব্যবহার করে আপনি মেশিন এবং বাইনারিগুলির আর্কিটেকচার পরীক্ষা করতে পারেন - কেবল ইন্টেল আর্কিটেকচার নয়, কোনও প্রসেসর।

ম্যাক ওএসএক্স ব্যবহারকারীদের জন্য, আপনি "ফাইল" কমান্ডটি ব্যবহার করে একটি নির্দিষ্ট ফাইলের আর্কিটেকচার তথ্যটি সন্ধান করতে পারেন:

$ file filename_here

6

আমি এখানে কিছু বুনো অনুমান করছি, তবে দেখে মনে হচ্ছে নিম্নলিখিতটি ঘটছে:

  1. আপনি bashচালাতে ~/.profileবা ~/.bashrcআপনার জন্য আপনার পরিবেশ স্থাপনের জন্য ট্রিগার করে আপনি এসএসএইচে লগইন করেন (এটি স্বাভাবিক)।
  2. কিছুটা সময় এটি /bin/idআপনার ইউআইডি পেতে কার্যকর করার চেষ্টা করে যা ব্যর্থ হয়, পূর্ণসংখ্যার এক্সপ্রেশন ত্রুটির সৃষ্টি করে এবং স্ক্রিপ্টটি এটি সেট আপ করার আগেই বন্ধ করে দেয় $PATH
  3. আপনার $PATHসেট না থাকায় বাশ শুধুমাত্র নির্দিষ্ট পথটি নির্দিষ্ট করে কমান্ড চালাতে সক্ষম।

যতক্ষণ না আপনি / বিন / আইডি ব্যর্থতার মূল কারণটি ঠিক করতে পারবেন ততক্ষণ সমস্যার export PATH=/bin:/usr/bin:/sbin:/usr/sbinসমাধান করতে ব্যবহার করুন $PATH


0

বাইনারি ফাইলটিতে মেশিনের নির্দেশাবলী রয়েছে যা প্রসেসর বুঝতে পারে। আপনার অপারেটিং সিস্টেমের অর্থ একই নির্বাহযোগ্য চলবে না। প্রসেসর নির্দেশাবলীর সাথে সামঞ্জস্যপূর্ণ সেটগুলির মধ্যে পিছনে পিছনে সরানো সাধারণত ভালভাবে কাজ করবে, যদি তারা সুসংগত না হয় তবে সিপিইউ নির্দেশাবলী বুঝতে সক্ষম হবে না।


0

এর অর্থ হল যে আপনি বাইনারি ফাইলটি আপনার ব্যাশ স্ক্রিপ্টটি ব্যবহার করে চালানোর চেষ্টা করছেন যা এটি চালানোর চেষ্টা করার মতো নয় run এটি ইতিমধ্যে একটি বাইনারি ফাইল এবং আপনি এটি ছড়িয়ে দেওয়ার জন্য এটি চালনার চেষ্টা করছেন।

খুব সাধারণ উদাহরণে, যদি আপনি `w 'কমান্ডটি চালানোর চেষ্টা করেন

$ bash w
/usr/bin/w: /usr/bin/w: cannot execute binary file

একইভাবে আপনি একই পদ্ধতিতে হিট করছেন বা এটি আপনার কোড স্নিপেট থেকে দেখায়।

আপনার কমান্ডের বাকী অংশগুলির জন্য, এই হোল্ট, শাটডাউন, রিবুট ইত্যাদি কমান্ডগুলি হ'ল মূল মালিকানাধীন কমান্ড এবং প্রয়োজনীয় অপারেশন চালাতে এবং সঞ্চালনের জন্য সুপার-ব্যবহারকারী প্রিলভেজ প্রয়োজন। সাধারণ ব্যবহারকারীরা তাদের অন্য ব্যাখ্যা চালাতে পারবেন না হ'ল এই আদেশগুলি / sbin / এবং / usr / sbin এ স্থাপন করা হয়েছে, যা আপনার $ PATH ভেরিয়েবলের মধ্যে নাও থাকতে পারে (যা আপনার হেফাজতে আদেশগুলি বৈধ করার জন্য ব্যবহৃত হয়)


-1

আপনি ইনস্টলারটির ভুল সংস্করণ চালাচ্ছেন, উদাহরণস্বরূপ, 64 বিট মেশিন এবং ইনস্টলারটির 32 বিট সংস্করণ ইনস্টল করার চেষ্টা করছেন।

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