Linux: إدارة الحزم — apt / dpkg / snap وتثبيت البرامج

في لينكس، لا تحتاج لزيارة مواقع ويب لتحميل ملفات exe — مدير الحزم يتولى التثبيت بأمر واحد. التوزيعات المختلفة تستخدم مديري حزم مختلفين، لكن المفاهيم الأساسية واحدة.

📋 المتطلبات المسبقة: يجب أن تعرف بالفعل

1. ما ستتعلمه


2. قصة تثبيت Nginx

(1) نقطة الألم: على ويندوز، تثبيت البرامج يعني البحث في الويب، والتحميل، والنقر المزدوج، والضغط على "التالي"

احتاج شياو مينغ تثبيت Nginx على Ubuntu. بالغريزة فتح المتصفح وبحث عن "nginx download."

(2) apt يفعلها في سطر واحد

قال بوب: "تثبيت Nginx على Ubuntu يحتاج أمرًا واحدًا فقط."

BASH
sudo apt update
sudo apt install nginx -y

بعد 30 ثانية كان Nginx مثبتًا — الاعتماديات عُولجت تلقائيًا، وملفات الخدمة أُنشئت، والتشغيل مع بدء النظام خُصّص.

(3) الفائدة: مديرو الحزم غيّروا طريقة تثبيتنا

اكتشف شياو مينغ أن apt لا يثبّت البرامج فحسب بل يتعامل تلقائيًا مع كل علاقات الاعتمادية. لم يعُد يحمل ملفات exe أو dmg يدويًا.


3. نقاط المعرفة

(1) apt — مدير حزم Debian/Ubuntu

BASH
# تحديث قوائم مصادر الحزم
sudo apt update

# ترقية كل الحزم المثبتة
sudo apt upgrade -y

> 💡 نصيحة: `apt update && apt upgrade -y` هو المزيج الذهبي لصيانة النظام — `update` يحدّث قائمة مصادر الحزم، و`upgrade` يرقّي الحزم المثبتة. شغّل `update` دائمًا قبل تثبيت برامج جديدة، وإلا قد لا تجد أحدث إصدار.

# تثبيت برامج
sudo apt install nginx -y
sudo apt install curl wget git vim -y    # تثبيت عدة برامج دفعة واحدة

# إزالة برامج
sudo apt remove nginx                    # يحتفظ بملفات الإعدادات
sudo apt purge nginx                     # يحذف ملفات الإعدادات أيضًا

# بحث
apt search "web server"
apt show nginx                           # عرض معلومات الحزمة

# تنظيف
sudo apt autoremove                      # إزالة الاعتماديات غير اللازمة
sudo apt autoclean                       # تنظيف ذاكرة التحميل المؤقتة

(2) dpkg — تثبيت حزم deb المحلية

BASH
# تثبيت ملف .deb محلي
sudo dpkg -i package.deb

# إذا كانت اعتماديات مفقودة، أصلحها بـapt
sudo apt install -f

# عرض الحزم المثبتة
dpkg -l | grep nginx
dpkg -L nginx                           # عرض الملفات التي ثبّتها الحزمة

# إزالة
sudo dpkg -r package_name               # إزالة
sudo dpkg -P package_name               # إزالة كاملة (بما فيها ملفات الإعدادات)

(3) مصادر البرامج وPPA

BASH
# قائمة مصادر الحزم
cat /etc/apt/sources.list

# إضافة PPA (أرشيف حزم شخصي)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12

# ترتيب أولوية مصادر برامج Ubuntu
# 1. /etc/apt/sources.list
# 2. /etc/apt/sources.list.d/*.list

(4) snap/flatpak — الحزم المعزولة

BASH
# snap (مدمج في Ubuntu)
snap find "code"                         # بحث
sudo snap install code --classic         # تثبيت VS Code
sudo snap install lxd                    # تثبيت LXD
sudo snap refresh                        # تحديث كل حزم snap
sudo snap remove code                    # إزالة

# مميزات snap: تحديث تلقائي، عزل بصندوق رملي، عبر التوزيعات

ℹ️ ملاحظة: apt وsnap وflatpak هي ثلاث حلول تعبئة مختلفة — apt يثبّت حزم النظام الأصلية (أفضل أداء، أخف)، بينما snap/flatpak حزم معزولة (عزل أفضل، تحديثات تلقائية، لكن بدء أبطأ قليلًا واستهلاك قرص أكبر). فضّل apt للاستخدام اليومي؛ اختر snap/flatpak عندما تحتاج دعمًا عبر التوزيعات أو عزلًا بصندوق رملي.

(5) مديرو حزم على مستوى اللغة

TEXT
# Python
pip install requests                     # تثبيت حزمة Python
pip install -r requirements.txt          # تثبيت من ملف
pip list                                 # عرض الحزم المثبتة
pip uninstall requests                   # إزالة
pip freeze > requirements.txt            # تصدير الاعتماديات

# Node.js
npm install express                      # تثبيت حزمة
npm install -g typescript                # تثبيت عام
npm list                                 # عرض الحزم المثبتة
npx create-react-app my-app              # تشغيل دون تثبيت

# Rust
cargo install ripgrep                    # تثبيت أداة
cargo add serde                          # إضافة اعتمادية للمشروع

(6) ▶ مثال: عمليات apt الأساسية

BASH
# 1. تحديث مصادر الحزم
sudo apt update

# 2. تثبيت أدوات تطوير شائعة
sudo apt install -y build-essential curl wget git vim htop

# 3. البحث عن حزمة
apt search "text editor" | grep -i "vim\|nano"

# 4. عرض معلومات الحزمة
apt show htop

# 5. إزالة
sudo apt remove htop
sudo apt autoremove    # تنظيف الاعتماديات غير اللازمة

الإخراج:

TEXT
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Fetched 119 kB in 1s
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  build-essential curl wget git vim htop
0 upgraded, 6 newly installed, 0 to remove
Need to get 12.3 MB of archives.
Setting up build-essential (12.9ubuntu3) ...
Setting up curl (7.81.0-1) ...
vim - Vi IMproved - enhanced vi editor
htop - interactive processes viewer
Package: htop
Version: 3.0.5-7build2
Priority: optional
Section: utils
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  htop
0 upgraded, 0 newly installed, 1 to remove
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  libhwloc5
0 upgraded, 0 newly installed, 1 to remove

(7) ▶ مثال: تثبيت حزمة محلية بdpkg

BASH
# تحميل حزمة .deb الخاصة بـVS Code
wget https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64 -O code.deb

# تثبيت
sudo dpkg -i code.deb

# إذا أُبلغ عن مشاكل اعتماديات، أصلحها
sudo apt install -f

# عرض الملفات التي ثبّتها VS Code
dpkg -L code | head -20

الإخراج:

TEXT
--2026-07-07 10:23:01--  https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64
Resolving code.visualstudio.com... 20.190.159.4
HTTP request sent, awaiting response... 302 Found
Length: 95000000 (90M) [application/octet-stream]
Saving to: 'code.deb'
code.deb          100%[==========>] 90.51M  5.2MB/s    in 18s
Selecting previously unselected package code.
Setting up code (1.89.1-1716721786) ...
/usr/share/code/code
/usr/share/code/resources/app/package.json
/usr/share/code/resources/app/product.json
/usr/bin/code
/usr/share/applications/code.desktop
/usr/share/icons/hicolor/512x512/apps/code.png

(8) ▶ مثال: إضافة PPA لتثبيت إصدار أحدث من Python

BASH
# Ubuntu 22.04 الافتراضي هو Python 3.10؛ لتثبيت Python 3.12 تحتاج PPA
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-distutils

# تأكد
python3.12 --version

الإخراج:

TEXT
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Get:3 http://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy InRelease [23.8 kB]
Fetched 23.8 kB in 1s
Reading package lists... Done
The following NEW packages will be installed:
  python3.12 python3.12-venv python3.12-distutils
Setting up python3.12 (3.12.4-1+jammy1) ...
Python 3.12.4

(9) ▶ مثال: إدارة حزم Python بpip

BASH
# تثبيت إطار عمل Flask
pip install flask

# إنشاء قائمة اعتماديات
pip freeze > requirements.txt

# تثبيت نفس الاعتماديات على آلة أخرى
pip install -r requirements.txt

# تثبيت في دليل المستخدم (لا حاجة لـsudo)
pip install --user black

الإخراج:

TEXT
Collecting flask
  Downloading flask-3.0.3-py3-none-any.whl (101 kB)
Installing collected packages: flask
Successfully installed flask-3.0.3
flask==3.0.3
werkzeug==3.0.3
jinja2==3.1.4
Collecting black
  Downloading black-24.4.2-py3-none-manylinux1_x86_64.whl (2.2 MB)
Installing collected packages: black
Successfully installed black-24.4.2

(10) ▶ مثال: إيجاد مسارات الحزم المثبتة

BASH
# عرض أي الأدلة ثُبّت فيها nginx
dpkg -L nginx | head -10

# عرض ملفات إعدادات nginx
dpkg -L nginx | grep -E "\.conf$"

# إيجاد أي حزمة ينتمي إليها أمر
dpkg -S /usr/bin/htop
# htop: /usr/bin/htop

# عكسي — إيجاد أي حزمة ينتمي إليها ملف
dpkg -S /etc/nginx/nginx.conf
# nginx: /etc/nginx/nginx.conf

الإخراج:

TEXT
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default
/etc/nginx/sites-enabled/default
/usr/sbin/nginx
/var/www/html/index.html
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default
htop: /usr/bin/htop
nginx: /etc/nginx/nginx.conf

(11) ▶ مثال شامل: إعداد بيئة تطوير ويب من الصفر

BASH
#!/bin/bash
# setup-web-env.sh - إعداد بيئة تطوير ويب من الصفر

set -e

echo "=== Setting Up Web Development Environment ==="

# 1. تحديث النظام
echo ">>> Updating package sources..."
sudo apt update
sudo apt upgrade -y

# 2. تثبيت الأدوات الأساسية
echo ">>> Installing basic tools..."
sudo apt install -y build-essential curl wget git vim htop net-tools

# 3. تثبيت Nginx
echo ">>> Installing Nginx..."
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# 4. تثبيت Node.js
echo ">>> Installing Node.js 20..."
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

> ⚠️ تحذير: نمط `curl | bash` (تحميل سكريبت من الإنترنت وتنفيذه مباشرة) يحمل مخاطر هجوم سلسلة التوريد — إذا خُترق الخادم أو اختُطف DNS، فقد يُنفَّذ كود خبيث. على خوادم الإنتاج، حمّل السكريبت أولًا، وراجع محتواه، ثم نفذه، أو فضّل المستودعات الرسمية للتوزيعة.

# 5. تثبيت Python 3 + pip
echo ">>> Installing Python 3..."
sudo apt install -y python3 python3-pip python3-venv

# 6. تثبيت Docker
echo ">>> Installing Docker..."
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

# 7. تأكد
echo ""
echo "=== Environment Verification ==="
echo "Nginx: $(nginx -v 2>&1)"
echo "Node.js: $(node --version)"
echo "npm: $(npm --version)"
echo "Python: $(python3 --version)"
echo "Git: $(git --version)"
echo "Docker: $(docker --version)"

echo ""
echo "✅ Environment setup complete! Some changes (like Docker) require re-login to take effect."

❓ أسئلة شائعة

س: ما الفرق بين apt update وapt upgrade؟ ج: apt update يحدّث فهرس الحزم المحلي (قائمة الحزم المتاحة وإصداراتها). apt upgrade يرقّي فعليًا الحزم المثبتة لإصدارات أحدث. شغّل update دائمًا قبل upgrade.

س: ما الفرق بين apt remove وapt purge؟ ج: apt remove يزيل الحزمة لكن يحتفظ بملفات إعداداتها. apt purge يزيل الحزمة ويحذف ملفات إعداداتها أيضًا. استخدم purge إذا أردت إزالة نظيفة.

س: كيف أرى أي ملفات ثبّتها حزمة؟ ج: dpkg -L package_name يعرض كل الملفات التي ثبّتها حزمة. dpkg -S /path/to/file يفعل العكس — يجد أي حزمة ينتمي إليها ملف.

س: هل PPAs آمنة؟ ج: PPAs مصادر يديرها طرف ثالث بمستوى أمان أقل من المستودعات الرسمية. أضف فقط PPAs رسمية من مشاريع معروفة (مثل deadsnakes وnginx وgit-core). PPAs مجهولة تحمل مخاطر أمنية.

س: ماذا أفعل بشأن تعارضات الاعتماديات؟ ج: جرّب أولًا sudo apt install -f للإصلاح. إذا فشل، تحقق من تعارضات PPA (عطّل PPAs المتعارضة). كملاذ أخير، حمّل حزم .deb يدويًا وثبّتها بـdpkg -i.


📖 ملخص


📝 تمارين

  1. أساسي (⭐): استخدم apt لتثبيت htop وtree، وتأكد من التثبيت، ثم استخدم dpkg -L لعرض الملفات التي ثبّتها htop
  2. متوسط (⭐⭐): استخدم apt search "database" للبحث عن قاعدة بيانات وتثبيتها (مثل PostgreSQL أو SQLite)، ثم استخدم pip لتثبيت حزمة Python (مثل requests أو flask)
  3. متقدم (⭐⭐⭐): اكتب سكريبت إعداد بيئة بنقرة واحدة يثبّت git/vim/htop/nginx/nodejs/python3، ويتحقق مما إذا كانت كل أداة مثبتة فعلًا لتجنب التكرار، ويُخرج تقرير تأكد من الإصدارات في النهاية
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%