আপডেট সংক্ষিপ্তসার
কার্যনির্বাহী প্রশ্নে লিনাক্স নেটিভ ফর্ম্যাট (ইএলএফ) নয়, তারা উইন্ডোগুলির জন্য সংকলিত are পাথ সম্প্রসারণের সময়, ব্যাশ বাইনারিটির যাদু সংখ্যা পরীক্ষা করে, যদি এটি ইএলএফের সাথে ম্যাচ না হয়, তবে এটি পথ বিস্তারের মাধ্যমে এটি প্রকাশ করে না। যাইহোক, উইন্ডোজগুলির জন্য ব্যাশে বাশ পরিবেশ থেকে নেটিভ উইন্ডোজ অ্যাপ্লিকেশনগুলি চালু করার ক্ষমতা অন্তর্ভুক্ত ছিল, যে কারণে সরাসরি কার্যকরকরণ (পথের সম্প্রসারণ এবং পরবর্তী বাইনারি চেক ব্যতীত) ঠিকঠাক কাজ করে।
রেজোলিউশন হয় একটি উপাম ভিত্তিক .Bashrc সংযোজন (বা পথ প্রসারণের নকল করার জন্য বিকল্প পদ্ধতিগুলির যে কোনও সংখ্যা এইভাবে বাশ ফাইল মূল্যায়নকে বাইপাস করে) বা লিনাক্স সংস্করণ ইনস্টল করা।
আসল উত্তর
ফাইল অনুমতি
এটি সম্ভবত একটি ক্রস ফাইল সিস্টেম অনুমতি সংক্রান্ত সমস্যা। আপনি cd /mnt/c/Program\ Files/apache-maven-3.3.9/bin
এবং এমভিএন এর মতো চালানোর চেষ্টা করলে ./mvn
কী হয়?
ls -alt
যে ডিরেক্টরিতে আউটপুট কি ?
যদি ফাইলটি যথাযথভাবে নির্বাহযোগ্য হিসাবে চিহ্নিত না হয় তবে এটি আপনার পথে কোনও 'প্রোগ্রাম' হিসাবে প্রদর্শিত হবে না। যদি এটি একটি বাইনারি ফাইল হয় এবং 'লিনাক্স' ফর্ম্যাটে (ইএলএফ) না হয় তবে এটি কার্যকর কার্যকর পথ হিসাবে দেখাবে না।
সরাসরি এমভিএন কার্যকর না করলে (দয়া করে এলএস ফলাফলগুলি পোস্ট করুন), কার্যকর করার অনুমতিগুলি যুক্ত করার চেষ্টা করুন chmod ug+x mvn
ভুল সংস্করণ ইনস্টল করা হয়েছে
আপনি কি নিশ্চিত যে আপনার লিনাক্স নেটিভ সংস্করণ ইনস্টল করা আছে - আপনি যে সাইগউইনের সাথে একই সংস্করণটি ব্যবহার করেছেন এটি প্রায় কার্যকরভাবে কাজ করবে না।
আপনি sudo apt-get install elf-binutils
তখন mvn ফাইলটিতে বাইনারি সামঞ্জস্যতা পরীক্ষা করতে পারেন
কমান্ডটি ব্যবহার করুন
readelf -a mvn
যদি আপনি 'ELF ফাইল নয় ... as এর মতো কোনও ত্রুটি পেয়ে থাকেন তবে আপনার উত্তর রয়েছে have
আমি কেবল লক্ষ্য করেছি যে আপনি উদাহরণস্বরূপ পরীক্ষার শেল স্ক্রিপ্টে অনুমতিগুলি সম্পাদন করেন নি, যা (আপনি কেবল পদক্ষেপের তালিকাটি ভুলে যাওয়া না থাকলে), সেই নির্দিষ্ট ব্যর্থতার পুরোপুরি ব্যাখ্যা করে।
সারসংক্ষেপ:
- ম্যাভেন বিন ডিরেক্টরিতে এক্সিকিউটেবলগুলি chmod ব্যবহার করে নির্বাহযোগ্য হিসাবে সঠিকভাবে সেট করা আছে তা নিশ্চিত করুন। আপনার উত্তরে ls -alt এর আউটপুট পোস্ট করুন।
- আপনার একটি লিনাক্স বাইনারি রয়েছে তা নিশ্চিত করুন - যাচাই করতে ইউটিলিটি রিডফল্ট ব্যবহার করুন।
- আপনার শেল স্ক্রিপ্ট পরীক্ষাটি আবার চালাও, তবে এবার ফাইলটি সম্পাদনযোগ্য হিসাবে চিহ্নিত করুন।
হালনাগাদ
পথের সমস্যাটি ছিল একটি লাল রঙের হারিং; আপনি কেবল একটি বাইনারি ফর্ম্যাট কার্যকর করার চেষ্টা করছেন যা উইন্ডোজ পরিবেশে লিনাক্সের সাথে সামঞ্জস্যপূর্ণ নয়।
পৃষ্ঠে দুটি পরিবেশ (উইন্ডোতে সাইগউইন এবং ব্যাশ) কিছুটা অনুরূপ ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করে তবে বাস্তবায়ন এবং ফলস্বরূপ বাইনারি সামঞ্জস্য খুব আলাদা।
নীচের লাইন - সাইগউইন এবং লিনাক্স বাইনারি ফর্ম্যাটগুলি সামঞ্জস্যপূর্ণ নয়। উইন্ডোতে ব্যাশ থেকে চালানোর জন্য আপনাকে লিনাক্স নেটিভ সংস্করণ ইনস্টল করতে হবে। আপনি এটি উইন্ডোজ পরিবেশে ব্যাশের অভ্যন্তর থেকে উত্স থেকে সংকলন করতে পারেন; তবে পরিবেশের 'প্রাথমিক দিনগুলি' প্রকৃতির কারণে আমি নির্ভরশীলতার তাড়া নিয়ে চিন্তিত ছিলাম।
দুটি পরিবেশের সংক্ষিপ্ত বিবরণ:
সাইগউইন কার্যকরভাবে একটি অনুবাদ স্তর যা সিস্টেম কলগুলির জন্য একটি এপিআই সরবরাহ করে যা সাধারণত নন-পসআইএক্স সিস্টেমগুলিতে পাওয়া যায় না, যা আপনাকে উইন্ডোজের পরিবেশে লিনাক্সে চালানোর জন্য লিখিত অনেকগুলি প্রোগ্রাম সংকলন করতে দেয়। তবে এটি এখনও একটি 'উইন্ডোজ' পরিবেশে চলছে - সেই বাইনারি এখন কেবল উইন্ডোজের সাইগউইন পরিবেশে কাজ করবে। এই অনুবাদ স্তর এবং সম্পর্কিত লাইব্রেরিগুলি লিনাক্স এপিআইয়ের বিপরীতে লিখিত উত্স কোডটি সাইগউইন পরিবেশে সংকলন করতে এবং উইন্ডোতে চালানোর অনুমতি দেয়। এই পদ্ধতিতে নির্মিত বাইনারিগুলি মূলত লিনাক্স বা উইন্ডোজে চলবে না; কেবল সাইগউইন পরিবেশে।
ক্যানোনিকাল দ্বারা সরবরাহ করা উইন্ডোগুলিতে বাশ পরিবেশ সাইগউইনের চেয়ে অনেক আলাদা। এটি প্রকৃতপক্ষে এমন একটি প্রোগ্রামের পরিবেশকে 'পুনঃবিন্যাস' করে যা প্রকৃতপক্ষে লিনাক্স বলে মনে হয় - যেমন বাইনারিগুলিতে কোনও পরিবর্তন না করেই পসিক্স সিস্টেম কলের সাথে স্ট্যান্ডার্ড লাইব্রেরিগুলি পাওয়া যায়। অনেক ক্ষেত্রে ওবুন্টুর বিপরীতে নির্মিত বাইনারিটি উইন্ডোজ পরিবেশে সরাসরি ব্যাশে অনুলিপি করা যায় এবং কোনও সমস্যা ছাড়াই চালানো যেতে পারে।
উইন্ডোতে ব্যাশে বৈধ এক্সিকিউটেবল হিসাবে স্বীকৃতি পেতে এটি একটি স্থানীয় লিনাক্স বাইনারি ফর্ম্যাট বা প্রোগ্রামটির সাথে চিহ্নিত একটি স্ক্রিপ্ট ফাইলে এটি ব্যাখ্যা করতে হবে (একটি ব্যাশ স্ক্রিপ্টের জন্য, #! / বিন / ব্যাশ)। লিনাক্স লাইব্রেরি এবং সিস্টেম কলগুলির বিপরীতে একটি নেটিভ লিনাক্স বাইনারি তৈরি করা হবে। বাশ নিশ্চিত করে যে এক্সিকিউটেবল অনুমতি বিটগুলি পরীক্ষা করে এবং বাইনারি ফাইল ফর্ম্যাটটি যথাযথ (একটি 'ম্যাজিক নম্বর' চেক) পরীক্ষা করে উভয়ই বৈধ কার্যকর নির্বাহযোগ্য। যদি এটি একটি বাইনারি ফাইল এবং ELF ফর্ম্যাটে না থাকে তবে এটি পথ প্রসারণের মাধ্যমে শেলের সাথে উন্মুক্ত হয় না।
এই বিষয়টিকে স্পষ্ট করে তুলতে আরও শক্তিশালী করার জন্য, তারা উইন্ডোজগুলিতে ব্যাশ থেকে দেশীয় উইন্ডোজ অ্যাপ্লিকেশনগুলি লঞ্চ করার আংশিক দক্ষতা যুক্ত করেছে, তবে বাশ পাথ সম্প্রসারণ বাইনারি ফাইল ফর্ম্যাট চেকটি স্পষ্টভাবে চিহ্নিত করেনি - বা তারা করেছে এবং এটি একটি বাগ।
দ্বিতীয় সম্পাদনা:
আপনার প্রশ্নের স্পষ্টতা:
আপনি যখন এটি সরাসরি চালু করেন (./mvn) এটি বাশ মূল্যায়নকে বাইপাস করে এবং কেবল এটি কার্যকর করে। উইন্ডোজ এনভায়রনমেন্টে ব্যাশ উইন্ডোজ নেটিভ এক্সিকিউটেবল লঞ্চ করতে যথেষ্ট স্মার্ট, যা অবশ্যই হওয়া উচিত। আমি বিশ্বাস করি না যে কোনও সাইগউইন বাইনারি বাশ থেকে যথাযথভাবে চালু হবে, তবে আমি ভুল হতে পারি - ডকুমেন্টেশন এই মুহুর্তে খুব কম এবং এই মুহুর্তে আমার কাছে পরীক্ষার পরিবেশ অ্যাক্সেসযোগ্য নেই।
ওয়ার্কআরাউন্ড যা 'পথ' সমর্থনের সমতুল্য ক্ষমতা সরবরাহ করে:
আপনি যদি অন্যথায় সম্পূর্ণরূপে ম্যাভেন ইন্সটলেশনের সাথে পুরোপুরি খুশি হন (অন্য কোনও সামঞ্জস্যতার সমস্যা নেই, সবকিছু কেবল 'কাজ করে') তবে এটির পথে থাকা গুরুত্বপূর্ণ, আপনি একটি সাধারণ কর্মক্ষেত্র ব্যবহার করতে পারেন যা সমান সামর্থ্য সরবরাহ করবে।
আপনার .bashrc ফাইলে, নিম্নলিখিত নামটি যুক্ত করুন:
alias mvn='/mnt/c/Program\ Files/apache-maven-3.3.9/bin/mvn'
আপনি যে উইন্ডো পরিবেশে বাশ এর মধ্যে যে কোনও জায়গা থেকে অ্যাক্সেস চান ডিরেক্টরিতে অন্য কোনও এক্সিকিউটেবলের সমতুল্য পুনরাবৃত্তি করুন।
পুনরায় আরম্ভ করুন বা ফাইলটি উত্স করুন এবং তারপরে mvn
যে কোনও ডিরেক্টরি থেকে কাজ করবে (আপনার বক্তব্যটির ভিত্তিতে যে বিন দিরের মধ্য থেকে সরাসরি সম্পাদন, ./mvn কাজ করছিল)।
C:\Users\%username%\AppData\Local\lxss\root\.bashrc
পথ যোগ করার জন্য এখনই ফাইলটি সম্পাদনা করতে পারেন?