DEV Community

Ragib Hasan
Ragib Hasan Subscriber

Posted on

Linux Package Management: Package, Repository, APT ও DPKG কীভাবে কাজ করে?

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
Enter fullscreen mode Exit fullscreen mode

কিন্তু এখানে একটি প্রশ্ন আসবে:

apt Git পেল কোথা থেকে?

Git আপনার computer-এর ভেতরে আগে থেকেই থাকার কথা নয়।

Git একটি package হিসেবে একটি repository-তে সংরক্ষিত থাকে। আর সেই repository থেকে package খুঁজে এনে install করার কাজ করে package manager

অর্থাৎ পুরো সম্পর্কটি:

Repository
     ↓
Package Manager
     ↓
Package
     ↓
Linux System
Enter fullscreen mode Exit fullscreen mode

এই তিনটি শব্দ তাই খুব গুরুত্বপূর্ণ:

Package → Repository → Package Manager


২. Package কী?

সহজ ভাষায়,

Package হলো software-এর একটি packaged bundle।

যেমন:

git
curl
vim
nano
vlc
nginx
Enter fullscreen mode Exit fullscreen mode

এগুলো 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
Enter fullscreen mode Exit fullscreen mode

৩. 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: ...
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ package manager শুধু software-এর নাম জানলেই কাজ শেষ করে না; package সম্পর্কে আরও অনেক তথ্য তার প্রয়োজন হয়।


Installation Scripts

Package install করার সময় কিছু automated operation প্রয়োজন হতে পারে।

সেজন্য package-এর সঙ্গে installation scripts থাকতে পারে।

দুটি গুরুত্বপূর্ণ script হলো:

Pre-Install
Post-Install
Enter fullscreen mode Exit fullscreen mode

Pre-Install installation শুরু হওয়ার আগে কিছু কাজ করতে পারে।

Post-Install installation শেষ হওয়ার পরে প্রয়োজনীয় configuration বা setup করতে পারে।


Removal Scripts

Package remove করার সময়ও script চালানো যেতে পারে:

Pre-Remove
Post-Remove
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ:

Install
   │
   ├── Pre-Install
   ├── Install
   └── Post-Install

Remove
   │
   ├── Pre-Remove
   ├── Remove
   └── Post-Remove
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

আপনি যখন কোনো software install করতে চান, package manager repository-এর সঙ্গে যোগাযোগ করে প্রয়োজনীয় package খুঁজে বের করে।

এটি অন্য ecosystem-এর সঙ্গেও তুলনা করা যায়।

যেমন:

Node.js
   ↓
npm Registry

Docker
   ↓
Docker Hub

Ubuntu
   ↓
Ubuntu Package Repository
Enter fullscreen mode Exit fullscreen mode

মূল ধারণাটি একই:

কোথাও 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
Enter fullscreen mode Exit fullscreen mode

৬. Package Manager দুই ধরনের কেন?

Linux package management বুঝতে গেলে একটি গুরুত্বপূর্ণ distinction হলো:

High-Level Package Manager

এবং

Low-Level Package Manager

দুটোর কাজ আলাদা।

Ubuntu/Debian ecosystem-এ:

High-Level
    ↓
APT

Low-Level
    ↓
DPKG
Enter fullscreen mode Exit fullscreen mode

৭. APT — High-Level Package Manager

Ubuntu-তে আমরা সবচেয়ে বেশি যে package manager ব্যবহার করি সেটি হলো:

apt
Enter fullscreen mode Exit fullscreen mode

এছাড়া:

apt-get
Enter fullscreen mode Exit fullscreen mode

ও ব্যবহার করা হয়।

যেমন:

apt install git
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

এর কাজ মূলত 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

APT প্রথমে বুঝবে:

Git-এর কী কী dependency দরকার?
Enter fullscreen mode Exit fullscreen mode

তারপর:

Dependencies খুঁজে বের করবে
        ↓
প্রয়োজনীয় package download করবে
        ↓
Dependencies install করবে
        ↓
শেষে Git install করবে
Enter fullscreen mode Exit fullscreen mode

Conceptually:

             apt install git
                    │
                    ▼
                   APT
                    │
            Check Dependencies
                    │
       ┌────────────┼────────────┐
       ▼            ▼            ▼
     Dep A        Dep B        Dep C
       │            │            │
       └────────────┼────────────┘
                    ▼
                Install Git
Enter fullscreen mode Exit fullscreen mode

এটাই High-Level Package Manager-এর বড় সুবিধা।


১১. APT এবং DPKG-এর সম্পর্ক

এখন পুরো architecture পরিষ্কার করা যাক।

User
 │
 │ apt install git
 ▼
APT
 │
 │ Dependency Resolution
 │ Repository Management
 │ Package Selection
 ▼
DPKG
 │
 │ Unpack / Install
 ▼
Linux Filesystem
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ:

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
Enter fullscreen mode Exit fullscreen mode

Red Hat/Fedora:

.rpm
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ:

Ubuntu / Debian
      │
      ▼
    .deb

RedHat / Fedora
      │
      ▼
    .rpm
Enter fullscreen mode Exit fullscreen mode

Ubuntu Debian ecosystem থেকে derived হওয়ায় Debian-এর .deb package format ব্যবহার করে।


১৪. Ubuntu Repository-এর চারটি প্রধান Section

Ubuntu repository-কে কয়েকটি প্রধান section-এ ভাগ করা হয়:

Ubuntu Repository
│
├── Main
├── Restricted
├── Universe
└── Multiverse
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

অথবা:

/etc/apt/sources.list.d/ubuntu.sources
Enter fullscreen mode Exit fullscreen mode

Conceptually:

APT
 │
 ▼
Repository Configuration
 │
 ▼
Repository URL
 │
 ▼
Remote Ubuntu Repository
Enter fullscreen mode Exit fullscreen mode

তাই:

apt install git
Enter fullscreen mode Exit fullscreen mode

চালালে APT জানে কোন configured repository থেকে package information এবং package files সংগ্রহ করতে হবে।


১৬. Repository-এর dists এবং pool

Repository-এর internal structure-এ দুটি গুরুত্বপূর্ণ ধারণা হলো:

Repository
│
├── dists/
│
└── pool/
Enter fullscreen mode Exit fullscreen mode

dists/

এখানে package index information থাকে।

APT এই index ব্যবহার করে দ্রুত জানতে পারে কোন package available, কোন version আছে ইত্যাদি।

pool/

এখানে মূল package archive files থাকে, যেমন .deb package।

সহজভাবে মনে রাখুন:

dists/
  ↓
Package Information

pool/
  ↓
Actual Package Files
Enter fullscreen mode Exit fullscreen mode

১৭. apt update আসলে কী করে?

এখানে beginners-দের একটি common confusion হয়।

অনেকে ভাবেন:

apt update
Enter fullscreen mode Exit fullscreen mode

মানে system-এর software update হয়ে যাবে।

আসলে তা নয়।

apt update মূলত repository থেকে latest package index information সংগ্রহ করে local package index update করে।

অর্থাৎ:

Remote Repository
       │
       │ apt update
       ▼
Local Package Index
Enter fullscreen mode Exit fullscreen mode

এটি সাধারণত package install করে না।


১৮. apt install কী করে?

এখন package install করি।

apt install curl
Enter fullscreen mode Exit fullscreen mode

APT package-এর information ব্যবহার করে প্রয়োজনীয় package download এবং installation process পরিচালনা করবে।

যদি confirmation চায়:

Do you want to continue? [Y/n]
Enter fullscreen mode Exit fullscreen mode

তাহলে:

y
Enter fullscreen mode Exit fullscreen mode

দিয়ে installation continue করা যায়।


১৯. Installation সফল হয়েছে কি না কীভাবে বুঝব?

Package install করার পরে সেটি ব্যবহার করে test করা যায়।

যেমন curl install করার পরে:

curl http://ports.ubuntu.com
Enter fullscreen mode Exit fullscreen mode

দিয়ে test করা যায়।

অর্থাৎ workflow:

apt update
     ↓
apt install curl
     ↓
curl ব্যবহার
Enter fullscreen mode Exit fullscreen mode

২০. Package Remove করা

কোনো package আর প্রয়োজন না হলে:

apt remove curl
Enter fullscreen mode Exit fullscreen mode

ব্যবহার করা যায়।

Workflow:

apt install curl

# কাজ শেষ

apt remove curl
Enter fullscreen mode Exit fullscreen mode

২১. apt clean

APT package download করার সময় local cache তৈরি করতে পারে।

এই downloaded package cache পরিষ্কার করতে:

apt clean
Enter fullscreen mode Exit fullscreen mode

ব্যবহার করা যায়।

Conceptually:

Package Cache
     │
     │ apt clean
     ▼
Cache Cleaned
Enter fullscreen mode Exit fullscreen mode

২২. apt upgrade

এবার ধরুন আপনার system-এ কিছু package already installed আছে।

কিন্তু সেগুলোর নতুন version repository-তে এসেছে।

তখন:

apt upgrade
Enter fullscreen mode Exit fullscreen mode

চালালে installed packages-এর available newer versions upgrade করা যায়।

এখানে সবচেয়ে গুরুত্বপূর্ণ difference:

apt update
     ↓
Package List / Index Update

apt upgrade
     ↓
Installed Packages Upgrade
Enter fullscreen mode Exit fullscreen mode

দুটিকে কখনো একই জিনিস ভাববেন না।


২৩. একটি বাস্তব উদাহরণ: নতুন Ubuntu Machine

ধরুন আপনি একটি নতুন Ubuntu environment চালু করেছেন।

প্রথমে:

apt update
Enter fullscreen mode Exit fullscreen mode

তারপর:

apt install curl
Enter fullscreen mode Exit fullscreen mode

এখন curl install হয়ে গেছে।

Test:

curl http://ports.ubuntu.com
Enter fullscreen mode Exit fullscreen mode

কাজ শেষ হলে:

apt remove curl
Enter fullscreen mode Exit fullscreen mode

Cache পরিষ্কার করতে:

apt clean
Enter fullscreen mode Exit fullscreen mode

এবং installed packages upgrade করতে:

apt upgrade
Enter fullscreen mode Exit fullscreen mode

এই কয়েকটি 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   │
          └─────────────────┘
Enter fullscreen mode Exit fullscreen mode

এটাই 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
Enter fullscreen mode Exit fullscreen mode

উদাহরণ:

apt update

apt install git

apt remove git

apt clean

apt upgrade
Enter fullscreen mode Exit fullscreen mode

২৬. পাঁচটি শব্দ মনে রাখুন

পুরো 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
Enter fullscreen mode Exit fullscreen mode

আর Ubuntu/Debian-এর ক্ষেত্রে:

APT
 │
 ├── Repository handle করে
 ├── Package খুঁজে
 ├── Dependency resolve করে
 ├── Package download করে
 └── DPKG-এর মাধ্যমে low-level installation সম্পন্ন করতে পারে
Enter fullscreen mode Exit fullscreen mode

অন্যদিকে:

DPKG
 │
 ├── .deb package নিয়ে কাজ করে
 ├── Package unpack করে
 └── Low-level installation operation সম্পন্ন করে
Enter fullscreen mode Exit fullscreen mode

তাই Linux Package Management-এর সবচেয়ে গুরুত্বপূর্ণ equation হলো:

Repository
     +
Package Manager
     +
Package
     +
Dependency
     =
Software Installation
Enter fullscreen mode Exit fullscreen mode

আর Ubuntu ব্যবহার করলে practicalভাবে সবচেয়ে গুরুত্বপূর্ণ command হলো:

apt update
apt install <package>
apt remove <package>
apt upgrade
Enter fullscreen mode Exit fullscreen mode

এই চারটি command এবং Package → Repository → APT → DPKG → Linux System flow পরিষ্কারভাবে বুঝে ফেলতে পারলে Linux-এর package management-এর foundation অনেকটাই তৈরি হয়ে যাবে।

Top comments (0)