ধরুন, আপনার নতুন লিনাক্স মেশিনে একটি অ্যাপ ইনস্টল করতে চান। কিন্তু ডাউনলোড করতে গিয়ে দেখলেন .deb
, .rpm
, .appimage
উইন্ডোজে তো শুধু .exe ছিলো। এখানে এতগুলো কেন?
বেশ, এখানে ডিস্ট্রিবিউশনও অনেক, তাই প্যাকেজ সিস্টেমও অনেক। লিনাক্সে শিফট করার একটা গুরুত্বপূর্ন স্টেপ হল এসব linux executables নিয়ে জ্ঞান রাখা। কারন ভুলভাবে সফটওয়্যার ইনস্টল দিলে ওটা রিমুভ করতে ঝামেলা হয়।
এই পোস্টে আমি এসব ফরম্যাটের পার্থক্য, ভালো-মন্দ ও কোনটা কিভাবে ইউজ করতে হয় তা সহজ ভাষায় বোঝাব। চলুন শুরু করি!
এক্সিকিউটেবল কী?
এক্সিকিউটেবল, বা বাইনারি হল কিছু ফাইলস যেগুলো মেশিন কোড স্টোর করে। মেশিন কোড মানে 0, 1. এসব কোড পরে প্রসেসর দিয়ে রান হয়।
প্রোগ্রামাররা ব্যাপারটা ভালো বুঝবেন। প্রত্যেকবার কোড লিখার পরে ওটা রান করার আগে কম্পাইল করা লাগে। তবে ফাইনাল প্রোডাক্ট বানানোর পর ওটা শেষ একবারই কম্পাইল হয়। তারপর আউটপুট ফাইলটা আর কম্পাইল করা লাগে না যদি না কোডে কোনো আপডেট করছেন।
উইন্ডোজের .exe
এর মতো লিনাক্সেও অ্যাপ রান করার জন্য বিভিন্ন ফাইল ফরম্যাট ব্যবহার হয়। তবে লিনাক্সে সব ফরম্যাট সব ডিস্ট্রোতে কাজ করে না।
লিনাক্স বনাম উইন্ডোজ এক্সিকিউটেবল
উইন্ডোজ স্ট্যান্ডার্ড .exe
ফরম্যাট ইউজ করে। এর বাইরেও মাইক্রোসফটের .msi ফরম্যাট আছে। আবার পোর্টেবল অ্যাপস আছে, যদিও ওটা .exe ফরম্যাটেই চলে।
লিনাক্সে ডিস্ট্রো অনুযায়ী ফরম্যাট ভিন্ন। যেমন:
-
.deb
(Debian) -
.rpm
(Fedora) -
.snap
(Ubuntu) -
.flatpak
(Universal)
লিনাক্সে কমান্ড লাইন বা GUI – দুইভাবেই অ্যাপ ইনস্টল করা যায়।
বিভিন্ন এক্সিকিউটেবলের পার্থক্য
#1. Flatpak
ফ্ল্যাটপ্যাক সব ডিস্ট্রোতে চলে, ডেবিয়ান, ফেডোরা যেটাই চালান না কেন। এটাই ফ্ল্যাটপ্যাকের সবচেয়ে বড় সুবিধা। ফ্ল্যাটপ্যাকের সফটওয়্যার ইকোসিস্টেমও বেশ ক্লিন, ভালো লাগার মত।
কিভাবে ইনস্টল করবেনঃ
ফ্ল্যাটপ্যাকের জন্য আলাদা ইন্টারফেস আছে, যেটা bauh নামে পরিচিত। যদিও লিনাক্সের “সফটওয়্যার” থেকেই ফাইল ইনস্টল করা যায়।
সুবিধাঃ
- সব লিনাক্স ডিস্ট্রিবিউশনে চালানো যায়
- স্যান্ডবক্সড অ্যাপ্লিকেশন, তাই সেইফ
- ব্যাকগ্রাউন্ডে daemon রান করে না, তাই রিসোর্স কম খায়
অসুবিধাঃ
- ইনস্টলেশন কিছুটা সময়সাপেক্ষ, এটা আমার কাছে বিরক্তিকর 😑
- GUI ম্যানেজ করতে চাইলে অতিরিক্ত টুল দরকার পড়ে
#2. AppImage
অ্যাপ-ইমেজ হল কমপ্লিট প্যাকেজ, একটা সফটওয়্যার রান করতে যত লাইব্রেরি, ডিপেন্ডেন্সি, রিসোর্স লাগবে সব ঐটায় এমবেড করা থাকে। এগুলো স্ট্যান্ড-অ্যালোন ফাইল, মানে কোনো ইনস্টলেশন ছাড়াই চালানো যায়; উইন্ডোজের পোর্টেবল সফটওয়্যারের মত।
কিভাবে ইউজ করবেনঃ
অ্যাপ-ইমেজ ফাইলের উপর মাউসের রাইট ক্লিক দিয়ে প্রোপার্টিসে গিয়ে Executable as program অপশনটা অন করুন। তারপর ফাইলে ডাবল ক্লিক করলেই রান হবে।
সুবিধাঃ
- প্লাগ অ্যান্ড প্লে, ডাউনলোডের পরপরই রান করা যায়
- পেনড্রাইভ থেকেও চালানো যায়
- কোনো ডিপেনডেন্সি ইনস্টলের ঝামেলা নেই
অসুবিধাঃ
- যেহেতু সব লাইব্রেরি একসাথে থাকে, তাই ফাইল সাইজ বড় হয়
- আপডেট ম্যানুয়ালি করতে হয়, তবে অনেক সফটওয়্যারের বিল্ট-ইন আপডেট সিস্টেম আছে
#3. DEB
Debian-ভিত্তিক ডিস্ট্রোগুলা, যেমন Ubuntu, Linux Mint — এরা .deb ইউজ করে। ডেবিয়ানে আপডেট একটু স্লো আসে, যদিও সফটওয়্যার আপডেট নির্ভর করে ডেভেলপারদের উপর।
কিভাবে ইনস্টল করবেনঃ
মাউসে রাইট ক্লিক দিয়ে Open with another application > Software install সিলেক্ট করবেন। কিংবা টার্মিনালে গিয়ে sudo apt install [package path] লিখে এন্টার দিবেন, ইনস্টল হয়ে যাবে।
সুবিধা:
- APT ম্যানেজার দিয়ে ইজিলি ইনস্টল করা যায়
- ডেবিয়ান ওয়ালা সিস্টেমের সাথে ইন্টিগ্রেশন ভালো
অসুবিধা:
#4. RPM
REHL (Red Hat Enterprise Linux) বেসড ডিট্রিবিউশন, যেমন Fedora, CentOS এই ফরম্যাট ইউজ করে। ব্যক্তিগত ভাবে আমি নিজেও ফেডোরা ইউজ করি : )
Read more: রিলিজ হলো Fedora 42 – ভার্শন রিভিউ ও আমার ব্যক্তিগত অভিজ্ঞতা
কিভাবে ইনস্টল করবেনঃ
আরপিএম ফাইল আসলে আলাদা ডাউনলোড দিয়ে ইনস্টল করা সঠিক পদ্ধতি নয়।
“সফটওয়্যার” অ্যাপ থেকে আপনার পছন্দের প্রোগ্রামের RPM ভার্শন চুজ করুন। অথবা কমান্ড লাইনে প্যাকেজ ম্যানেজারে গিয়ে খুঁজে দেখুন ওদের রিপোজিটরিতে প্রোগ্রামটা আছে কিনা, তারপর sudo dnf install [filename] লিখে ইনস্টল করুন।
সুবিধা:
- RPM এর জন্য DNF নামে একটা পাওয়ারফুল প্যাকেজ ম্যানেজার আছে, এটা থেকে সব সফটওয়্যার ম্যানেজ করা যায়
- REHL সিস্টেমের জন্য বেশ অপ্টিমাইজড, প্যাকেজের সাইজ কম
অসুবিধা:
- অন্য ডিস্ট্রো যেমন মিন্ট, আর্চ এসবে কাজ করে না
- কিছু ডিপেনডেন্সি মাঝে মধ্যে মিসিং থাকতে পারে
#5. Snap
Canonical লিমিটেডের বানানো সফটওয়্যার প্যাকেজ। এটাও লিনাক্সের একটা সার্বজনীন ফরম্যাট। তবে কিছু লিমিটেশন থাকায় এটা সবখানে দেখা যায় না।
কিভাবে ইনস্টল করবেনঃ
উবুন্টুর আলাদা স্ন্যাপস্টোর আছে, ওখান থেকে সব ম্যানেজ করা যায়। স্ন্যাপক্রাফট ইনস্টল করতে কমান্ড লাইনে লিখুনঃ
sudo apt install snapd
সুবিধা:
- সব ডিস্ট্রোতে কাজ করে
- অটোমেটিক আপডেট করে নেয়
অসুবিধা:
- স্যান্ডবক্সড দেখে স্লো লোড হয়, এটা বিরক্তিকর
- র্যাম ও ডিস্ক স্পেস বেশি খায়, এজন্য লো রিসোর্সের মেশিনের জন্য উপযুক্ত নয়
#6. AUR
এটা Arch লিনাক্স ইউজারদের জন্য। যদিও প্রকৃত ফাইল এক্সটেনশনের নামে .tar.gz. কারন আর্চে ইউজারের প্যাকেজ বিল্ড করে নিতে হয়।
Read more: আসুন পরিচিত হই আমার দেখা কিছু সেরা লিনাক্স অপারেটিং সিস্টেম এর সাথে
কিভাবে ইনস্টল করবেনঃ
আউর প্যাকেজ গুলা ম্যানুয়ালি বিল্ড করা লাগে। এজন্য বেশ কিছু সিস্টেম আছে। টার্মিনালে নিম্নোক্ত কমান্ডগুলো একেএকে রান করুনঃ
git clone [url] cd [package name] makepkg -si
অন্য একটা উপায় হল আউর হেল্পার ইউজ করা, যেমন yay. টার্মিনালে লিখুনঃ
yay -S [package name]
aurutils নামে আরেকটা হেল্পার আছে অ্যাকটিভ সাপোর্টে।
সুবিধা:
- নতুন সফটওয়্যার সাপোর্ট ফাস্ট পাওয়া যায়, এটাই আর্চ লিনাক্সের সবচেয়ে বড় প্লাস পয়েন্ট
- কমিউনিটি সাপোর্ট বেশ ভালো
অসুবিধা:
- হালকা কম্পাইলিংয়ের জ্ঞান দরকার
- অ্যাডমিন ভেরিফিকেশন না থাকায় নিরাপত্তা ঝুঁকি থাকে
#7. Ebuild & Portage
এগুলো Gentoo-এর জন্য কাস্টমাইজযোগ্য প্যাকেজ সিস্টেম।
Portage হল জেন্টোর অফিশিয়াল প্যাকেজ ম্যানেজার। আর Ebuild মূলত স্ক্রিপ।
এখানে কিভাবে প্যাকেজ ডাউনলোড করতে হবে, অন্য কোন প্যাকেজ লাগবে, কোন কোন অপশন এনাবল/ডিসেবল রাখতে হবে ইত্যাদি নির্দেশনা দেয়া থাকে।
কিভাবে ইনস্টল করবেনঃ
জেন্টোতে সব ম্যানুয়ালি বিল্ড করা লাগে, বহুত ঝামেলারে ভাই। আমি আলাদা আর কিছু লিখছি না। তবে সারকথা হল, পোর্টেজ প্যাকেজ ম্যানেজার থেকেই সব ম্যানেজ করতে হয়।
ইবিল্ড স্ক্রিপগুলাও কম্পাইল করে নিতে হয়। এজন্য টার্মিনালে এসব কমান্ড লাগেঃ
ebuild [filename.ebuild] compile ebuild [filename.ebuild] install
সুবিধা:
- প্রতিটি লাইব্রেরি কাস্টম কনফিগার করা যায়।
- সিস্টেম ম্যাক্স লেভেলে অপ্টিমাইজড হয়, কারন আপনার হার্ডওয়্যার অনুযায়ী সফটওয়্যার বিল্ড হয়।
অসুবিধা:
- কম্পাইলিংয়ে অনেক টাইম লাগে।
- নতুনদের জন্য এই ডিস্ট্রো ও সফটওয়্যার সিস্টেম মোটেও উপযুক্ত নয়। জেন্টো যথেষ্ট অ্যাডভান্সড ডিস্ট্রিবিউশন।
#8. ELF (Executable and Linkable Format)
লিনাক্সের ন্যাটিভ বাইনারি ফরম্যাট। এটা দিয়ে এক্সিকিউটেবল, অবজেক্ট কোড, শেয়ার্ড লাইব্রেরি, কোর ডাম্প ইত্যাদি স্টোর করা যায়। এটা থেকে সরাসরি মেশিন কোড রান হয়। উইকিপিডিয়ার এই ছবিটি জুড়ে দিচ্ছি যদিও আমি নিজেও জানি না এটা দিয়ে কি বুঝাচ্ছে 😵💫
কিভাবে রান করবেনঃ
ইএলএফ ফাইল ডাবল ক্লিক দিলেই সরাসরি রান হবে।
সুবিধা:
- এই linux executables সব ডিস্ট্রোতে চালানো যায় (যদি ডিপেনডেন্সি থাকে)।
অসুবিধা:
- সিস্টেম-ডিপেনডেন্ট।
- কোনো GUI নেই—শুধু CLI.
#9. স্ক্রিপ্ট ফাইল (.sh, .py)
শেল বা পাইথন স্ক্রিপ্ট মূলত টেক্সট ফাইল যেখানে বিভিন্ন কমান্ড লিখা থাকে। এসব কমান্ড পরে ইন্টারপ্রেটার দ্বারা লাইন বাই লাইন এক্সিকিউট হয়। এসব স্ক্রিপ দিয়ে বিভিন্ন অটোমেশন, সিস্টেম অ্যাডমিনিস্ট্রেশন, ও সফটওয়্যার ডেভেলপমেন্টের কাজ সারা যায়।
কিভাবে রান করবেনঃ
মাউসে রাইট ক্লিক অপশনে গিয়ে ফাইলটিকে আগে এক্সিকিউটেবল বানিয়ে নিতে হবে। তারপর ডাবল ক্লিক করলে রান করবে। অথবা কনসোল থেকে chmod +x myscript.sh লিখে ./myscript.sh টাইপ করে এন্টার দিলেও স্ক্রিপটি রান হবে।
সুবিধা:
- যেহেতু টেক্সট ফাইল, তাই আকারে খুবই ছোট
- সোর্স কোড দেখা যায়, প্রয়োজন মত কোড কাটাছেঁড়া করা যায়
অসুবিধা:
- bash/python ইনস্টল থাকা লাগবে। যদিও এসব লিনাক্সে অলরেডি ইনস্টলড থাকেই
- ক্রস-প্ল্যাটফর্ম না (যদি নির্দিষ্ট কোড থাকে)
প্রশ্নোত্তর (QnA)
#1. কোন linux executables সবচেয়ে ভালো?
ভালো খারাপ ব্যাপারটা এখানে আপেক্ষিক। একেক প্যাকেজ একেক দরকারে বানানো। আমি বলব আপনার প্রয়োজন অনুযায়ীঃ
- নতুনদের জন্যঃ Flatpak, Snap
- পারফরম্যান্সের জন্যঃ DEB/RPM
- পোর্টেবিলিটির জন্যঃ AppImage
#2. কীভাবে জানবেন আপনার সিস্টেমে কোন ফরম্যাট কাজ করবে?
সাধারনত, ডিস্ট্রোভেদে প্যাকেজ ফরম্যাট ভিন্ন হয়। যেমনঃ
- snap (Ubuntu)
- aur (Arch)
- deb (Debian)
- rpm (Fedora)
- flatpak/appimage (Universal)
আরো বিস্তারিত জানতে গুগলে সার্চ দিনঃ what linux executables format [distro name] use?
#3. কীভাবে শেলে ফাইলের টাইপ চেক করবেন?
লিনাক্সে ফাইল টাইপ জানতে টার্মিনালে লিখুনঃ file [filename]। যেমনঃ file kdenlive-25.04.1-x86_64.AppImage
শেলে ফাইল টাইপ চেক করা একটা ভালো আইডিয়া। এটা দিয়ে একটা ফাইল কিভাবে রান করবেন পরে সেটা গুগল থেকে জানতে পারবেন।
Read more: ৫টি দিক বিবেচনায় Windows থেকে Linux অপারেটিং সিস্টেম সেরা
#4. কীভাবে AppImage চালাবেন?
টার্মিনাল থেকে ফাইলকে এক্সিকিউটেবল করুন এটা লিখেঃ
chmod +x [filename.AppImage]
তারপর আবার ./filename.AppImage লিখুন।
কিংবা, ফাইলের উপর মাউসের রাইট ক্লিক দিয়ে প্রোপার্টিস থেকে Executable as program এটা অন করে দিন। তারপর ডাবল ক্লিক করলেই রান হবে।
#5. কীভাবে অ্যাপ আনইনস্টল করবেন?
DEB/RPM/Snap/Flatpak বেসড প্রোগ্রামগুলা “সফটওয়্যার” অ্যাপ থেকে আনইনস্টল করা যায়।
আবার টার্মিনালে sudo apt remove [appname] লিখেও আনইনস্টল করা যায়।
নোটঃ RHEL বেসড ডিস্ট্রো যেহেতু DNF ইউজ করে, তাই APT এর পরিবর্তে DNF লিখতে হবে, যেমনঃ sudo dnf remove [appname]
AppImage এর ক্ষেত্রে ফাইলটা ডিলিট মারলেই সিস্টেম থেকে মুছে যাবে।
আর AUR/Ebuild প্রোগ্রামগুলো কমান্ড লাইন থেকে আনইনস্টল করতে হবে, যেমনঃ
sudo pacman -Rsn [filename]
সমাপ্তি
Linux executables অনেক প্যাচগোছের মনে হলেও, একবার মাথায় ঢুকলে সহজ হয়ে যায়… সম্ভবত।
আমি অবশ্য ফেডোরাতে পড়ে আছি, সো এটারই হালকা পাতলা ধারনা রাখি কেবল।
আপনি কোন ডিস্ট্রো ব্যবহার করেন তার উপর নির্ভর করবে আপনার কোন ফরম্যাট লাগবে।
আর যদি এখনো ভুলে যান, তবে পুরো লেখাটা আবার পড়ুন বা টেলিগ্রামে আমাকে জিজ্ঞেস করুন (লিংক প্রোফাইলে)।
আপনার লিনাক্স যাত্রা আনন্দদায়ক হোক! 🐧
আল্লাহ হাফেজ।