"এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" তবে এটি বিদ্যমান


95

আমি কেবল কমান্ড লাইন থেকে একটি এক্সিকিউটেবল চালাতে চাই ./arm-mingw32ce-g++, তবে তারপরে আমি ত্রুটি বার্তাটি পাই,

bash: ./arm-mingw32ce-g++: No such file or directory

আমি উবুন্টু লিনাক্স ১০.১০ চালাচ্ছি। ls -lতালিকা

-rwxr-xr-x 1 root root  433308 2010-10-16 21:32 arm-mingw32ce-g++

Sudo ( sudo ./arm-mingw32ce-g++) দেয় ব্যবহার করে

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

ওএস ফাইল থাকা অবস্থায় কেন ফাইল দেখতে পারে না তা আমার কোনও ধারণা নেই। কোন চিন্তা?

উত্তর:


82

এই ত্রুটিটির অর্থ ./arm-mingw32ce-g++হ'ল এটি বিদ্যমান নয় (তবে এটি রয়েছে), বা এটি বিদ্যমান এবং এটি একটি ডায়নামিকভাবে লিঙ্কযুক্ত এক্সিকিউটেবল যা কার্নেল দ্বারা স্বীকৃত তবে এটির গতিশীল লোডার উপলব্ধ নেই। আপনি চালিয়ে যা দেখতে চান ডায়নামিক লোডার প্রয়োজন ldd /arm-mingw32ce-g++; চিহ্নিত কিছু not foundহ'ল ডায়নামিক লোডার বা একটি লাইব্রেরি যা আপনার ইনস্টল করতে হবে।

আপনি যদি একটি এমডি 64 ইনস্টলেশনটিতে 32-বিট বাইনারি চালানোর চেষ্টা করছেন:

  • উবুন্টু ১১.০৪ পর্যন্ত প্যাকেজটি ইনস্টল করুন ia32-libs
  • উবুন্টু ১১.১০ এ ইনস্টল করুন ia32-libs-multiarch
  • 12.04 দিয়ে শুরু করে, প্যাকেজগুলি ছাড়াও ia32-libs-multiarchযুক্তিসঙ্গত :i386প্যাকেজগুলির সেট নির্বাচন করুন বা নির্বাচন করুন :amd64

16
দুর্দান্ত, কাজ! যাইহোক, ldd এর আউটপুট ছিল not a dynamic executable(আমি ia32 -libs ইনস্টল করার আগে)।
ওয়ার্পস্পেস 14

4
ia32-libs-*উবুন্টু 16,04 মধ্যে নিন্দা করা হয়েছে, ইনস্টল lib32ncurses5এবং lib32z1পরিবর্তে।
গ্যালোইস প্লাসপ্লাস প্লাস

4
তৃতীয় পক্ষের বাইনারিগুলি চালানোর চেষ্টা করার সময় নিক্স বা নিক্সস-এ এটি একটি সাধারণ সমস্যা; প্যাচেল্ফ দেখুন
বার্বার

32

আমি যখন উবুন্টুতে সেলেনিয়াম উত্স তৈরির চেষ্টা করছিলাম তখন আমি এই ত্রুটির মুখোমুখি হয়েছি। সঠিক শিবং সহ সহজ শেল স্ক্রিপ্টটি আমার সমস্ত পূর্ব-আবশ্যক বিষয় আবৃত হওয়ার পরেও চালাতে সক্ষম হয়নি।

file file-name # helped me in understanding that CRLF ending were present in the file.

আমি ভিমে ফাইলটি খুললাম এবং আমি দেখতে পেলাম যে আমি একবার এই ফাইলটি একটি উইন্ডোজ মেশিনে সম্পাদনা করেছি, এটি ডস ফর্ম্যাটে ছিল। আমি নীচের কমান্ড দিয়ে ফাইলটি ইউনিক্স ফর্ম্যাটে রূপান্তর করেছি:

dos2unix filename # actually helped me and things were fine.

আমি আশা করি যে যখনই প্ল্যাটফর্ম জুড়ে আমরা ফাইলগুলি সম্পাদনা করি আমাদের যত্ন নেওয়া উচিত এবং পাশাপাশি ফাইল ফর্ম্যাটগুলিরও যত্ন নেওয়া উচিত।


এটা কাজ করেছে! একাধিক জিনিস চেষ্টা করার পরে, এই সমাধান ছিল। ধন্যবাদ!
পেড্রো পেরেজ

এক দশক দেরী, তবে creditণ যেখানে creditণ প্রদান। আমার ক্ষেত্রে উইন্ডোজ ডিরেক্টরি সহ উইন্ডোতে ডাব্লুএসএল 2 ব্যবহার করে ডাব্লুএসএল চলমান ডিস্ট্রোটির অভ্যন্তরে মাউন্ট করা হয়েছে। উইন্ডোজ লাইন শেষ - ইউনিক্স ফাইল।
ব্রেন্টন থমাস

ধন্যবাদ, @ ব্রেন্টন থমাস। আমি আনন্দিত যে এটি সাহায্য করেছে। উইন্ডোজটিতে আমি এখনও ডাব্লুএসএল চেষ্টা করি নি। আমি শীঘ্রই এটি ব্যবহার করতে চান।
h3xh4wk

20

কোনও স্ক্রিপ্ট চালানোর চেষ্টা করা এবং শেবাংয়ের ভুল বানান থাকলে এই ত্রুটিটিও ঘটতে পারে । নিশ্চিত করুন এটি সার্চ #!/bin/sh, #!/bin/bashঅথবা যেটা ব্যাখ্যাকারী আপনি ব্যবহার করছেন।


4
আমি কোনও এক্সিকিউটেবলের কথা উল্লেখ করছি, স্ক্রিপ্ট নয়। তারপরে, অন্য কেউ এই মন্তব্যটি দরকারী বলে মনে করতে পারেন
ওয়ার্পস্পেস

4
সত্য, তবে আমি এই সঠিক সমস্যার জন্য এই প্রশ্নটিতে অবতীর্ণ করেছি, সুতরাং আপনি যেমন বলেছিলেন, সম্ভবত অন্য কেউ।
জোল্টন

আমার ক্ষেত্রে, আমি ./my/full/path/myscriptপরিবর্তে চালানোর চেষ্টা করছিলাম ./myscript
নুমেনন

8

পাইথন স্ক্রিপ্টটি চালানোর চেষ্টা করার সময় আমার একই ত্রুটি বার্তা ছিল - এটি @ ওয়ার্পস্পেসের উদ্দেশ্যযুক্ত ব্যবহারের কেস ছিল না (অন্যান্য মন্তব্য দেখুন), তবে এটি আমার অনুসন্ধানের শীর্ষ হিটগুলির মধ্যে ছিল, সুতরাং সম্ভবত কেউ এটির কাজে লাগবে।

আমার ক্ষেত্রে এটি ডস লাইনটি শেষ হয়েছিল ( \r\nপরিবর্তে \n) যে শেবাং লাইন ( #!/usr/bin/env python) অতিক্রম করবে। একটি সাধারণ dos2unix myfile.pyএটি স্থির।


4

আমি সরল বাশ স্ক্রিপ্টের জন্য একই ত্রুটি পেয়েছি যার মধ্যে 32/64-বিট সমস্যা নেই। এটি সম্ভবত কারণ আপনি যে স্ক্রিপ্টটি চালানোর চেষ্টা করছেন তাতে এতে একটি ত্রুটি রয়েছে। এই উবুন্টু ফোরাম পোস্টটি ইঙ্গিত দেয় যে সাধারণ স্ক্রিপ্ট ফাইলগুলির সাহায্যে আপনি সামনে 'sh' যুক্ত করতে পারেন এবং আপনি এটি থেকে কিছু ডিবাগ আউটপুট পেতে পারেন। যেমন

$ sudo sh arm-mingw32ce-g++

এবং আপনি কোনও আউটপুট পান কিনা তা দেখুন।

আমার ক্ষেত্রে আসল সমস্যাটি হ'ল আমি যে ফাইলটি চালানোর চেষ্টা করছিলাম সেটি লিনাক্সের পরিবর্তে উইন্ডোজ ফর্ম্যাটে।


3

আমি এই ত্রুটিটি পেয়েছি “No such file or directory”তবে এটি বিদ্যমান কারণ আমার ফাইলটি উইন্ডোজে তৈরি হয়েছিল এবং আমি এটি উবুন্টুতে চালানোর চেষ্টা করেছি এবং সেই ফাইলটিতে অবৈধ 15 \ r রয়েছে যেখানে কোনও নতুন লাইন ছিল। আমি সবেমাত্র একটি নতুন ফাইল তৈরি করেছি যাতে অযাচিত জিনিস কাটা যায়

sleep: invalid time interval ‘15\r’
Try 'sleep --help' for more information.
script.sh: 5: script.sh: /opt/ag/cont: not found
script.sh: 6: script.sh: /opt/ag/cont: not found
root@Ubuntu14:/home/abc12/Desktop# vi script.sh 
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  \r  \n   w   g   e   t       h   t   t   p   :   /

0000400   :   4   1   2   0   /  \r  \n
0000410
root@Ubuntu14:/home/abc12/Desktop# tr -d \\015 < script.sh > script.sh.fixed
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  \n   w   g   e   t       h   t   t   p   :   /   /

0000400   /  \n
0000402
root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

3

নীচে কমান্ড 16.4 উবুন্টুতে কাজ করেছে

এই সমস্যাটি আসে যখন আপনার .sh ফাইলটি দুর্নীতিগ্রস্থ হয় বা ইউনিক্স প্রোটোকল অনুসারে ফর্ম্যাট হয় না।

ডস 2 ইউনিক্স .sh ফাইলটিকে ইউনিক্স ফর্ম্যাটে রূপান্তর করে!

sudo apt-get install dos2unix -y
dos2unix test.sh
sudo chmod u+x test.sh 
sudo ./test.sh

1

আমার ম্যাকটিতে তৈরি করা একটি ফাইলের সাথে আমার একই সমস্যা ছিল। যদি আমি। / ফাইল নাম দিয়ে একটি শেলটিতে এটি চালানোর চেষ্টা করি তবে আমি ফাইলটি খুঁজে পেয়েছি ত্রুটি বার্তাটি খুঁজে পেল না। আমি মনে করি যে ফাইলটিতে কিছু ভুল ছিল।

আমি যা করেছি:

সার্ভারের জন্য একটি ssh সেশন খুলুন
বিড়াল ফাইলের
নামটি আউটপুটটি ক্লিপবোর্ডে অনুলিপি করুন
আরএম ফাইলনাম
টাচ ফাইলনাম
vi ফাইলের নাম
সন্নিবেশ মোডের জন্য
ক্লিপবোর্ড
ESC থেকে সামগ্রীটি সন্নিবেশ মোডটি শেষ করতে পেস্ট করুন
: wq!

এটি আমার পক্ষে কাজ করেছে।


1

আমি সবেমাত্র এই সমস্যা ছিল mingw32 bash। আমি নোড / এনপিএম থেকে এক্সিকিউট করেছি Program Files (x86)\nodejsএবং তারপরে সেগুলি disabledডিরেক্টরিতে স্থানান্তরিত করেছি (মূলত এগুলি পথ থেকে সরানো)। আমার কাছেও Program Files\nodejs(অর্থাত্ bit৪ বিট সংস্করণ) পথ ছিল তবে কেবল x86 সংস্করণের পরে। ব্যাশ শেলটি পুনরায় চালু করার পরে, এনএমপির 64 বিট সংস্করণ পাওয়া যাবে। nodeসার্বক্ষণিকভাবে সঠিকভাবে কাজ করেছে ( node -vx86 সংস্করণ স্থানান্তরিত হওয়ার সাথে সাথে এটি পরীক্ষা করা হয়েছে)।

আমি মনে করি bash -rবাশ পুনরায় আরম্ভ করার পরিবর্তে কাজ করতেন: https://unix.stackexchange.com/a/5610


1

অন্যদের দ্বারা যেমন উল্লেখ করা হয়েছে, এটি কারণ আপনার লোকে কার্যকর করা যায় না এমন ফাইলটি খুঁজে পাওয়া যায় না। দুর্ভাগ্যক্রমে বার্তাটি যথেষ্ট পরিষ্কার নয়।

আপনার এক্সিকিউটেবল যে লোডারটি ব্যবহার করে এটি পরিবর্তন করে আপনি এটি ঠিক করতে পারেন, এই অন্য প্রশ্নের আমার পুরো উত্তরটি দেখুন: একক হোস্টে একাধিক গ্লাবসি লাইব্রেরি

মূলত আপনাকে কোন লোডারটি ব্যবহার করার চেষ্টা করছে তা খুঁজে বের করতে হবে:

$ readelf -l arm-mingw32ce-g++ | grep interpreter
  [Requesting program interpreter: /lib/ld-linux.so.2]

তারপরে একটি সমতুল্য লোডারটির জন্য সঠিক পথটি সন্ধান করুন এবং লোডারটি যে সত্যিকারের পথ থেকে এটি ব্যবহার করতে আপনার নির্বাহযোগ্যকে পরিবর্তন করুন:

$ ./patchelf --set-interpreter /path/to/newglibc/ld-linux.so.2 arm-mingw32ce-g++

আপনাকে সম্ভবত এতে অন্তর্ভুক্তের পথও নির্ধারণ করতে হবে, আপনি চালানোর চেষ্টা করার পরে আপনি এটি চান কিনা তা আপনি জানতে পারবেন। অন্যান্য থ্রেডে সমস্ত বিবরণ দেখুন।


1

আমি আমার উবুন্টু 18 এর জন্য আমার সমাধানটি এখানে পেয়েছি ।

sudo dpkg --add-architecture i386

তারপরে:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

0

আমার এই সমস্যাটি ছিল এবং কারণটি নোটপ্যাড ++ এর মতো কিছু সম্পাদকগুলিতে EOL ছিল। আপনি এডিট মেনুতে / ইওএল রূপান্তরটিতে এটি পরীক্ষা করতে পারেন। ইউনিক্স (এলএফ) নির্বাচন করা উচিত। আমি এটি দরকারী হবে আশা করি।


কমান্ডটি কোনও ফাইল থেকে কার্যকর করা না হওয়ায় এই ক্ষেত্রে সমস্যা হওয়ার সম্ভাবনা নেই।
রালফ্রেডল

0

ভবিষ্যতের রেফারেন্সের জন্য এখানে যুক্ত করা হয়েছে (একই ক্ষেত্রে পড়তে পারে এমন ব্যবহারকারীদের জন্য): উইন্ডোজে কাজ করার সময় এই ত্রুটিটি ঘটে (যা লিনাক্স সিস্টেমের চেয়ে আলাদা লাইন বিভাজনের কারণে অতিরিক্ত অক্ষরগুলির পরিচয় দেয়) এবং এই স্ক্রিপ্টটি চালানোর চেষ্টা করার সাথে (অতিরিক্ত অক্ষর সন্নিবেশিত) লিনাক্সে। ত্রুটি বার্তাটি বিভ্রান্তিকর।

উইন্ডোজে লাইন বিভাজকটি সিআরএলএফ ( \ r \ n ) হয় তবে লিনাক্সে এটি এলএফ ( \ n ) হয়। এটি সাধারণত পাঠ্য সম্পাদককে বেছে নেওয়া যেতে পারে।

আমার ক্ষেত্রে, উইন্ডোজটিতে কাজ করার এবং ইউনিক্স সার্ভারে মৃত্যুদন্ড কার্যকর করার জন্য আপলোড করার কারণে এটি ঘটেছে।


4
আমি ডকার, লিনাক্স ব্যবহার করি তবে এটি উইন্ডোজ থেকে তৈরি করি। আমার স্ক্রিপ্ট শুরু scriptdir=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)তারপর cd $scriptdir || exit 1কিন্তু \rআমার উইন্ডোজ সম্পাদনা ফাইলে যোগ করা গিয়েছে scriptdirমান। সুতরাং বার্তাটি : no such file or directoryসবচেয়ে বিভ্রান্তিকর ছিল, যেহেতু এটির অভিযোগটি মুছে ফেলা শেষ হয়েছিল।
জেসি চিশলম

0

টেরাফর্ম / টেরাগ্রান্ট চালানোর চেষ্টা করে এই ত্রুটিটি হিট করুন (সিঙ্গেল গো বাইনারি)।

কার্যকর which terragruntহয় যেখানে এটি নির্ধারণের জন্য, এটি স্থানীয় দিরে বা পুরো পথ দিয়ে চালানোর সময় অদ্ভুত ত্রুটি পেয়েছে

bash: ./terragrunt: No such file or directory

সমস্যাটি হ'ল টেরাগ্রান্টের দুটি স্থাপনা ছিল, brew uninstall terragruntএটির একটি মুছে ফেলার জন্য ব্যবহৃত হত ।

একটিকে সরিয়ে দেওয়ার পরে, which terragruntনতুন পথটি /usr/bin/terragruntসবকিছু ঠিকঠাকভাবে দেখাল ।

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