Debian

Thursday, March 04, 2010

ডেবিয়ান প্যাকেজ সিস্টেম পরিচালনা/সফটওয়্যার ইনস্টলের কমান্ডসমূহ

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

ডেবিয়ান এবং ডেবিয়ান বেজড ডিস্ট্রো যেমন উবুন্তু, কোরেল ইত্যাদি লিনাক্সগুলিতে কয়েকটি কমান্ড যেমনঃ apt-get, aptitude, dpkg ইত্যাদি প্যাকেজ ইনস্টলের জন্য বহুলভাবে ব্যবহৃত হয়। প্রত্যেকটি কমান্ড এরই বেশ কিছু সুবিধা আছে যা অন্য প্যাকেজ এ নেই। তাই এ তিনটি কমান্ড ই শিখতে হয় প্যাকেজ ইনস্টলের জন্য।

যেমনঃ .deb এক্সটেনশনযুক্ত ফাইল দিয়ে প্যাকেজ ইনস্টলের জন্য আপনাকে dpkg কমান্ড দিতে হবে। আবার সিডি, ডিভিডি বা ডেবিয়ান এর সার্ভার থেকে ইনস্টলের জন্য apt-get এবং aptitude কমান্ড দুটি ব্যবহৃত হয়। কিন্তু এ কমান্ডগুলি কিভাবে খুজে নেয় যে প্যাকেজটি কোথায় আছে? এজন্য একটি টেক্সট ফাইল আছে যার নাম ও পাথ হচ্ছে- /etc/apt/sources.list । এ ফাইলে যে এন্ট্রিগুলি আছে তা থেকেই এ কমান্ডগুলি প্যাকেজ ইনস্টল করে থাকে। তাই প্রথমেই এ ফাইলটি কাস্টমাইজ কিভাবে করা যায় আমরা তা দেখব।
  • বেসিক কনফিগারেশন
/etc/apt/sources.list ফাইলে যে ফরম্যাটে ডাটাগুলি থাকে তা নিম্নরূপঃ

deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3

উপরে যে এন্ট্রিগুলি দেওয়া হয়েছে তা অবশ্যই কাল্পনিক এবং তা ব্যবহারের জন্য নয়-বোঝার জন্য। প্রত্যেকটি লাইনের প্রথম শব্দ deb অথবা deb-src দ্বারা আর্কাইভের প্রকারভেদকে বোঝায়- অর্থাৎ এটি কি বাইনারি প্যাকেজ (deb), যেটি সাধারনত আমরা প্রিকম্পাইল্ড হিসেবে ব্যবহার করে থাকি অথবা সোর্স প্যাকজ (deb-src) কি-না যেটি অরিজিনাল সোর্স ফাইল, ডেবিয়ান কন্ট্রোল ফাইল (.dsc) এবং diff.gz ফাইল থাকে যেখানে প্রোগ্রামটিকে ডেবিয়ান স্ট্যান্ডার্ড করতে কি কি করা দরকার তার লিস্ট থাকে।

আমরা সাধারনত ডেবিয়ান এর sources.list ফাইলে নিচের তথ্য অনুযায়ী পেয়ে থাকিঃ

# See sources.list(5) for more information, especially
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free


এ কয়টি লাইন-ই সাধারনত একটি বেসিক ডেবিয়ান ইনস্টল করার জন্য প্রয়োজন। প্রথম লাইনটি ডেবিয়ান এর অফিসিয়াল আর্কাইভকে-ই নির্দেশ করে থাকে, দ্বিতীয় লাইনটি non-us আর্কাইভকে নির্দেশ করে এবং তৃতীয় লাইনটি ডেবিয়ান সিকিউরিটি আপডেট এর জন্য।

শেষের দুটি লাইনকে উপেক্ষা করার জন্য সামনে একটি # চিহ্ন দেয়া আছে। ফলে apt-get এটিকে কমেন্ট হিসেবে উপেক্ষা করবে। এগুলিই হচ্ছে deb-src লাইনসমূহ যা ডেবিয়ান এর প্যাকেজ সোর্স হিসেবে কাজ করে থাকে। যদি আপনি মাঝে মাঝে প্রোগ্রাম এর মূল সোর্স কোড ডাউনলোড করে থাকেন টেস্টিং এর জন্য বা রি-কম্পাইল করার জন্য তাহলে এগুলিকে আনকমেন্ট করে দিন অর্থাৎ সামনের # চিহ্নটি উঠিয়ে দিন।
যদি নতুন সিডি/ডিভিডি যোগ করতে চান তবে সিডি/ডিভিডি রমে সিডি/ডিভিডি ঢুকিয়ে নিচের কমান্ডটি দিনঃ

apt-cdrom add

এর ফলে নতুন সিডি/ডিভিডি sources.list ফাইলে যোগ হবে।


/etc/apt/sources.list ফাইলটিতে আরো কিছু লাইন থাকতে পারে। APT বিভিন্ন ধরনের আর্কাইভ যথা http, ftp, file (লোকাল ফাইলসমূহ, e.g., একটি ডিরেক্টরী বা ফোল্ডার যেটি ISO9660 টাইপের ফাইলকে মাউন্ট করেছে) এবং ssh নিয়ে কাজ করতে পারে।

/etc/apt/sources.list ফাইল এ পরিবর্তন করার পর apt-get চালাতে যেন ভুলবেন না। এটি অবশ্যই জরুরী কারন যা আপনি নতুন সোর্স হিসেবে দিলেন সেটি থেকে APT কে প্যাকেজ ডাউনলোড করতে সক্ষম করে। অন্যথায় APT আপনার দেয়া তথ্য পাবে না।

যখন আপনি কোন প্যাকেজ বা প্রোগ্রাম ইনস্টল করেন তখন APT যে সমস্ত ফাইলগুলি প্রয়োজন তা /etc/apt/sources.list এ বর্নিত হোস্টগুলি থেকে ডাউনলোড করে তারপর /var/cache/apt/archives/ এ সেভ করে থাকে এবং সবশেষে ইনস্টলেশন প্রক্রিয়া শুরু করে।
প্রধান প্যাকেজ ম্যানেজমেন্ট টুলসমূহঃ ডেবিয়ান এ বেশ কিছু প্যাকেজ ম্যানেজমেন্ট টুলস ব্যবহার করা হয়।

প্রধান প্রধান টুলসগুলি হচ্ছেঃ

dpkg – ডেবিয়ান প্যাকেজ ফাইল ইনস্টলার
apt-get – APT এর জন্য কমান্ড লাইন ইন্টারফেস
aptitude – APT এর জন্য এ্যাডভ্যান্সড টেক্সট এবং কমান্ড লাইন বেসড ইন্টারফেস
synaptic – APT এর জন্য Gtk GUI বেসড ইন্টারফেস
dselect – মেনুভিত্তিক প্যাকেজ ম্যানেজার
tasksel – টাস্ক ইনস্টলার
  • apt দ্বারা সফটওয়্যার ইনস্টলের জন্য কমান্ড
#apt-get install software

-h সাহায্য দেখার জন্য
-d শুধুমাত্র ডাউনলোড এর জন্য- ইনস্টল বা আর্কাইভ খোলার জন্য নয়
-f যদি ইনটেগ্রিটি ফেইল করে তারপর চালানোর জন্য
-s শুধুমাত্র সিমুলেশন এর জন্য। কোন প্যাকেজ ইনস্টল হবে না।
-y সব অপশনের ইয়েস সিলেক্ট করবে অটোমেটিক এবং কোন প্রম্পট দেখাবে না
-u সমস্ত আপগ্রেডেড প্যাকেজসমূহ দেখার জন্য
যদি কোন ইনস্টলকৃত প্রোগ্রাম নষ্ট হয়ে যায় অথবা যদি আপনি কোন সফটওয়্যার এর নতুন ভার্সন ইনস্টল করতে চান পুরনোটি বাদ দিয়ে তাহলে আপনি --reinstall কমান্ডটি ব্যবহার করতে পারেন নিচের মতঃ

# apt-get --reinstall install packagename

আপনার sources.list ফাইল এর প্যাকেজসমূহ এর লিস্ট নবায়ন করতে নিচের কমান্ডটি দিনঃ
#apt-get update

apt এর সাহায্যে সফটওয়্যার আপডেট করার জন্য নিচের কমান্ডঃ
#apt-get -u upgrade

apt এর মিরর লিস্ট সমূহ পরিবর্তন করার কমান্ড
#apt-setup

প্যাকেজ বা প্রোগ্রাম খুজতে হলে কমান্ড
#apt-cache search package

apt দিয়ে প্রোগ্রাম আনইনস্টল করার কমান্ড
#apt-get remove software

  • কিছু শর্টকার্ট কমান্ড
প্যাকেজ লিস্ট আপডেট করার কমান্ড
# apt-get update

বর্তমান লভ্য প্যাকেজ লিস্ট আপডেট করুন
# dselect update

ইনস্টলকৃত প্যাকেজ আপডেট করুন
# apt-get upgrade

প্যাকেজ ইনস্টল এর কমান্ড
# apt-get install pkg

প্যাকেজ আনইনস্টল করুন
# apt-get remove pkg

সমস্ত ইনস্টলকৃত এবং রিমুভকৃত প্রোগ্রাম দেখার জন্য
#dpkg -l

প্যাকেজ এর ইনস্টল স্ট্যাটাস দেখুন
#dpkg -l pkg

সমস্ত প্যাকেজ দেখুন যেগুলি প্যাটার্ন এর সাথে মিলে যায়
#dpkg -S pattern

প্যাকেজ লিস্ট দেখার জন্য যে অক্ষরগুলির সাথে মিলে
#dpkg

প্যাকেজ এ যে সমস্ত ফাইল আছে তার লিস্ট দেখার জন্য
#dpkg -L pkg

প্যাকেজ এর বর্তমান স্ট্যাটাস দেখার জন্য
#dpkg -s pkg
প্যাজেক এর বিস্তারিত দেখার জন্য
#dpkg -p pkg

প্রাসঙ্গিক প্যাকেজ লিস্ট দেখার জন্য
#apt-cache search string

ডেব ফাইল থেকে প্যাকেজ ইনস্টল করার জন্য
# dpkg -i file.deb

প্যাকেজ শুদ্ধিকরন করা
# dpkg -P pkg

একটি প্যাকেজকে পুনরায় কনফিগার করার জন্য
# dpkg-reconfigure pkg

প্যাকেজ এর সোর্স কোড পাওয়ার জন্য
# apt-get source pkg

build-deps কনফিগার করুন সোর্স এর জন্য এবং যেমন প্রয়োজন ইনস্টল করুন
# apt-get build-dep

কোন বিশেষ রিলিজড ভার্সন ইনস্টল করুন
# apt-get -t release install pkg

bootup এর সময় রান হওয়া বন্ধ করার জন্য
# update-rc.d -f name remove

ডিস্ট্রিবিউশন আপগ্রেড করুন
# apt-get –u dist-upgrade

  • কি করে জানতে হবে যে কোন কোন প্যাকেজ সমূহ আপগ্রেড করা প্রয়োজন
apt-show-versions এমন একটি প্রোগ্রাম যার সাহায্যে সিস্টেম এ কোন কোন প্রোগ্রাম আপডেট করা প্রয়োজন তা দেখা যায় এবং আরো বেশ কিছু দরকারী তথ্য ও দেখা যায়।

-u অপশনটি যে সমস্ত প্যাকেজ আপগ্রেড করা সম্ভব তার লিস্ট দেখিয়ে থাকে যার কমান্ডটি হচ্ছে নিম্নরূপঃ
# apt-show-versions -u
APT অর্থাৎ এ্যাডভান্সড প্যাকেজ টুল এর টেক্সট মোডের ক্ষেত্রে পছন্দনীয় কমান্ড হচ্ছে aptitude। এটি আপনি কোন প্যাকেজগুলি ইচ্ছানুযায়ী ইনস্টল করেছেন এবং কোন প্যাকেজগুলি ডিপেনডেন্সী হিসেবে ডাউনলোড করেছেন তা মনে রাখে। ডিপেনডেন্সী প্যাকেজগুলি স্বয়ংক্রিয়ভাবে সে আনইনস্টল করে যখন এগুলি আর কোন প্যাকেজ কর্তৃক প্রয়োজন হয় না। এটির আরো উন্নত ধরনের প্যাকেজ ফিল্টারিং সিস্টেম রয়েছে তবে সেটি কনফিগার করাটা কিছুটা কঠিন মনে হতে পারে।

aptitude update: বর্তমান এ সহজলভ্য প্যাকেজসমূহের লিস্ট আপডেট করে থাকে (পূর্বের কমান্ড apt-get update.)

aptitude upgrade: সহজলভ্য প্যাকেজসমূহকে আপগ্রেড করে থাকে (পূর্বের কমান্ড apt-get upgrade).

aptitude dist-upgrade: আপগ্রেড করার জন্য বিভিন্ন কম্পোনেন্টস মুছে ফেলার দরকার হলেও করবে (পূর্বের কমান্ড apt-get dist-upgrade).

aptitude install pkgname: প্যাকেজ ইনস্টলের কমান্ড (পূর্বের কমান্ড apt-get install).

aptitude remove pkgname: প্যাকেজ আনইনস্টলের কমান্ড (পূর্বের কমান্ড apt-get remove).

aptitude purge pkgname: প্যাকেজ এবং কনফিগ ফাইল সবকিছু রিমুভ করবে (পূর্বের কমান্ড apt-get –purge remove).

aptitude search string: প্যাকেজ সার্চের কমান্ড - “string” সম্বলিত নাম অথবা বর্ননা রয়েছে এমন প্যাকেজ খুজে বের করে (পূর্বের কমান্ড apt-cache search string).

aptitude show pkgname: একটি প্যাকেজের বিস্তারিত দেখার জন্য(পূর্বের কমান্ড apt-cache show pkgname).

aptitude clean: ডাউনলোডকৃত প্যাকেজ ফাইল মুছে ফেলার জন্য (পূর্বের কমান্ড apt-get clean).

aptitude autoclean: বর্তমান প্রচলিত ভার্সনগুলি রেখে অপ্রচলিত প্যাকেজ ফাইলগুলি মুছে ফেলবে (পূর্বের কমান্ড apt-get autoclean).

aptitude hold pkgname: একটি প্যাকেজকে তার ভার্সনেই অক্ষুন্ন রেখে সমস্যাগুলি ঠিক করবে এবং স্বয়ংক্রিয়ভাবে আপডেট করবে না (পূর্বের কমান্ড an obscure echo-to-file command). unhold ব্যবহার করুন যেটি hold আছে সেটিকে unhold করতে।

  • একটি কার্যকরী sources.list
একটি জাকালো পদক্ষেপই খুব ভালো মানের একটি sources.list ফাইল তৈরীর জন্য যথেষ্ট নয়। বরং আপনার সবচেয়ে নিকটে অবস্থিত এমন কোন সাইট পছন্দ করাই সব থেকে ভাল apt-setup ব্যবহারের মাধ্যম।

apt-spy sources.list স্বয়ংক্রিয়ভাবে তৈরী করে থাকে ব্যান্ডউইথ এবং পর্যাপ্ত সাড়া প্রদানের উপর নির্ভর করে।

netselect-apt আরো পূর্নাঙ্গ sources.list তৈরী করে থাকে, কিন্তু পিং টাইম তুলনা সিস্টেমে তা করে যা মোটেও মানসম্পন্ন কোন পদ্ধতি নয়।

# aptitude install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt


  • dpkg-divert কমান্ড

ফাইল ডাইভারশন পদ্ধতির সাহায্যে একটি ফাইলকে তার ডিফল্ট লোকেশনে ইনস্টল না করে অন্য কোন লোকেশনে ইনস্টল করা যায়। ডেবিয়ান প্যাকেজ স্ক্রিপ্টের সাহায্যে একটি ফাইলকে সরিয়ে নেয়া যায় ডাইভারশন পদ্ধতির সাহায্যে যখন এটি কোনভাবে কনফ্লিক্ট করে থাকে। সিস্টেম অ্যাডমিনিস্ট্রেটরগন ডাইভারশন সিস্টেম ব্যবহারের মাধ্যমে একটি প্যাকেজ এর কনফিগারেশন ফাইলগুলি বদলে দিতে পারেন, অথবা কিছু ফাইলকে যদি dpkg কর্তৃক সংরক্ষিত করা দরকার হয়ে থাকে- একটি নতুন ভার্সনের প্যাকেজ ইনস্টলের সময়ে যখন ঐ প্যাকেজে এ ফাইলগুলি থাকতে পারে।

# dpkg-divert [--add] filename # add "diversion"
# dpkg-divert --remove filename # remove "diversion"


  • যদি dpkg কমান্ড এর কাজ সঠিকভাবে সম্পন্ন না হয় তখন কি করবেন?

একটি অসম্পন্ন dpkg যেকোন .deb ফাইলের ইনস্টলের ক্ষেত্রে প্রতিবন্ধকতা হয়ে দাড়াতে পারে। নিচের বর্নিত পদ্ধতির সাহায্যে আপনি এ সকল অবস্থা থেকে পরিত্রান পেতে পারেন। (প্রথম লাইনে "links" এর জায়গায় আপনার পছন্দের ব্রাউজার কমান্ড এর নাম দিতে পারেন)

$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... download the good dpkg_version_arch.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz

i386 এর জন্য http://packages.debian.org/dpkg লিংকটি URL হিসেবে ব্যবহার করা যেতে পারে।

  • লোকাল প্যাকেজ আর্কাইভ তৈরী করা
APT এবং dselect সিস্টেম এর সাথে সংগতিপূর্ন লোকাল প্যাকেজ আর্কাইভ তৈরী করার জন্য প্রথমেই প্যাকেজগুলিকে তৈরী করতে হবে তারপর সেটি একটি নির্দিষ্ট ডিরেক্টরীতে রাখতে হবে।

নিচের পদ্ধতির সাহায্যে ডেবিয়ান এর অফিসিয়াল আর্কাইভের মত একটি লোকাল ডেব রিপজিটরী তৈরী করা যেতে পারেঃ

# aptitude install dpkg-dev
# cd /usr/local
# install -d pool # ফিজিক্যাল প্যাকেজ সমূহ এখানে অবস্থিত
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # adjust priority and section
# dpkg-scanpackages pool override /usr/local/ \
> dists/unstable/main/binary-i386/Packages
# cat > dists/unstable/main/Release <<>> /etc/apt/sources.list


  • দ্রুত ডেব রিপজিটরী নিচের ভিন্ন পদ্ধতিতেও করা যায়ঃ
# aptitude install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \
gzip - > /usr/local/debian/Packages.gz
# echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list


এ আর্কাইভকে আপনি HTTP বা FTP এর মাধ্যমে দূর থেকে ও ব্যবহার করতে পারবেন তবে সেক্ষেত্রে /etc/apt/sources.list ফাইলে একইসাথে পাথ দেখিয়ে দিতে হবে।

  • auto-apt কমান্ড

auto-apt হচ্ছে একটি চাহিদা মাফিক প্যাকেজ ইনস্টলেশন টুলস।

$ sudo auto-apt update
... update database
$ auto-apt -x -y run
Entering auto-apt mode: /bin/bash
Exit the command to leave auto-apt mode.
$ less /usr/share/doc/med-bio/copyright # access non-existing file
... Install the package which provide this file.
... Also install dependencies

  • প্যাকেজ ম্যানেজমেন্ট এর সাধারন সমস্যাসমূহ

সমস্যা যেকোন সময়ই হতে পারে কিন্তু বেশীরভাগ ক্ষেত্রেই যথাযথ ভাবে ব্যবহারকারীর মনোনিবেশ না করার কারনেই তা হয়ে থাকে। নিচে কিছু সমস্যা যা প্রায়ই ঘটে থাকে তার রিপোর্ট এবং কিভাবে তার সমাধান করতে হবে তা দেয়া হলঃ

apt-get install package কমান্ড দেয়ার সময় যদি আপনি নিচের মত ম্যাসেজ পেয়ে থাকেন

Reading Package Lists... Done
Building Dependency Tree... Done
W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these missing files
E: Couldn't find package penguineyes


তাহলে আপনি apt-get update কমান্ড দিতে ভুলে গিয়েছিলেন /etc/apt/sources.list ফাইলে সর্বশেষ পরিবর্তনের পর।

যদি নিচে মত সমস্যা দেখায়ঃ

E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
when trying any apt-get method other than source, you don't have root permission, that is, you're running as a normal user.


উপরের মত সমস্যা দেখা যায় যদি আপনি apt-get এর দুটো কপি একই সাথে চালাতে যান অথবা এমনকি যদি dpkg প্রসেস চালু থাকা অবস্থায় apt-get চালাতে যান । একমাত্র সোর্স মেথড ই একসাথে একের অধিক চলতে পারে অন্যগুলি নয়।

যদি কোন প্রসেস হঠাৎ করেই বন্ধ হয়ে যায় এবং যদি দেখেন যে প্যাকেজটিকে ইনস্টল বা রিমুভ কোনটিই করা যাচ্ছে না তখন নিচের দুটি কমান্ড ব্যবহার করে চেষ্টা করতে পারেনঃ

# apt-get -f install
# dpkg --configure -a


এবং আবার চেষ্টা করুন। উপরের দ্বিতীয় কমান্ডটি একের অধিকবার রান করা লাগতে পারে। এটি খুব গুরুত্বপূর্ন তাদের জন্য যারা প্রায়ই আনস্ট্যাবল ভার্সন নিয়ে পরীক্ষা নিরীক্ষা করে থাকেন।

যদি আপনি "E: Dynamic MMap ran out of room" এ এররটি পান apt-get update কমান্ড চালানোর সময় তবে নিচের লাইনটি /etc/apt/apt.conf ফাইলে যোগ করুনঃ

APT::Cache-Limit 10000000;

লিনাক্স অপারেটিং সিস্টেম এর প্রাথমিক ধারনা-২

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


লিনাক্স ব্যবহার

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

লিনাক্স দিয়ে আপনি নিচের কাজগুলি করতে পারেনঃ

  • ডেস্কটপ অপারেটিং সিস্টেম হিসেবে সাধারন কাজ যেমনঃ লেখালেখি, হিসাব নিকাশ, ব্রাউজিং, গান শোনা, মুভি দেখা ইত্যাদি
  • এক্সটারনাল(ইন্টারনেট) অথবা ইন্টারনাল (ইন্ট্রানেট) ওয়েব সার্ভার তৈরী করা
  • ইন্টারনাল এবং ইন্টারনেট ইমেইল এর জন্য মেইল সার্ভার তৈরী করা
  • অন্যান্য ইন্টারনেট নির্ভর প্রোগ্রাম সার্ভার যেমনঃ এফটিপি, নিউজ, আইআরসি(চ্যাট) ইত্যাদি স্থাপন
  • দূরবর্তী স্থান থেকে আপনার বাসা অথবা অফিসের কার্যকলাপ পর্যবেক্ষনের জন্য ওয়েব ক্যাম সার্ভার স্থাপন
  • বাসা অথবা অফিসে একটি একক ব্রডব্যান্ড ইন্টারনেট কানেকশনকে সব সিস্টেমে শেয়ারিং এর জন্য প্রক্সি/ন্যাট সার্ভার স্থাপন
  • নেটওয়ার্ক এ ইনকামিং এবং আউটগোয়িং ট্রাফিক কন্ট্রোল এর জন্য প্যাকেট ফিল্টারিং ফায়ারওয়্যাল স্থাপন
  • ফাইল এবং প্রিন্ট শেয়ারিং এর জন্য নোভেল অথবা এনটি/২০০০ এর মত ইন্টারনাল ল্যান সার্ভার তৈরী করা। সাম্বা নামে একটি প্যাকেজ আছে যেটি দিয়ে আপনার লিনাক্স সার্ভারকে নেটওয়ার্কে অবস্থিত উইন্ডোজ ক্লায়েন্টগুলির জন্য এনটি সার্ভার হিসেবে কাজ করানো যায়।
  • ইন্টারনাল ল্যান হোস্ট এবং ইন্টারনেট ডোমেইন নেম বেজড ডিএনএস সার্ভার স্থাপন
  • মাইএসকিউএল, ওরাকল অথবা পোস্টজিআরই নির্ভর ডাটাবেজ সার্ভার স্থাপন
  • ফ্যাক্স সার্ভার স্থাপন এবং নেটওয়ার্ক এ অবস্থিত সকল ব্যবহারকারীকে মেশিন থেকেই ফ্যাক্স পাঠানোর সুযোগ করে দেয়া যাতে ফ্যাক্স পাঠানোর আগে তা প্রিন্ট করতে না হয়।
  • ৫০০০ ডলার মূল্যের সিসকো রাউটার এর বদলে একটি ফ্রি ল্যান এবং ওয়ান রাউটার স্থাপন করা
  • কেন্দ্রীয়ভাবে নেটওয়ার্ক এবং সিস্টেম এর কার্যাবলী পর্যবেক্ষনের জন্য Syslog সার্ভার স্থাপন করা।
  • IDS (Intrusion Detection Systems) স্থাপনের মাধ্যমে ইন্টারনেট থেকে আগত হ্যাকিং ও বিভিন্ন ধরনের আক্রমন প্রতিহত করা।
ডস সদৃশ শেল স্ক্রিপ্টিং/কমান্ড
ডস এ যেখানে মাত্র একটি-ই ক্যারেক্টার নির্ভর ইন্টারফেস আছে সেখানে লিনাক্স(ইউনিক্স) এ আছে বেশ কয়েকটি । এদেরকে ইন্টারপ্রেটার এর বদলে শেল বলা হয়ে থাকে যদিও তারা ইন্টারপ্রেটার এর কাজই করে থাকে। ইউনিক্স এর মোট ৩টি শেল আছে যথাঃ C, Korn, এবং Bourne।

লিনাক্স এ উপরোক্ত তিনটি শেল এর নিজস্ব ভার্সন ছাড়াও আরো কয়েকটি শেল রয়েছে। "Bash", বা Bourne-Again Shell হচ্ছে বেশীরভাগ লিনাক্সের ডিফল্ট শেল কারন এটিতে Bourne এবং Korn শেলের বেশীর ভাগ ফিচারই রয়েছে।

লিনাক্স/ইউনিক্স শেলগুলির নিজস্ব প্রম্পট রয়েছে। যখন আপনি একটি শেল ওপেন করবেন তখন % অথবা $ এর যেকোন একটি দেখতে পাবেন যেটি শেল এর প্রকারভেদ কে নির্দেশ করে। যখন রুট হিসেবে লগইন করবেন তখন আরো একটি প্রম্পট পাবেন যেটিতে # চিহ্ন দেখা যায়। "root" হচ্ছে লিনাক্স/ইউনিক্স এর সবচেয়ে শক্তিশালী ব্যবহারকারী যেটি খানিকটা উইন্ডোজ এর এ্যাডমিনিস্ট্রেটর একাউন্ট অথবা নোভেল এর সুপারভাইজার এর মত।

ডসে যেভাবে dir এবং copy কমান্ড দেয়া হয় ঠিক একইভাবে লিনাক্সের শেল প্রম্পটে ls এবং cp কমান্ড দেয়া যায়।

উইন্ডোজ ৩.১ অপারেটিং সিস্টেমে যেভাবে ডস বেজড গ্রাফিক্যাল ইউজার ইন্টারফেস(GUI) ছিল একইভাবে লিনাক্সে বেশ কয়েকটি গ্রাফিক্যাল ইন্টারফেস পাওয়া যায়। সবচেয়ে বেশী ব্যবহৃত GUI হচ্ছে নোম/জিনোম (Gnome)। কেডিই(KDE) হচ্ছে আরেকটি জনপ্রিয় গ্রাফিক্যাল ইন্টারফেস। আপনি ব্যবহারের জন্য যেকোন একটি ইনস্টল করতে পারেন আপনার নিজস্ব পছন্দ অনুযায়ী। ইন্টারনেটে লিনাক্সের জন্য কোন প্রোগ্রাম খুজতে গেলে দেখবেন যে, প্রায় প্রোগ্রাম এর নামটি G অথবা K অক্ষর দিয়ে শুরু করা হয়েছে যেমন Gpad - যার অর্থ প্রোগ্রামটি জিনোম ইন্টারফেস এর জন্য তৈরী।

আবার কিছু প্রোগ্রাম দেখতে পাবেন যেগুলির নাম শুরু হয়েছে X দিয়ে যেটি মূলত X11, এক্স উইন্ডোজ অথবা এক্স প্রোগ্রামকে নির্দেশ করে। এর কারন হল লিনাক্স/ইউনিক্স এ গ্রাফিক্যাল ইন্টারফেসটি কিছুটা জটিল প্রসেস এ কাজ করে থাকে। এক্স সার্ভার নামে একটি সফটওয়্যারই মূলত গ্রাফিকস সমূহ তৈরী করে থাকে এবং আরেকটি ভিন্ন ডেস্কটপ ম্যানেজার-(কেডিই/জিনোম)- গ্রাফিক্স কে কিভাবে পর্দায় প্রদর্শন করা হবে তার ব্যবস্থা করে থাকে। এটি এমনভাবে করা হয় যাতে কেন্দ্রীয়ভাবে সার্ভার গ্রাফিক্স তৈরী করতে পারে এবং ভিন্ন ভিন্ন ওয়ার্কস্টেশন তাদের ডেস্কটপ ম্যানেজার সেটিংস কাস্টমাইজ করার মাধ্যমে গ্রাফিক্স কে প্রদর্শন করতে পারে। একটি সাধারন পিসিতে সার্ভার এবং ডেস্কটপ একই মেশিনে রান করে থাকে। যে সমস্ত প্রোগ্রাম গ্রাফিক্যাল ইন্টারফেসের বদলে ক্যারেক্টার নির্ভর শেল ইন্টারফেস এর জন্য তৈরী করা হয় তাদেরকে ‘কনসোল প্রোগ্রাম’ বলা হয়।


কেন শেল কমান্ড জানা জরুরী?

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

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

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


শেল স্ক্রিপ্টিং কি?

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

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

শেল প্রম্পটে যেসব কমান্ড দেয়া যায় সেগুলিকেই একটি শেল স্ক্রিপ্ট ফাইলে লেখা যায় এবং এছাড়া বিভিন্ন কন্ডিশন টেস্ট এবং লজিক ফ্লো কন্ট্রোল এর জন্য কিছু স্ক্রিপ্ট নির্ভর কমান্ড আছে। যখন অন্যান্য অটোমোশন টুলস এর সাথে এগুলি ব্যবহার করবেন তখন অসাধারন কিছু কাজ করা যায় এই শেল স্ক্রিপ্ট ফাইলের মাধ্যমে। আসুন এরকম কয়েকটি কাজ এর বর্ননা দেখে নেয়া যাকঃ
  • cron - একটি নির্দিষ্ট সময় অথবা দিনে কোন শেল স্ক্রিপ্ট এর কমান্ড সমূহ স্বয়ংক্রিয়ভাবে চালানোর জন্য cron শিডিউলার ব্যবহার করা হয়ে থাকে।
  • Perl scripts - একটি শেল স্ক্রিপ্ট এর সাহায্যে কোন পার্ল স্ক্রিপ্ট কে কল করা যায়। পার্ল যদি ও একটি রিপোর্টিং ল্যাঙ্গুয়েজ হিসেবে যাত্রা শুরু করে কিন্তু এটি এখন টেক্সট ফাইলের স্ট্রিং এবং নিউমেরিক্যাল ডাটা নিয়ে কাজ করার জন্য ব্যাপক ক্ষমতাসম্পন্ন।
  • Regular expressions - ব্যবহারকারীর ইনপুট, ইমেইল বার্তা অথবা অন্যান্য কমান্ড এর আউটপুট, স্ক্রিপ্ট অথবা প্রোগ্রাম সমূহের টেক্সট স্ট্রিং নিয়ে কাজ করার (মিল খোজা এবং বদল করা) জন্য রেগুলার এক্সপ্রেশন কমান্ড ব্যবহার করা হয়ে থাকে।
  • Redirection - অন্য কোন ডিভাইস অথবা প্রসেস এ কমান্ড, স্ক্রিপ্ট অথবা প্রোগ্রামের ইনপুট/আউটপুট গুলিকে পাঠানো।
  • Piping - একটি কমান্ড, স্ক্রিপ্ট অথবা প্রোগ্রামের আউটপুটকে অন্য কোন প্রোগ্রামের ইনপুট হিসেবে ব্যবহার করা।
  • Custom programs - কাস্টমাইজ করা কোন কম্পাইলড প্রোগ্রামকে শেল প্রম্পট এর সাহায্যে চালিয়ে কোন সুনির্দিষ্ট কাজ করা। উদাহরনস্বরূপঃ কোন ডাটা ফাইল অথবা হার্ডওয়্যার যেগুলির স্বত্ব সংরক্ষিত তাদের জন্য কোন কমান্ড পরিচালনা করা।

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

বেশীরভাগ প্রোগ্রামসমূহের জন্য অতিরিক্ত কিছু কনফিগারেশন ফাইল থাকে যেগুলি তৈরী করে/কাস্টমাইজ করে ঐ প্রোগ্রাম/কমান্ড এর অটোমোশন ক্ষমতা বাড়ানো যায়। উদাহরনস্বরূপ, আপনি এফটিপি শেল কমান্ড এর জন্য .netrc নামক একটি কনফিগারেশন ফাইল তৈরী করলেন যেখানে এফটিপি সার্ভার এ লগইন করা, সার্ভার এবং ফাইল লোকেশনগুলির অবস্থানের তথ্য এবং সেই সাথে কিছু এফটিপি প্রোগ্রাম এর কমান্ড (যেমন get, put, lcd ইত্যাদি) দেয়া আছে যার সাহায্যে স্বয়ংক্রিয়ভাবে ফাইল ট্রান্সফার করতে পারবেন। এই .netrc ফাইলটি ব্যবহারকারীর হোম ডিরেক্টরীতে ডিফল্টভাবে সংরক্ষিত হয় তাই ফাইলটিতে অবশ্যই রিড একসেস বন্ধ করে দিতে হবে কারন তাতে আপনার লগইন করার পাসওয়ার্ড সংরক্ষিত থাকতে পারে।

একটি শেল স্ক্রিপ্টে iptables এর কমান্ড ব্যবহার করে আপনার লিনাক্স সিস্টেমকে একটি প্রক্সি সার্ভার/ফায়ারওয়াল মেশিন এ পরিনত করতে পারেন। এখানে মাত্র কয়েকটি উদাহরন দিয়েছি - এরকম অসংখ্য কাজ স্ক্রিপ্ট এর মাধ্যমে করা সম্ভব।

লিনাক্স অপারেটিং সিস্টেম এর প্রাথমিক ধারনা-১

অনেকে লিনাক্সকে জটিল মনে করে এড়িয়ে চলেন কিন্তু এ জটিলতাই অপারেটিং সিস্টেমটিকে দারুন একটি সিস্টেমে পরিনত করেছে তারপরও কোন জটিল বিষয়কে যদি ছোট ছোট অংশে বিভক্ত করে বিশ্লেষন করা যায় তাহলে সেটি সহজ একটি বিষয়ে পরিনত হয়

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

সাধারনতা = সীমাবদ্ধতা
জটিলতা = সক্ষমতা
এটি প্রায় সকল ক্ষেত্রেই প্রযোজ্য একটি সাধারন অডিও সিস্টেম তা যতই সহজভাবে পরিচালনা করা যাক না কেন একটি ১৫-ব্যান্ড ইকুয়ালাইজার এর মত মানসম্পন্ন কোয়ালিটি আউটপুট দিতে সক্ষম হবে না উইন্ডোজ সার্ভার ওএস শেখা অনেক সহজ মনে হতে পারে তবে আপনাকে প্রতিটি কাজ নিজ হাতে ইনপুট প্রদানের মাধ্যমেই সম্পন্ন করতে হবে এবং স্বয়ংক্রিয় সিস্টেম তৈরী করার ক্ষমতা হ্রাস করেই তা করতে হবে অটোমেশন যা কম্পিউটারকে নিজে নিজেই কাজ করতে সক্ষম করে তোলে সেটিই সত্যিকারের প্রোডাক্টিভিটি আনতে সক্ষম এবং একটি প্রতিষ্ঠানের তুলনামুলক সুবিধাকে বাড়িয়ে খরচ কমাতে ভূমিকা রাখে

লিনাক্স অনেক বেশী হার্ডওয়্যার প্লাটফরম সাপোর্ট করে থাকে এবং ডেবিয়ান লিনাক্স তার মধ্যে অন্যতম যেটি বিভিন্ন প্লাটফর্ম সাপোর্ট এর জন্য ভিন্ন ভিন্ন ডিস্ক সেট অফার করে থাকে এজন্যই ডেবিয়ান এর সিডি/ডিভিডি-তে ভিন্ন ভিন্ন প্লাটফরমের জন্য ভিন্ন ভিন্ন প্রতীক ব্যবহার করে থাকে যেমন - ইন্টেল প্রসেসর এর জন্য 'i386' , পুরাতন ম্যাক কম্পিউটারের জন্য 'PPC' , সান সিস্টেমের জন্য 'Sparc' এবং এমন কি আইবিএম মেইনফ্রেম কম্পিউটারের জন্য ও রয়েছে 's390' এছাড়া পুরো অপারেটিং সিস্টেম এবং এর সাথে যত প্রোগ্রাম ও ব্যবহারিক প্রোগ্রাম রয়েছে সেগুলির সোর্স কোড সম্বলিত সোর্স ডিস্ক ও পাওয়া যায় আলাদাভাবে যদি আপনার সি প্রোগ্রামিং জানা থাকে (অথবা যদি সি তে প্রোগ্রামিং শিখতে চান) তাহলে এগুলি আপনার-ই জন্য এবং ডেবিয়ান অপারেটিং সিস্টেম ও এর সাথে যত ধরনের প্রোগ্রাম পাওয়া যায় সবকিছুর সোর্স কোড দেখতে চাইলে দেখতে পারবেন যদি ডেবিয়ানকে স্ট্যান্ডার্ড ইন্টেল/এএমডি/সাইরিক্স এর পিসিতে ইনস্টল করেন তবে 'i386' ডিস্ক সেট প্রয়োজন হবে

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

যদিও অনেকে লিনাক্স বলতে পুরো অপারেটিং সিস্টেমকেই বুঝে থাকেন কিন্তু কারিগরি দিক থেকে দেখলে লিনাক্স হচ্ছে মূল কার্নেল যার উপর ভিত্তি করে অন্যান্য ফ্রি জিএনইউ প্রোগ্রামসমূহ যেমনঃ গ্রাফিক্যাল ইন্টারফেস, কমান্ড লাইন প্রোগ্রাম ইত্যাদি কাজ করে থাকে এজন্যই ডেবিয়ান কে অফিসিয়ালি “ডেবিয়ান জিএনইউ/লিনাক্স” নামে অভিহিত করা হয়ে থাকে

যদি কোন কোম্পানি সাধারন কোন জিএনইউ প্রোগ্রামকে কাস্টমাইজ করে তার নিজস্ব কোন ভার্সনকে ব্যবহার করা শুরু করে তখন এটি আর ফ্রি থাকে না বরং স্বত্বাধিকার স্বত্ব আরোপিত হয়ে যায় এখানেই ডিস্ট্রিবিউশন নির্ভর সমস্যার উৎপত্তি যার ফলস্বরূপ আপগ্রেড/সাপোর্ট পাওয়ার জন্য অন্যের উপর নির্ভর করতে হয়

রেড হ্যাট কোম্পানি এ ধরনের বিভিন্ন স্ট্যান্ডার্ড জিএনইউ ইউনিক্স লিনাক্স কমান্ডগুলোর বদলে তাদের নিজস্ব স্বত্বাধিকার নির্ভর নন-স্ট্যান্ডার্ড টুলস/কমান্ড ব্যবহার করার জন্য প্রসিদ্ধ(!) ফলস্বরূপ ওয়েব এবং অন্যান্য জায়গায় লিনাক্স এর যে সমস্ত বই/রেফারেন্স ফ্রি পাওয়া যায় সেগুলির সাহায্য নিয়ে রেডহ্যাট লিনাক্স সিস্টেমে কাজ করা যায় না এমনকি রেডহ্যাট এর আগের ভার্সনগুলির উপরে লেখা বই ও কোন কোন ক্ষেত্রে বর্তমান ভার্সনে কাজে লাগে না কারন প্রতি নতুন ভার্সনে তাদের কমান্ড প্রায়ই পরির্বতিত হয় এ রকম চলতে থাকলে আগামী কয়েক বছর পর রেড হ্যাট কে আদৌ লিনাক্স বলে মনে হবে কিনা তা বলা সত্যিই কঠিন

ডিস্ট্রিবিউশনগুলিতে কনফিগারেশন ফাইলগুলি কিছুটা ভিন্ন জায়গায় এবং ভিন্ন নামে থাকতে পারে উদাহরনস্বরূপ, নেটওয়ার্ক ইন্টারফেস কনফিগারেশন (NIC)-

Debian - /etc/network/interfaces
Red Hat - /etc/sysconfig/network-scripts/ifcfg-eth0
(A separate file for each interface)
Suse - For versions >= 8.0
/etc/sysconfig/network/ifcfg-eth0
(A separate file for each interface)
For versions <>

লিনাক্স কি, ডেবিয়ান লিনাক্স এর ইতিকথা

লিনাক্স কি?

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

লিনাক্সের গঠন কাঠামো


লিনাক্স এর গঠনকাঠামোতে চারটি প্রধান উপাদান বিদ্যমানঃ
  • লিনাক্স কার্নেল অংশ
  • ফাইলের গঠন কাঠামো
  • একের অধিক ব্যবহারকারী ধারনা
  • এবং গ্রাফিক্যাল ইউজার ইন্টারফেস ব্যবস্থা
ডেবিয়ান লিনাক্স এর সংক্ষিপ্ত ইতিহাস
ছবি
ডেবিয়ান লিনাক্স ১৯৯৩ সনে পারদিউ বিশ্ববিদ্যালয়ের ছাত্র আয়ান মারডক কর্তৃক প্রতিষ্ঠিত হয় যিনি ডেবিয়ান মেনিফেস্টোর প্রবর্তক। এ মেনিফেস্টোর মূল ভাবধারা ছিল এটি হবে এমন একটি অপারেটিং সিস্টেম যা উম্মুক্ত পদ্ধতির ব্যবস্থাপনায় পরিচালিত হবে যেটি মূলত লিনাক্স এবং জিএনইউ এরই মূল স্পিরিট। তিনি নামটি প্রবর্তন করে তার মেয়েবন্ধু ডেবরা(পরবর্তীকালে স্ত্রী) এর নাম এবং তার নামের প্রথম অংশের সমন্বয়ে যার উচ্চারন হল ডেব-ই-এন।

ডেবিয়ান প্রকল্পটি প্রথমদিকে খুব ধীরগতিতে অগ্রসর হতে থাকে এবং সর্বপ্রথম ভার্সন ০.৯এক্স ভার্সন বের হয় ১৯৯৪ এবং ১৯৯৫ সালের দিকে। অন্য আর্কিটেকচারের জন্য রিলিজ দেয়া শুরু হয় ১৯৯৫ সালেই এবং ১৯৯৬ সালে ১.এক্স ভার্সন রিলিজ পায়। ১৯৯৬ সালে ব্রুস পেরেনস আয়ান মারডকের স্থালাভিষিক্ত হন প্রোজেক্ট লিডার হিসেবে। সহযোগী ইয়ান শুয়েজলার এর পরামর্শক্রমে তিনি ডেবিয়ান এর সামাজিক চুক্তির রূপরেখা এবং ডেবিয়ান উম্মুক্ত সফটওয়্যার নির্দেশনা প্রনয়নে বিশেষ ভূমিকা রাখেন যা ডিস্ট্রিবিউশনটির উন্নয়নে নতুন এক মৌলিক অঙ্গীকার হিসেবে স্বীকৃত হয়। তিনি এর সহযোগী সদস্য প্রতিষ্ঠান সৃষ্টির ব্যাপারে ও সচেতনতা বাড়াতে সাহায্য করেন।

ব্রুস পেরেনস ১৯৯৮ সালে glibc নির্ভর ডেবিয়ান-২.০ রিলিজের পূর্বেই এ প্রকল্প হতে অব্যাহতি নেন। এ সময়ে প্রকল্পের নতুন নেতৃত্ব নির্বাচনের জন্য উদ্যেগ নেয়া হয় এবং আরো দুটি ২.এক্স রিলিজ বের হয় যেখানে আরো বেশী প্যাকেজ এবং আরো বেশী আর্কিটেকচার সাপোর্ট অন্তর্ভুক্ত হয়। এ সময়েই APT কে প্রয়োগ করা হয় এবং ডেবিয়ান জিএনইউ/হার্ড, যেটি প্রথম নন-লিনাক্স কার্নেলে অর্ন্তভূক্ত হয়, তার ও ভালোভাবে অগ্রযাত্রা শুরু হয়। ১৯৯৯ সালে ডেবিয়ান লিনাক্স এর উপর ভিত্তি করে প্রথম ডিস্ট্রিবিউশন কোরেল লিনাক্স এবং স্টরমিক্স এর স্টর্ম লিনাক্স বের হয়। যদি ও এখন আর উন্নয়ন করা হয় না কিন্তু এ ডিস্ট্রিবিউশন দু’টিই ডেবিয়ান এর উপর ভিত্তি করে তৈরী প্রথম ডিস্ট্রিবিউশন হিসেবে স্বীকৃত।

২০০০ সালের শেষের দিকে এ প্রকল্পের আর্কাইভ এবং রিলিজ ব্যবস্থাপনায় বড়সড় পরিবর্তন নিয়ে আসা হয় যা সফটওয়্যার আর্কাইভ প্রসেসকে নতুন প্যাকেজ টুলসের আওতায় নিয়ে আসে। এরই ফলে টেস্টিং ডিস্ট্রোএর একটি ধারা গড়ে ওঠে যা পরবর্তী স্ট্যাবল রিলিজের জন্য একটি ভিত হিসেবে কাজ করতে থাকে। ২০০১ সালে ডেভেলপারগন একটি বার্ষিক কনফারেন্স এর আয়োজন শুরু করেন যা ‌‍'ডেবকনফ নামে' পরিচিত হয়। এটি ডেভেলপার এবং টেকনিক্যাল ব্যবহারকারীদের মধ্যে একটি সেতুবন্ধন রূপে কাজ করতে থাকে।

ডেবিয়ান রিলিজসমূহ


ডেবিয়ান এর রিলিজসমূহের মজার দিকটি হচ্ছে এর রিলিজের নামগুলি পিক্সার কর্তৃক তৈরীকৃত মুভি টয় স্টোরি এর চরিত্রসমূহ হতে নেয়া হয়েছে। কিছুটা ছোট বাচ্চাদের পছন্দ মত হয়ে গেছে তাই না? আসুন দেখে নেয়া যাক এর রিলিজগুলি এক নজরেঃ

রিলিজ রিলিজের তারিখ কোড নাম
Debian 5.0 (Latest Stable) 14 February 2009 Lenny
Debian 4.0 8 April 2007 Etch
Debian 3.1 6 June 2005 Sarge
Debian 3.0 19 July 2002 Woody
Debian 2.2 15 August 2000 Potato
Debian 2.1 March 9th, 1999 Slink
Debian 2.0 July 24th, 1998 Hamm
Debian 1.3 June 5th, 1997 Bo
Debian 1.2 December 12th, 1996 Rex
Debian 1.1 June 17th, 1996 Buzz
Debian 1.0 Never released -
Debian 0.93R6 November 1995 -
Debian 0.93R5 March 1995 -
Debian 0.91 January 1994 -
Debian 0.01 through 0.90 August-December 1993