Update

10/recent/ticker-posts

how to fix no such file or directory in Termux 2022। সমস্যা সমাধান

How to fix no such file or directory in Termux 2022

সমস্যা সমাধান।


১। সংক্ষিপ্ত বিবরণ

এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রামের বাইনারি চালানোর চেষ্টা করার সময় "এমন কোনো ফাইল বা ডিরেক্টরি" ত্রুটির কারণ কী হতে পারে তা খুঁজে বের করব। আমরা objdump, ldd, এবং readelf কমান্ড ব্যবহার করব যা বেশিরভাগ লিনাক্স বিতরণে উপলব্ধ।


২। সমস্যার ভূমিকা

যখন আমরা ইন্টারনেট থেকে ডাউনলোড করি এমন একটি প্রোগ্রামের বাইনারি চালানোর চেষ্টা করি বা যখন আমরা আমাদের নিজস্ব প্রোগ্রামকে একটি নতুন পরিবেশে স্থাপন করি, তখন আমরা একটি "এমন কোনো ফাইল ডিরেক্টরি পাই না।


২.১। অনুপস্থিত লাইব্রেরি

ধরা যাক আমরা একটি নির্দিষ্ট বাইনারি ফাইল চালাতে চাই:


👉 $ ./binaryfile

./binaryfile: error while loading shared libraries: libbooster.so.0: cannot open shared object file: No such file or directory 👈

আমরা অনুপস্থিত লাইব্রেরি তৈরি বা ডাউনলোড করতে পারি এবং এটিকে সেই ডিরেক্টরিতে রাখতে পারি যেখানে বাইনারি এটি খুঁজে পেতে পারে, উদাহরণস্বরূপ, একই ডিরেক্টরিতে যেখানে বাইনারিটি রয়েছে বা PATH ভেরিয়েবলে থাকা ডিরেক্টরিগুলির একটিতে। এর পরে, আমরা আবার বাইনারি চালানোর চেষ্টা করতে পারি:


👉 $ ./binaryfile ./binaryfile: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory 👈

এটি বলে যে এটি অন্য লাইব্রেরি খুঁজে পাচ্ছে না। সমস্ত লাইব্রেরি পাওয়া না যাওয়া পর্যন্ত আমরা প্রক্রিয়াটি পুনরাবৃত্তি করতে পারি, অথবা বাইনারি প্রয়োজনীয় সমস্ত লাইব্রেরির তালিকা করতে আমরা লিনাক্স কমান্ড যেমন objdump, ldd বা readelf ব্যবহার করতে পারি।


২.২। একটি প্রোগ্রাম দোভাষী অনুপস্থিত

অন্য কোনো অনুষ্ঠানে, আমরা অন্য একটি অনুরূপ ত্রুটি পেতে পারি কিন্তু একটি অর্থপূর্ণ বার্তা দেয় না:



👉 $ ./binaryfile -bash: ./binaryfile: No such file or directory 👈

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


 objdump কমান্ড ব্যবহার করে

বাইনারিগুলির জন্য প্রয়োজনীয় সমস্ত লাইব্রেরির তালিকা করতে objdump কমান্ডটি ব্যবহার করা যাক:


👉 $ objdump -p binaryfile | grep NEEDED NEEDED libbooster.so.0 NEEDED libcrypto.so.1.0.0 NEEDED libpthread.so.0 ... NEEDED libgcc_s.so.1 NEEDED libc.so.6 👈

আমরা বাইনারিগুলির জন্য প্রয়োজনীয় সমস্ত লাইব্রেরির মাধ্যমে চালাতে পারি এবং আমাদের সিস্টেমে সেগুলি রয়েছে তা নিশ্চিত করতে পারি।


৪। ldd কমান্ড ব্যবহার করে

আমাদের সিস্টেমে ldd কমান্ড ব্যবহার করে বাইনারিগুলির প্রয়োজনীয় সমস্ত লাইব্রেরি রয়েছে তা পরীক্ষা করার আরেকটি উপায়:


👉 $ ldd binaryfile libbooster.so.0 => not found libcrypto.so.1.0.0 => not found libboost_thread.so.1.68.0 => not found ... libhogweed.so.4 => /lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007fb0f5036000) libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fb0f4fb3000) libffi.so.6 => /lib/x86_64-linux-gnu/libffi.so.6 (0x00007fb0f4fa9000) 👈

ldd কমান্ডটি বাইনারিগুলির প্রয়োজনীয় লাইব্রেরিগুলি সম্পর্কে আরও বিশদ তথ্য দেয়।


মনে রাখবেন যে আমাদের কখনই অবিশ্বস্ত ভেরিয়েবলগুলিতে ldd নিয়োগ করা উচিত নয় কারণ এটি সরাসরি প্রোগ্রামটি চালানোর চেষ্টা করে নির্ভরতার তথ্য প্রাপ্ত করার চেষ্টা করতে পারে।


৫। রিডেলফ কমান্ড ব্যবহার করে

অন্য একটি কমান্ড যা শুধুমাত্র বাইনারিগুলির প্রয়োজনীয় লাইব্রেরিগুলি সম্পর্কেই নয়, "এমন কোনো ফাইল বা ডিরেক্টরি নেই" ত্রুটির আরেকটি সাধারণ কারণও রিডেলফ।


বাইনারিগুলির জন্য প্রয়োজনীয় সমস্ত লাইব্রেরির তালিকা করা যাক:


👉 $ readelf -a binaryfile | grep NEEDED 0x0000000000000001 (NEEDED) Shared library: [libbooster.so.0] 0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.1.0.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_thread.so.1.68.0] ... 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 👈

এবং আমাদের সিস্টেমে প্রোগ্রাম ইন্টারপ্রেটার বিদ্যমান কিনা তা যাচাই করুন:


👉 $ readelf -a binaryfile | grep interpreter [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] 👈


কমান্ডটি তথ্য দেয় যে এটি ld-linux-x86-64.so.2 নামক একটি প্রোগ্রাম দোভাষীর অনুরোধ করছে।

ld-linux-x86-64.so.2 একটি ডায়নামিক লিঙ্কার প্রোগ্রাম যা একটি 64-বিট সিস্টেমে একটি 32-বিট প্রোগ্রাম চালানোর জন্য ব্যবহৃত হয়।


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


৬। উপসংহার

এই নিবন্ধে, যখন আমরা একটি বাইনারি চালানোর চেষ্টা করি, যেখানে লাইব্রেরি এবং/অথবা একটি প্রোগ্রাম ইন্টারপ্রেটার অনুপস্থিত থাকে, তখন "এমন কোনো ফাইল বা ডিরেক্টরি নেই" ত্রুটির দুটি সাধারণ কারণ রয়েছে। বাইনারির প্রয়োজনীয় সমস্ত লাইব্রেরি পরীক্ষা করতে এবং বাইনারি চালানোর জন্য আমাদের সিস্টেমে প্রোগ্রাম ইন্টারপ্রেটার আছে কিনা তা পরীক্ষা করতে আমরা objdump, ldd এবং readelf-এর মতো লিনাক্স কমান্ড ব্যবহার করতে পারি।


আপনার জন্য আরও আছে 

👇👇👇👇👇👇👇👇👇👇👇👇

কিভাবে আপনার Facebook পাসওয়ার্ড শুরক্ষা করবেন small Tricks জেনে নিন

ফেসবুক থেকে ডিলিট হওয়া এসএমএস, ছবি, ভিডিও সব ডাউনলোড করুন।


Post a Comment

0 Comments