Linux শেখার সময় Software Install করা খুব সাধারণ একটি কাজ। কিন্তু Linux-এ software installation-এর পেছনে আসলে কী ঘটে—Package কী, Repository কী, Package Manager কী, APT ও DPKG-এর মধ্যে পার্থক্য কী, Dependency কীভাবে resolve হয়—এসব না বুঝলে Linux-এর package ecosystem সম্পর্কে ধারণা অসম্পূর্ণ থেকে যায়।
এই লেখায় আমরা পুরো বিষয়টি step-by-step বুঝব।
১. প্রথমে একটি সহজ প্রশ্ন: Software কোথা থেকে আসে?
ধরুন আপনি Ubuntu ব্যবহার করছেন এবং আপনার git দরকার।
আপনি terminal-এ লিখলেন:
apt install git
কিন্তু এখানে একটি প্রশ্ন আসবে:
aptGit পেল কোথা থেকে?
Git আপনার computer-এর ভেতরে আগে থেকেই থাকার কথা নয়।
Git একটি package হিসেবে একটি repository-তে সংরক্ষিত থাকে। আর সেই repository থেকে package খুঁজে এনে install করার কাজ করে package manager।
অর্থাৎ পুরো সম্পর্কটি:
Repository
↓
Package Manager
↓
Package
↓
Linux System
এই তিনটি শব্দ তাই খুব গুরুত্বপূর্ণ:
Package → Repository → Package Manager
২. Package কী?
সহজ ভাষায়,
Package হলো software-এর একটি packaged bundle।
যেমন:
git
curl
vim
nano
vlc
nginx
এগুলো Linux system-এ package হিসেবে পাওয়া যায়।
একটি package-এর মধ্যে শুধু program-এর executable অংশ থাকে না। এর সঙ্গে software install এবং পরিচালনা করার জন্য আরও বিভিন্ন information ও file থাকতে পারে।
ধরুন git একটি package।
Conceptually:
Git Package
│
├── Program / Binary
├── Metadata
├── Dependencies
├── Installation Scripts
├── Removal Scripts
└── Configuration Files
৩. Package-এর ভিতরে কী থাকে?
এখন একটু গভীরে যাওয়া যাক।
Binary / Executable
Package-এর মূল software বা executable code এখানে থাকে।
যেমন Git install করার পরে আমরা Git command ব্যবহার করতে পারি।
Metadata
Package-এর সঙ্গে বিভিন্ন metadata থাকে।
যেমন:
- Version
- Maintainer
- Dependencies
- Package সম্পর্কিত অন্যান্য তথ্য
ধরুন:
Package: git
Version: X.Y.Z
Maintainer: ...
Dependencies: ...
অর্থাৎ package manager শুধু software-এর নাম জানলেই কাজ শেষ করে না; package সম্পর্কে আরও অনেক তথ্য তার প্রয়োজন হয়।
Installation Scripts
Package install করার সময় কিছু automated operation প্রয়োজন হতে পারে।
সেজন্য package-এর সঙ্গে installation scripts থাকতে পারে।
দুটি গুরুত্বপূর্ণ script হলো:
Pre-Install
Post-Install
Pre-Install installation শুরু হওয়ার আগে কিছু কাজ করতে পারে।
Post-Install installation শেষ হওয়ার পরে প্রয়োজনীয় configuration বা setup করতে পারে।
Removal Scripts
Package remove করার সময়ও script চালানো যেতে পারে:
Pre-Remove
Post-Remove
অর্থাৎ:
Install
│
├── Pre-Install
├── Install
└── Post-Install
Remove
│
├── Pre-Remove
├── Remove
└── Post-Remove
Configuration Files
Package-এর সঙ্গে প্রয়োজনীয় configuration files-ও থাকতে পারে।
সুতরাং একটি package-কে শুধু .deb বা .rpm file হিসেবে না দেখে software-এর installation-এর জন্য প্রয়োজনীয় একটি structured bundle হিসেবে ভাবা ভালো।
৪. Repository কী?
এবার আসি Repository-তে।
Repository হলো এমন একটি remote storage/server যেখানে software packages সংরক্ষণ করা হয়।
সহজ উদাহরণ:
Ubuntu Repository
│
├── git
├── curl
├── vim
├── nginx
├── ...
└── হাজার হাজার package
আপনি যখন কোনো software install করতে চান, package manager repository-এর সঙ্গে যোগাযোগ করে প্রয়োজনীয় package খুঁজে বের করে।
এটি অন্য ecosystem-এর সঙ্গেও তুলনা করা যায়।
যেমন:
Node.js
↓
npm Registry
Docker
↓
Docker Hub
Ubuntu
↓
Ubuntu Package Repository
মূল ধারণাটি একই:
কোথাও package store থাকে এবং package manager সেখান থেকে package সংগ্রহ করে।
৫. Package Manager কী?
Repository-তে package আছে।
কিন্তু সেই package খুঁজবে কে?
এখানে আসে Package Manager।
Package Manager হলো এমন একটি software/tool যা package management-এর বিভিন্ন কাজ পরিচালনা করে। যেমন:
- Package search
- Package download
- Package installation
- Package removal
- Dependency management
- Update
- Upgrade
- Cache management
Conceptually:
Repository
│
│
▼
Package Manager
│
┌─────────┼─────────┐
│ │ │
Install Remove Upgrade
│
▼
Linux System
৬. Package Manager দুই ধরনের কেন?
Linux package management বুঝতে গেলে একটি গুরুত্বপূর্ণ distinction হলো:
High-Level Package Manager
এবং
Low-Level Package Manager
দুটোর কাজ আলাদা।
Ubuntu/Debian ecosystem-এ:
High-Level
↓
APT
Low-Level
↓
DPKG
৭. APT — High-Level Package Manager
Ubuntu-তে আমরা সবচেয়ে বেশি যে package manager ব্যবহার করি সেটি হলো:
apt
এছাড়া:
apt-get
ও ব্যবহার করা হয়।
যেমন:
apt install git
APT user-এর জন্য package management-এর বড় অংশ পরিচালনা করে।
সে:
- Repository-এর সঙ্গে কাজ করে
- Package খুঁজে
- Dependencies resolve করে
- Package download করে
- Package version manage করে
- Installation process পরিচালনা করে
এ কারণেই APT-কে High-Level Package Manager বলা হয়।
৮. DPKG — Low-Level Package Manager
Ubuntu/Debian system-এ dpkg হলো low-level package management tool।
dpkg
এর কাজ মূলত package archive unpack এবং system-এ package-এর file install করার মতো low-level operation পরিচালনা করা।
এখন একটি গুরুত্বপূর্ণ প্রশ্ন:
তাহলে আমরা সরাসরি
dpkgব্যবহার করি না কেন?
কারণ DPKG-এর কাজ সীমিত।
৯. Dependency কী?
Dependency হলো এমন একটি package বা software component যেটি অন্য একটি software সঠিকভাবে কাজ করার জন্য প্রয়োজন।
ধরুন:
Git
│
├── Dependency A
├── Dependency B
└── Dependency C
Git install করতে গেলে যদি Dependency A, B, C প্রয়োজন হয়, তাহলে সেগুলোও system-এ থাকতে হবে।
এখন আপনি যদি low-level dpkg দিয়ে একটি package install করেন, missing dependency নিজে থেকে repository থেকে resolve করার কাজ এটি করে না। Dependency missing থাকলে installation fail করতে পারে।
১০. APT কেন এত গুরুত্বপূর্ণ?
APT এই জায়গাতেই powerful।
আপনি লিখলেন:
apt install git
APT প্রথমে বুঝবে:
Git-এর কী কী dependency দরকার?
তারপর:
Dependencies খুঁজে বের করবে
↓
প্রয়োজনীয় package download করবে
↓
Dependencies install করবে
↓
শেষে Git install করবে
Conceptually:
apt install git
│
▼
APT
│
Check Dependencies
│
┌────────────┼────────────┐
▼ ▼ ▼
Dep A Dep B Dep C
│ │ │
└────────────┼────────────┘
▼
Install Git
এটাই High-Level Package Manager-এর বড় সুবিধা।
১১. APT এবং DPKG-এর সম্পর্ক
এখন পুরো architecture পরিষ্কার করা যাক।
User
│
│ apt install git
▼
APT
│
│ Dependency Resolution
│ Repository Management
│ Package Selection
▼
DPKG
│
│ Unpack / Install
▼
Linux Filesystem
অর্থাৎ:
APT high-level management করে, আর DPKG low-level installation operation সম্পন্ন করে।
এই কারণেই সাধারণ user হিসেবে আমরা বেশিরভাগ সময় apt ব্যবহার করি।
১২. বিভিন্ন Linux Distribution-এর Package Manager
সব Linux distribution-এর package management system এক নয়।
| Distribution | High-Level | Low-Level | Package Format |
|---|---|---|---|
| Ubuntu / Debian |
apt, apt-get
|
dpkg |
.deb |
| Red Hat / CentOS / Fedora |
yum, dnf
|
rpm |
.rpm |
| Arch Linux | pacman |
— | .pkg.tar.zst |
| OpenSUSE | zypper |
rpm |
.rpm |
তাই আপনি Ubuntu ব্যবহার করলে apt শেখা সবচেয়ে গুরুত্বপূর্ণ।
১৩. Package Format কী?
Package manager-এর সঙ্গে package format-এরও সম্পর্ক আছে।
Ubuntu/Debian:
.deb
Red Hat/Fedora:
.rpm
অর্থাৎ:
Ubuntu / Debian
│
▼
.deb
RedHat / Fedora
│
▼
.rpm
Ubuntu Debian ecosystem থেকে derived হওয়ায় Debian-এর .deb package format ব্যবহার করে।
১৪. Ubuntu Repository-এর চারটি প্রধান Section
Ubuntu repository-কে কয়েকটি প্রধান section-এ ভাগ করা হয়:
Ubuntu Repository
│
├── Main
├── Restricted
├── Universe
└── Multiverse
Main
Officially maintained free/open-source packages-এর প্রধান অংশ।
Restricted
Proprietary hardware driver বা restricted software-এর মতো components।
Universe
Community-maintained open-source software।
Multiverse
লাইসেন্স বা অন্যান্য সীমাবদ্ধতার কারণে restricted/unofficial nature-এর software।
১৫. APT Repository URL কীভাবে জানে?
APT-কে জানতে হবে:
Package কোথা থেকে download করতে হবে?
Ubuntu system-এ repository configuration সাধারণত থাকে:
/etc/apt/sources.list
অথবা:
/etc/apt/sources.list.d/ubuntu.sources
Conceptually:
APT
│
▼
Repository Configuration
│
▼
Repository URL
│
▼
Remote Ubuntu Repository
তাই:
apt install git
চালালে APT জানে কোন configured repository থেকে package information এবং package files সংগ্রহ করতে হবে।
১৬. Repository-এর dists এবং pool
Repository-এর internal structure-এ দুটি গুরুত্বপূর্ণ ধারণা হলো:
Repository
│
├── dists/
│
└── pool/
dists/
এখানে package index information থাকে।
APT এই index ব্যবহার করে দ্রুত জানতে পারে কোন package available, কোন version আছে ইত্যাদি।
pool/
এখানে মূল package archive files থাকে, যেমন .deb package।
সহজভাবে মনে রাখুন:
dists/
↓
Package Information
pool/
↓
Actual Package Files
১৭. apt update আসলে কী করে?
এখানে beginners-দের একটি common confusion হয়।
অনেকে ভাবেন:
apt update
মানে system-এর software update হয়ে যাবে।
আসলে তা নয়।
apt update মূলত repository থেকে latest package index information সংগ্রহ করে local package index update করে।
অর্থাৎ:
Remote Repository
│
│ apt update
▼
Local Package Index
এটি সাধারণত package install করে না।
১৮. apt install কী করে?
এখন package install করি।
apt install curl
APT package-এর information ব্যবহার করে প্রয়োজনীয় package download এবং installation process পরিচালনা করবে।
যদি confirmation চায়:
Do you want to continue? [Y/n]
তাহলে:
y
দিয়ে installation continue করা যায়।
১৯. Installation সফল হয়েছে কি না কীভাবে বুঝব?
Package install করার পরে সেটি ব্যবহার করে test করা যায়।
যেমন curl install করার পরে:
curl http://ports.ubuntu.com
দিয়ে test করা যায়।
অর্থাৎ workflow:
apt update
↓
apt install curl
↓
curl ব্যবহার
২০. Package Remove করা
কোনো package আর প্রয়োজন না হলে:
apt remove curl
ব্যবহার করা যায়।
Workflow:
apt install curl
# কাজ শেষ
apt remove curl
২১. apt clean
APT package download করার সময় local cache তৈরি করতে পারে।
এই downloaded package cache পরিষ্কার করতে:
apt clean
ব্যবহার করা যায়।
Conceptually:
Package Cache
│
│ apt clean
▼
Cache Cleaned
২২. apt upgrade
এবার ধরুন আপনার system-এ কিছু package already installed আছে।
কিন্তু সেগুলোর নতুন version repository-তে এসেছে।
তখন:
apt upgrade
চালালে installed packages-এর available newer versions upgrade করা যায়।
এখানে সবচেয়ে গুরুত্বপূর্ণ difference:
apt update
↓
Package List / Index Update
apt upgrade
↓
Installed Packages Upgrade
দুটিকে কখনো একই জিনিস ভাববেন না।
২৩. একটি বাস্তব উদাহরণ: নতুন Ubuntu Machine
ধরুন আপনি একটি নতুন Ubuntu environment চালু করেছেন।
প্রথমে:
apt update
তারপর:
apt install curl
এখন curl install হয়ে গেছে।
Test:
curl http://ports.ubuntu.com
কাজ শেষ হলে:
apt remove curl
Cache পরিষ্কার করতে:
apt clean
এবং installed packages upgrade করতে:
apt upgrade
এই কয়েকটি command দিয়েই Linux package management-এর basic workflow বোঝা যায়।
২৪. পুরো Process একসঙ্গে
এখন পুরো architecture-টি একবার দেখুন:
USER
│
│ apt install git
▼
┌─────────────────┐
│ APT │
│ High-Level PM │
└────────┬────────┘
│
Repository Search
│
▼
Dependency Resolution
│
▼
Package Download
│
▼
┌─────────────────┐
│ DPKG │
│ Low-Level PM │
└────────┬────────┘
│
Unpack / Install
│
▼
┌─────────────────┐
│ Linux System │
└─────────────────┘
এটাই Linux package management-এর মূল mental model।
২৫. সবচেয়ে গুরুত্বপূর্ণ Command Cheat Sheet
# Repository package index update
apt update
# Package install
apt install <package>
# Package remove
apt remove <package>
# Downloaded cache clean
apt clean
# Installed packages upgrade
apt upgrade
উদাহরণ:
apt update
apt install git
apt remove git
apt clean
apt upgrade
২৬. পাঁচটি শব্দ মনে রাখুন
পুরো chapter-এর সবচেয়ে গুরুত্বপূর্ণ পাঁচটি concept:
Package
Software-এর packaged bundle।
Repository
যেখানে package সংরক্ষিত থাকে।
Package Manager
Package search, download, install, remove এবং management করে।
APT
Ubuntu/Debian-এর High-Level Package Manager।
DPKG
Ubuntu/Debian-এর Low-Level Package Manager।
২৭. Final Mental Model
শেষবারের মতো পুরো বিষয়টি একটি diagram দিয়ে মনে রাখুন:
PACKAGE
▲
│
stored inside
│
│
REPOSITORY
▲
│
accessed through
│
│
PACKAGE MANAGER
│
┌──────┴──────┐
│ │
APT DPKG
High-Level Low-Level
│ │
└──────┬──────┘
▼
LINUX SYSTEM
আর Ubuntu/Debian-এর ক্ষেত্রে:
APT
│
├── Repository handle করে
├── Package খুঁজে
├── Dependency resolve করে
├── Package download করে
└── DPKG-এর মাধ্যমে low-level installation সম্পন্ন করতে পারে
অন্যদিকে:
DPKG
│
├── .deb package নিয়ে কাজ করে
├── Package unpack করে
└── Low-level installation operation সম্পন্ন করে
তাই Linux Package Management-এর সবচেয়ে গুরুত্বপূর্ণ equation হলো:
Repository
+
Package Manager
+
Package
+
Dependency
=
Software Installation
আর Ubuntu ব্যবহার করলে practicalভাবে সবচেয়ে গুরুত্বপূর্ণ command হলো:
apt update
apt install <package>
apt remove <package>
apt upgrade
এই চারটি command এবং Package → Repository → APT → DPKG → Linux System flow পরিষ্কারভাবে বুঝে ফেলতে পারলে Linux-এর package management-এর foundation অনেকটাই তৈরি হয়ে যাবে।
Top comments (0)