node-gyp হল একটি দক্ষ টুল যা ডেভেলপারদের নেটিভ Node অ্যাড-অন মডিউল একাধিক প্ল্যাটফর্মে কম্পাইল করতে দেয়। এটি খুব জনপ্রিয় এবং আজ واسعة ব্যবহার করা হচ্ছে, তাই অধিকাংশ NPM প্যাকেজের নির্ভরতা হিসেবে এটি অন্তর্ভুক্ত থাকে।
অধিকাংশ অপারেটিং সিস্টেমে node-gyp কোনো সমস্যা তৈরি করে না। node-gyp এবং বাকি NPM প্যাকেজ ইনস্টল করা সাধারণত সুগম এবং দক্ষতার সাথে হয়। তবে সকল ব্যবহারকারীর জন্য এটি সত্য নয়। কিছু ডেভেলপার macOS-এ node-gyp রিবিল্ড করার সমস্যা রিপোর্ট করেছেন, ফলে প্রভাবিত ডেভেলপারদের অভিজ্ঞতা খারাপ হয়েছে। এই ত্রুটি বহুসমস্যা এবং জিনিসগুলো ভুল হওয়ার অনেক উপায় তৈরি করে।
এই সমস্যা নতুন নয়। পুরনো সংস্করণের macOS ব্যবহারকারী ডেভেলপাররা আগে এই ত্রুটির সম্মুখীন হয়েছিলেন। macOS Catalina রিলিজের সাথে সাথে, নতুন macOS সংস্করণে আপগ্রেড করার পর অনেক ডেভেলপার Mac-এ node-gyp রিবিল্ড ব্যর্থতার রিপোর্ট দিয়েছেন। এই ত্রুটি ডেভেলপারদের node-gyp প্যাকেজগুলো ইনস্টল করতে বাধা দিয়েছে।
যদি আপনি এই ত্রুটির সম্মুখীন হন, তবে আপনি বুঝতে পারবেন Mac-এ node-gyp রিবিল্ড ব্যর্থতা কতটা চिढ়äusch। আপনি আপনার অ্যাপ বা সফ্টওয়্যার ডেভেলপমেন্টে অগ্রসর হয়ে যেতে পারবেন না যতক্ষণ না এই ত্রুটি ঠিক হয়। সৌভাগ্যক্রমে, আমরা আপনার জন্য সব কাজ করে ফেলেছি। যদি এই ত্রুটির কারণে আপনার প্রজেক্টে অগ্রসর হয়া অসম্ভব লাগে, তবে নিচে দিয়ে যেকোনো সমাধান চেষ্টা করে এটি সমাধান করতে পারেন।
প্রো টিপ: আপনার ম্যাককে পারফরম্যান্স সমস্যা, জাঙ্ক ফাইল, ক্ষতিকর অ্যাপ এবং নিরাপত্তা হুমকির জন্য স্ক্যান করুন
যা সিস্টেম সমস্যা বা ধীর পারফরম্যান্সের কারণ হতে পারে।
Node-Gyp কী?
node-gyp হল Node.js অ্যাড-অন কম্পাইল করার জন্য ব্যবহৃত একটি টুল, যা C বা C++-এ লেখা নেটিভ Node.js মডিউল। এই মডিউলগুলো আপনার মেশিনে node-gyp-এর মতো একটি টুল ব্যবহার করে কম্পাইল করতে হয়। Node-gyp Windows, macOS এবং Linux-এ কাজ করে।
Node-gyp সাধারণত এর সামঞ্জস্যপূর্ণ ইন্টারফেসের কারণে ব্যবহার করা সহজ। আপনি একই কমান্ডগুলো ব্যবহার করে ভিন্ন প্ল্যাটফর্মে আপনার মডিউল বিল্ড বা রিবিল্ড করতে পারেন। Node-gyp Node-এর একাধিক টার্গেট সংস্করণও সমর্থন করে।
যদি আপনি Mojave বা macOS-এর পুরনো সংস্করণে npm gyp error পান, তবে node-gyp কাজ করার জন্য প্রয়োজনীয় শর্তগুলো ডাবল-চেক করতে হবে।
macOS-এ node-gyp কাজ করার জন্য আপনাকে ইনস্টল করতে হবে:
- Python v2.7, v3.5, v3.6, বা v3.7
- Xcode – একটি ইউটিলিটি যা ডেভেলপারদের macOS, iOS এবং iPadOS-এ অ্যাপ তৈরি করতে দেয়।
আপনাকে Xcode Command Line Tools-এর সঠিক সংস্করণও ইনস্টল করতে হবে, যা XCode-এর সফ্টওয়্যার ডেভেলপমেন্ট টুল এবং লাইব্রেরির স্যুটের অংশ।
Xcode Command Line Tools ইনস্টল করতে নিচের নির্দেশনা অনুসরণ করুন:
- আপনার Mac-এ Xcode শুরু করুন।
- Xcode মেনু থেকে Preferences নির্বাচন করুন।
- General প্যানেলের অধীনে, Downloads-এ ক্লিক করুন।
- যখন Downloads উইন্ডো খুলবে, Components ট্যাবে ক্লিক করুন।
- Command Line Tools-এর পাশে Install বাটনে ক্লিক করুন।
- আপনার Apple Developer অ্যাকাউন্ট ব্যবহার করে লগ ইন করুন ইনস্টলেশন প্রক্রিয়া সম্পূর্ণ করতে।
যদি আপনি macOS Catalina চালাচ্ছেন, তবে আপনি আপনার Catalina সংস্করণের জন্য উপযুক্ত Command Line Tools for Xcode এখান থেকে ডাউনলোড করতে পারেন। macOS 10.15.3-এর জন্য, ফাইলনেম হওয়া উচিত Command_Line_Tools_for_Xcode_11.3.1.dmg। সঠিক কম্পোনেন্টগুলো ইনস্টল করার পর, আপনাকে node-gyp ব্যবহার করে সফলভাবে বিল্ড করতে পারা উচিত। আপনি যদি Mac-এ node-gyp রিবিল্ড ব্যর্থতা পান, তবে এই কম্পোনেন্টগুলো রিভিউ করুন কী ভুল হয়েছে তা জানতে।
Node-gyp রিবিল্ড এরর কীভাবে সমাধান করবেন
একটি node মডিউল ইনস্টল করা সহজ প্রক্রিয়া। আপনি শুধু নির্দিষ্ট কমান্ডগুলো চালাতে হবে এবং আপনি কাজ করতে পারবেন। আপনি যদি Mac-এ node-gyp রিবিল্ড ব্যর্থতা পান, তবে একটু পিছিয়ে আসুন বুঝতে কী ঘটেছে।
তবে এর আগে, এখানে কিছু বেসিক ট্রাবলশুটিং ধাপ দেওয়া হলো যা আপনাকে চেষ্টা করা উচিত:
- আপনার কম্পিউটার রিস্টার্ট করুন যেকোনো অস্থায়ী বাগ দূর করতে যা আপনার সিস্টেমকে প্রভাবিত করতে পারে।
- সকল অনাবশ্যক অ্যাপ বন্ধ করুন আপনার কম্পিউটার রিসোর্স মুক্ত করতে।
- অস্থায়ীভাবে আপনার সিকিউরিটি সফ্টওয়্যার, যেমন এন্টিভাইরাস বা অ্যান্টি-ম্যালওয়্যার প্রোগ্রাম নিষ্ক্রিয় করুন।
- Mac repair app ব্যবহার করে আপনার সিস্টেম ক্লিন আপ করুন।
আপনি যদি এখনও node-gyp রিবিল্ডিং এরর পান, তবে নিচের সমাধানগুলো দেখুন এবং দেখুন কোনটি আপনার জন্য কাজ করে।
Fix #১: প্রয়োজনীয় কম্পোনেন্টগুলো ডাবল-চেক করুন।
আপনি Mojave বা অন্য macOS সংস্করণে npm gyp error পেলে প্রথম কাজ হলো node-gyp-এর ইনস্টলেশন প্রয়োজনীয়তা ডাবল-চেক করা। উপরের সেকশনে উল্লেখ করা হয়েছে, এর জন্য তিনটি কম্পোনেন্ট দরকার:
- Python
- Xcode
- Xcode Command Line Tools
C এবং C++ ভাষাগুলো ইনস্টল করা ভুলবেন না, যা মডিউল কম্পাইল করার জন্য দরকার। যদি এই중에 যেকোনো একটি অনুপস্থিত থাকে বা কাজ না করে, তবে আপনি নিশ্চিতভাবে রিবিল্ড ব্যর্থতা এরর পাবেন। অনুপস্থিত বা ফল্টি কম্পোনেন্টটি রি-ইনস্টল করলে সমস্যাটি সমাধান হয়ে যাবে।
Fix #২: আপনার Node-Gyp কম্পোনেন্টগুলো আপডেট করুন।
কখনো কখনো এই কম্পোনেন্টগুলো ইনস্টল করা পর্যাপ্ত নয়। আপনাকে নিশ্চিত করতে হবে আপনি আপনার macOS-এর জন্য সঠিক সংস্করণ ব্যবহার করছেন। আপনি Python v2.7, v3.5, v3.6, বা v3.7-এ서 যেকোনো একটি বেছে নিতে পারেন, যেটি আপনার জন্য কাজ করে। Xcode-এর জন্য, আপনি এখান থেকে ডাউনলোড করতে পারেন। আপনাকে node-gyp-এর সর্বশেষ সংস্করণও ইনস্টল করতে হবে যেন কোনো সমস্যা না হয়।
Fix #৩: একটি অ্যাসিড টেস্ট করুন।
আপনার কম্পিউটারের Xcode Command Line Tools সঠিকভাবে ইনস্টল হয়েছে কিনা এবং node-gyp-এর সাথে কাজ করবে কিনা তা চেক করতে আপনি একটি অ্যাসিড টেস্ট করতে পারেন এই ধাপগুলো অনুসরণ করে:
- Xcode-এ এই কমান্ডটি চালান:
/usr/sbin/pkgutil –packages | grep CL - আপনি যদি com.apple.pkg.CLTools_Executables তালিকাভুক্ত দেখেন, তবে আপনার কোনো সমস্যা নেই। যদি না থাকে, তবে এই টেস্ট ব্যর্থ হয়েছে এবং আপনাকে এটি রি-ইনস্টল করতে হবে।
- পরবর্তী কমান্ডটি চালান:
/usr/sbin/pkgutil –pkg-info com.apple.pkg.CLTools_Executables - আপনার version: 11.0.0 (বা তারপরবর্তী) তালিকাভুক্ত দেখতে উচিত। যদি না থাকে, তবে এই টেস্টও ব্যর্থ হয়েছে এবং আপনাকে রি-ইনস্টল করতে হবে।
Fix #৪: অন্য একটি Python সংস্করণে স্যুইচ করুন।
অনেক প্রভাবিত ডেভেলপার নোট করেছেন যে এক্টিভ এনভায়রনমেন্টের জন্য ব্যবহৃত Python সংস্করণ পরিবর্তন করলে তাদের সমস্যাটি সমাধান হয়েছে। এটার맥 OS সংস্করণ, Node সংস্করণ এবং আপনি যে Python সংস্করণ ব্যবহার করছেন তার মধ্যে সামঞ্জস্যের সাথে সম্পর্কিত। কিছু ব্যবহারকারী পেয়েছেন যে পুরনো Python সংস্করণ, যেমন v2.7, নতুনদের চেয়ে অধিক স্থিতিশীল। ভিন্ন সংস্করণের সাথে পরীক্ষা করুন এবং দেখুন কোনটি আপনার জন্য কাজ করে।
সারসংক্ষেপ
Mac-এ node-gyp রিবিল্ড ব্যর্থতা পাওয়া একটি জঞ্জাল এবং কী ভুল হয়েছে তা বুঝতে সময় নষ্ট হয়। তাই আপনি যদি এই ত্রুটির সম্মুখীন হন, তবে উপরের গাইডটি রেফার করুন যাতে আপনি জানেন কীভাবে এই ত্রুটি ঠিক করতে হবে।