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

মাউন্ট করা ডিরেক্টরি ওয়ার্কস্পেস নয়

SSH বা SMB-এর মাধ্যমে মাউন্ট করলে আপনি একটি পাথ পান। কম্পাইলার, বিল্ড সিস্টেম ও ডিবাগার দূরের দিক থেকে আসবে কি না, তা নির্ভর করে এডিটর তাদের কোথায় চালানোর সিদ্ধান্ত নেয় তার ওপর। অনেক সেটআপ দূরের ফাইল পড়ে সেগুলো স্থানীয়ভাবে কম্পাইল করে, তারপর এমন হেডার ফাইলে ব্যর্থ হয় যা কেবল সার্ভারেই আছে।

লক্ষণটি সূক্ষ্ম: বিল্ড আংশিক ফলাফল নিয়ে সফল হয়, বা এডিটরে সঠিক দেখানো একটি ইনক্লুড পাথে ভেঙে পড়ে।

কোন হোস্ট উত্তর দেয় তা প্রমাণ করুন

মাউন্টের বদলে সত্যিকারের দূরবর্তী সেশন দিয়ে সংযোগ করুন, তারপর সেই সেশন যে টার্মিনাল দেয় সেখানে তিনটি শুধু-পড়ার কমান্ড চালান। VS Code-এর SSH গাইড লেখে যে সংযুক্ত দূরবর্তী উইন্ডোর টার্মিনাল দূরের হোস্টে চলে, এবং একই সেশনেই ডিবাগিং চলে। সংস্থা দূরের উপাদান নিষিদ্ধ করলে আগে সেগুলোর অনুমোদন নিন।

hostname যে মেশিনে আছেন তার নাম বলে, pwd দেখায় ওয়ার্কস্পেস আসলে কোথায় আছে, আর command -v c++ শেল যে কম্পাইলার চালাত তা ছাপে। তিনটি উত্তরই ল্যাপটপ নয়, সার্ভারের কথা বলা উচিত।

এরা প্রমাণ করে না যে সংস্করণ বা বিল্ড কনফিগারেশন ঠিক আছে। সেটি আলাদা ধাপ হিসেবে প্রকল্পের নিজের নির্দেশনার সঙ্গে মিলিয়ে দেখুন।

একটি সম্পাদনা বিল্ড ও ডিবাগের মধ্য দিয়ে অনুসরণ করুন

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

ডিবাগ টার্গেট আপনার স্থানীয় হোম ডিরেক্টরি দিয়ে শুরু হওয়া পাথ দেখালে, লঞ্চ কনফিগারেশন এখনো স্থানীয়ভাবে ভাবছে।

নেটওয়ার্ক নির্ভরতা হোস্টের কাছেই থাকে

বিল্ড হোস্টে শুরু করা প্যাকেজ ফেচ, git অপারেশন বা টেস্ট রান সেই হোস্টের নেটওয়ার্ক ও ক্রেডেনশিয়াল ব্যবহার করে, আপনার ল্যাপটপের VPN সেশন নয়। ল্যাপটপ একটি ব্যক্তিগত প্যাকেজ মিরর পর্যন্ত পৌঁছায় বলে সার্ভারও পারবে, এমন কিছু বোঝায় না। বিল্ডের রেজিস্ট্রি দরকার হলে সার্ভারের সেখানে রুট দরকার, আর এটি এডিটর সেটিং নয়, ফায়ারওয়াল আলোচনা।

উল্টো দিকেও একই কথা টেস্ট অ্যাপ্লিকেশনের জন্য প্রযোজ্য। ব্রাউজার থেকে সার্ভারের কোনো সার্ভিসে পৌঁছানো আলাদা সংযোগ, যার জন্য অনুমোদিত ব্যক্তিগত পাথ বা সীমিত ফরওয়ার্ড দরকার, খোলা লিসেনার নয়।

কাজ না হারিয়ে সংযোগ বিচ্ছিন্ন করুন

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

শ্রমবিভাজন তখন স্পষ্ট: ল্যাপটপ একটি ইন্টারফেস, সার্ভার ওয়ার্কস্পেস ও টুলচেইনের মালিক, আর VPN রুট দেয়। ফাইল সরানো আর বিল্ড সরানো দুটি আলাদা সিদ্ধান্ত।

সম্পর্কিত নিবন্ধ