সহজ উবুন্টু শিক্ষাঃ উবুন্টুর ফাইল স্ট্রাকচারের অ আ ক খ

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

  • হালকা পাতলা বেসিকঃ

ফাইল হায়ারার্কি বা ডিরেক্টরির বেসিক দিয়েই শুরু করি। উইন্ডোজে ডিরেক্টরিগুলোকে ব্যাকস্ল্যাশ (\) দিয়ে লেখা হয় যেখানে উবুন্টুতে লেখা হয় স্ল্যাশ (/) দিয়ে। ধরুন আপনি Bangladesh ফোল্ডারের ভেতর রাখা Dhaka ফোল্ডারের Munsigonj ফাইলটিতে যাবেন। এই পুরো ব্যাপারটাকে উইন্ডোজে লেখা হয় নিচের মত করে:

Bangladesh\Dhaka\Munsigonj

ঠিক একই জিনিস উবুন্টুতে লেখা হয় নিচের মত করে:

Bangladesh/Dhaka/Munsigonj

অর্থাৎ স্ল্যাশ আর ব্যাকস্ল্যাশের পার্থক্য। উপরের উদাহরণে ফাইলগুলেকে গাছের শিকড়ের সাথে তুলনা করলে এর মূল বা গোড়া বা রুট হচ্ছে Bangladesh, এর ভেতরে অন্যান্য ফাইলগুলো রয়েছে। গোড়া বা রুট Bangladesh থেকেই যাত্রা শুরু করে অন্যান্য ফাইলে যেতে হবে। অর্থাৎ সহজ কথায়, ব্যাপারটাকে নিচের ছবির মত বলা যায়:

উপরের এই ছবিটিকেই বলা হয় ফাইল হায়ারার্কি। ফাইল হায়ারার্কি থেকেই বোঝা যায় কোন ফাইলের অবস্থান কোথায়। যেমন এথেকে বোঝা যায় যে Munsigonj ডিরেক্টরিতে যেতে কোন পথে যেতে হবে। একে তাই ডিরেক্টরি এড্রেস ও বলা হয়।

  • উইন্ডোজ বনাম উবুন্টুঃ

ধরুন উইন্ডোজে ফায়ারফক্স চালু করবেন আপনি। তো কি করবেন? প্রথমেই Start মেন্যু থেকে My Computer এ যাবেন, তারপর C: ড্রাইভে গিয়ে Program Files এ ঢুকে Mozilla Firefox ফোল্ডার থেকে firefox ফাইলটা ডাবল ক্লিক করে ওপেন করবেন। পুরো ব্যাপারটাকে নীচের মত করে লেখা যায়:

C:\\Program Files\Mozilla Firefox\firefox

আপাত দেখে মনে হতে পারে যে মূল বা রুট হওয়া উচিত My Computer যেহেতু ওখান থেকেই সব ড্রাইভে যাওয়া যাচ্ছে। আসলে ব্যাপার সেটা না, My Computer হচ্ছে একটা শর্টকাট যেটা আপনাকে এক লাফে বিভিন্ন পার্টিশন ও ডিভাইস যেখানে আছে সেখানে নিয়ে আসবে। তাই উপরের লাইন অনুসারে উইন্ডোজের রুট C: হবার কথা। এখন প্রশ্ন আসতে পারে যদি আরো পার্টিশন থঅকে অর্থাৎ D: E: এসব ড্রাইভও থাকে তাহলে কি হবে? সহজভাবে বললে বলা যায় যে প্রতিটার জন্য আলাদা আলাদা রুট থাকবে। অর্থাৎ উইন্ডোজে ফাইলগুলো পার্টিশনের সংখ্যানুযায়ী অনেক গাছে বিভক্ত থাকতে পারে, প্রতিটা গাছের রুট আবার ভিন্ন।

আর উবুন্টুতে ফায়ারফক্স ওপেন করতে হলে যেটা করতে হবে সেটা হল উপরের প্যানেলের Places মেন্যু থেকে Computer এ গিয়ে Filesystem এ ঢুকে usr ফোল্ডারে অবস্থিত lib ফোল্ডারে গিয়ে firefox-3.5.9 ফোল্ডারের firefox এ ডাবল ক্লিক করতে হবে। উবুন্টুর পুরো ব্যাপারটাকে সাজানো যায় নিচের মত করে করে:

/usr/lib/firefox-3.5.9/firefox

এখানে ও Computer আসলে একটা শর্টকাট হিসেবে কাজ করছে, যা কিনা ব্যবহারকারীকে রুটের কাছে নিয়ে আসতে সাহায্য করে। তাহলে রুট কই? Filesystem নামে যে ড্রাইভটা দেখা যায় সেটাই আসলে রুট হিসেবে কাজ করছে এখানে। উপরের ডিরেক্টরির এড্রেসে যে একদম শুরুতেই usr এর আগে যে স্ল্যাশ (/) দেখা যাচ্ছে সেটা দিয়েই রুট বোঝানো হচ্ছে। অর্থাৎ “/usr/lib” মানে হচ্ছে “রুটের মধ্যে usr নামে ফোল্ডার আছে, তার ভেতরে রয়েছে lib ফোল্ডার”। লিনাক্সে রুট একটাই থাকে।

তারমানে আপনি যখন Filesystem এ আসেন তখন আসলে আপনি উবুন্টুর রুটে চলে আসেন। এই রুটের মধ্যেই সিস্টেম ফাইল থেকে শুরু করে ব্যবহারকারীর ব্যাক্তিগত ফাইল অর্থাৎ উবুন্টুর সব কিছু থাকে। রুটে গেলে অনেকগুলো ফোল্ডার দেখবেন। নিচে সেই ফোল্ডারগুলোর একটা হায়ারার্কি দেয়া হল:

  • রুট এবং এর ডিরেক্টরিগুলোঃ

উবুন্টুর (এবং লিনাক্সের) সব ফোল্ডার আর ফাইলের গোড়া হচ্ছে রুট (root)। রুট থেকেই সব ফাইলে বা ফোল্ডারে যেতে হয়। সাধারণত উইন্ডোজের C: ড্রাইভে গেলে বড়জোর চার পাঁচটা ফোল্ডার দেখা যায় যেখানে উবুন্টুতে রুটের ভেতর একগাদা ফোল্ডার দেখা যায়। উইন্ডোজের C: ড্রাইভে যেমন Program Files আর Windows ডিরেক্টরি দুটোর কাজ ভিন্ন তেমনি উবুন্টুতেও রুটের ভেতর থাকা এত্তোগুলো ডিরেক্টরির (ফোল্ডার) কাজও কিন্তু ভিন্ন ভিন্ন। আসুন তাহলে দেখে নিই কোনটার কি কাজ:

/bin

এখানে লিনাক্সের মূল কমান্ডগুলো (বিশেষ করে টার্মিনালের কমান্ডগুলো) থাকে, যেগুলো সকল লিনাক্স ডিস্ট্রোতে তো একই, বরং অন্যান্য POSIX ওএসেও (যেমন: সোলারিস, বিএসডি, প্রভৃতি) একই।

/boot

এখানে থাকে কম্পিউটার কীভাবে লিনাক্সকে বুট করবে সে সম্পর্কিত ফাইল/ফোল্ডার।

/cdrom

এখানে আপনার সিডি/ডিভিডি ড্রাইভে প্রবেশ করানো ডিস্কটির সমস্ত ফাইলে এ্যাক্সেস করতে পারবেন।

/dev

এখানে থাকে ডিভাইস ফাইলসমূহ। মানে এটাকে হার্ডওয়্যার ড্রাইভার গুদামও বলা যায়।

/etc

এখানে থাকে বিভিন্ন এপ্লিকেশনের কনফিগারেশন ফাইলসমূহ। এটাকে উইন্ডোজ রেজিস্ট্রির সাথে তুলনা করা যায়।

/home

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

/lib

এখানে থাকে সফটওয়্যার চালানোর জন্য বিভিন্ন লাইব্রেরি। এটাকে উইন্ডোজের ডিএলএল ফাইলের ভাণ্ডার বলা যেতে পারে।

/lost+found

এ ফোল্ডারে হারিয়ে যাওয়া ফাইল থাকে। কোন কারণে যদি সিস্টেম ফেইল করে বা ফাইল সেভ করতে না পারে। পরবর্তী বুটের সময় সেটা রিকভারের চেষ্টা করা হয়। সেই সময়ে কিছু পেলে এই ফোল্ডারে সেগুলো রাখা হয়।

/media

উবুন্তুতে এক্সটার্নাল সকল ডিভাইস এই ফোল্ডারে মাউন্ট হয়। তবে হার্ডডিস্কে একাধিক পার্টিশন থাকলে সেগুলোও এখানে মাউন্ট হয়। সাধারণত ইনস্টলের সময় যদি পার্টিশনগুলো থাকে উবুন্তু স্বয়ংক্রিয়ভাবে সেগুলো এখানে মাউন্ট করে এবং Places ও ডেস্কটপে শর্টকাট আইকনও তৈরী করে। অন্যান্য প্লাগ এন প্লে ডিভাইস অটোমাউন্ট হয় এবং যথারীতি আইকন দেখায়।

/mnt

এটা আগে /media র কাজ করত। অন্যান্য লিনাক্সে এখনও করে। তবে উবুন্তু এখানে কিছু করে না। /mnt -র চাইতে /media টা বেশি ভালো শোনা, তাই না?

/opt

এখানে অনেক ইনস্টলার প্রোগ্রাম ইনস্টল করে।

/proc

এখানে কিছু ডাইন্যামিক ফাইল থাকে। যা হার্ডওয়্যার সম্পর্কে তথ্য প্রদান করে। প্রোগ্রামারদের জীবন সহজ করার জন্য এখানে বেশ সহজ কিছু ফাইল পাওয়া যায়। যা পড়তে গেলে ডাইন্যামিক্যালি হার্ডওয়্যার ডাটা দেখায়। যেমন – নিচের কমান্ডটা প্রসেসরের ইনফরমেশন দেখাবে।

cat /proc/cpuinfo

/root

লিনাক্সে একজন সর্বময় ক্ষমতার অধিকারী ইউজার থাকে। এই মহামান্য ইউজারের নাম root। এই ইউজার এই কম্পিউটারের যেকোন রকম পরিবর্তন করতে সক্ষম। অর্থাৎ এই কম্পিউটার ধ্বংস করার ক্ষমতাও তার হাতে। সুতরাং উবুন্তুতে এই ইউজারকে অক্ষম করে রাখা হয়েছে। আর এই ফোল্ডারটা তার হোম ফোল্ডার, ঠিক যেমনটা অন্যান্য ইউজারদের জন্য /home/USERNAME

/sbin

bin ফোল্ডারটির মত এখানেও লিনাক্সের মূল কমান্ডগুলো থাকে, বিশেষ করে সুপার ইউজারের কমান্ডগুলো।

/selinux

এ ফোল্ডারে লিনাক্স সিকিউরিটি সিস্টেম selinux এর কনফিগারেশন থাকে। এই selinux সিস্টেমে ইনস্টলকৃত প্রোগ্রামগুলোর পারমিশন, সিকিউরিটি প্রভৃতি ঠিক করে দেয়।

/srv

এ ফোল্ডারটি হচ্ছে ওয়েব সার্ভারের জন্য। অনেকটা /var/www যে কাজ করে সেটাই।

/sys

নামেই বোঝা যাচ্ছে এটা সিস্টেম ফোল্ডার।

/tmp

এখানে সকল প্রকার টেম্পোরারী ফাইল বা ক্যাশ থাকে।

/usr

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

/var

এটাও অনেকটা ক্যাশের মত কাজ করে। তবে এখানে সার্ভারের পাবলিক ফোল্ডারও পাওয়া যায় www তে।

  • কেন এত ফাইল?

আসলেই তো! এত্তো ফাইলের কি দরকার ছিল? কম করে দিলেও হত। আসলে লিনাক্স হচ্ছে খুবই স্ট্রাকচারড একটা সিস্টেম। তাই লিনাক্স বেজড অপারেটিং সিস্টেম হিসেবে উবুন্টুও বেশ স্ট্রাকচার্ড হবে সেটা বলাই বাহূল্য। এই স্ট্রাকচারটিকে সুন্দরভাবে পরিচালনার জন্য এত্তো এত্তো ফাইলের আগমন।

একটা সফটওয়্যার অনেকগুলো ফাইলের সমন্বয়ে তৈরী হয়। কিছু শেয়ারড লাইব্রেরী, স্ট্যাটিক লাইব্রেরী, কনফিগারেশন ফাইল, এক্সিকিউট্যাবল ফাইল, সোর্স ফাইল, হেডার ফাইল প্রভৃতি। লিনাক্সে এসব ফাইলসমূহকে ভিন্ন ভিন্ন ফোল্ডারে রাখা হয়। যেমন – lib, etc, bin, src, include প্রভৃতি।

লিনাক্সের নিজস্ব সিস্টেম প্রোগ্রামগুলো তাদের ফাইলসমূহ / (রুট) ফোল্ডারেই রাখে। অর্থাৎ /lib, /etc, /bin, /sbin এসব ফোল্ডারগুলোতে। এরপর আসে বিভিন্ন এপ্লিকেশন প্রোগ্রাম, যেমনঃ ফায়ারফক্স, ওপেনঅফিস প্রভৃতি। এসব তৃতীয় পক্ষের সফটওয়্যারগুলোর জন্য নির্ধারিত আছে /usr ফোল্ডারটি। অর্থাৎ এর ভেতরেও রয়েছে lib, bin ফোল্ডারসমূহ। যেখানে এপ্লিকেশন প্রোগ্রামগুলোর ফাইলসমূহ থাকে।

এই নিয়মের একটু ব্যতিক্রমও আছে। সেটা হচ্ছে etc, include আর src ফোল্ডারসমূহ। সিস্টেম ও এপ্লিকেশন উভয় প্রকার প্রোগ্রামই এই ফোল্ডারগুলো শেয়ার করে। etc সরাসরি রুট ফোল্ডারে থাকে, include ও src ফোল্ডারগুলো /usr এর ভেতর থাকে।

/usr ফোল্ডারটা ডিস্ট্রো থেকে প্রাপ্ত সফটওয়্যারগুলোর জন্য নির্ধারিত। অর্থাৎ সরাসরি রিপোজিটরি থেকে যেসব সফটওয়্যার আমরা ইনস্টল করি apt বা yum এর মাধ্যমে, তাদের জন্য।

আমরা জানি, সোর্স থেকে কম্পাইল করে আমরা লিনাক্সে প্রোগ্রাম ইনস্টল করতে পারি। যেগুলো ডিস্ট্রোতে নেই। অথবা ডিস্ট্রোর থেকে আলাদা ভার্সন ব্যবহার করতে চাই। এখন এগুলোকে কোথায় ইনস্টল করবো? আমার যেখানে খুশী সেখানে ইনস্টল করতে পারি। তবে এর জন্যও একটা কনভেনশন আছে, মানে একটা জায়গা নির্দিষ্ট করা আছে। সেটা হলো /usr/local/। আমরা যখন কম্পাইল করে কোন প্রোগ্রাম ইনস্টল করতে যাই। সেটা সাধারণত এই ফোল্ডারে ইনস্টল হয়। ফলে এখানে সেই bin, lib ফোল্ডারসমূহ তৈরী হয়। অবশ্য আর একটা জনপ্রিয় জায়গা হচ্ছে /opt, এখানেও অনেক ইনস্টলার প্রোগ্রাম ইনস্টল করে। ফলে এখানেও এরকম স্ট্রাকচার দেখা যাবে।এভাবে লিনাক্সে বিভিন্ন প্রোগ্রামের জন্য ভিন্ন লোকেশন ঠিক করা হয়। এর ফলে একটার সাথে আর একটার যুদ্ধ বাঁধার সম্ভাবনা কমে যায়। আরও লাভ যেটা হয়, সেটা হচ্ছে একই সময়ে একই সফটওয়্যার ভিন্ন ভার্সন ইনস্টল ও ব্যবহার করা যায়।

  • শেষের কথাঃ

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

এই লেখাটার “রুট এবং এর ডিরেক্টরিগুলোঃ” এবং “কেন এত ফাইল?” অংশটুকু নাসিম ভাইয়ের (যিনি বিভিন্ন বাংলা অনলাইন কমিউনিটিতে স্বপ্নচারী নামে সুপরিচিত) লেখা থেকে ধার করেছি। এবং ঐ অংশটুকু ধার দিতে তিনি সানন্দে রাজী হয়েছিলেন বলেই এই লেখাটা পরিপূর্ণতা পেয়েছে। এজন্য নাসিম ভাইকে অশেষ কৃতজ্ঞতা জানাচ্ছি।

Advertisements
Comments
4 Responses to “সহজ উবুন্টু শিক্ষাঃ উবুন্টুর ফাইল স্ট্রাকচারের অ আ ক খ”
  1. Tareq বলেছেন:

    জটিল পুস্ট, ধইন্যাপাতা

  2. samehood বলেছেন:

    জটিল, পুরাই জটিল দাদা। আপনাকে অনেক অনেক ধন্যবাদ। সেই সাথে নাসিম ভাইকেও।

  3. রাহাত বলেছেন:

    উবুন্তু ৯.১০ এ ওয়াইন ইন্সটল করা নিয়া খুব ঝামেলায় পড়ছি…খালি মেসেজ আসে যে প্ল্য্যাটফর্ম সাপোর্ট করে না! যেহেতু নেট নাই…এখন কি করা উচিত?

  4. nasir khan বলেছেন:

    পড়ে ভালো লাগলো 🙂

মন্তব্য করুন

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / পরিবর্তন )

Twitter picture

You are commenting using your Twitter account. Log Out / পরিবর্তন )

Facebook photo

You are commenting using your Facebook account. Log Out / পরিবর্তন )

Google+ photo

You are commenting using your Google+ account. Log Out / পরিবর্তন )

Connecting to %s

%d bloggers like this: