ورقة مرجعية

أوامر apt: تثبيت الحزم وتحديثها وحذفها في Ubuntu وDebian

آخر تحديث: · Skillaria.Top

apt هو مدير الحزم في Ubuntu وDebian: يحدّث الأمر sudo apt update قوائم الحزم، ويثبّت sudo apt upgrade التحديثات، ويثبّت sudo apt install اسم-الحزمة الحزمة، ويحذفها sudo apt remove (وpurge مع إعداداتها)، ويزيل apt autoremove التبعيات غير المستخدمة. للبحث عن حزمة تُستخدم apt search وapt show، ولإصلاح التبعيات المكسورة sudo apt --fix-broken install.

apt هو مدير الحزم القياسي في Ubuntu وDebian والتوزيعات المشتقة منهما (Linux Mint وPop!_OS). يحمّل البرامج من المستودعات، ويسحب التبعيات تلقائياً، ويحدّث النظام بأمر واحد. فيما يلي أوامر apt التي تحتاجها في العمل اليومي، مجمّعة حسب المهام، مع الأخطاء الشائعة وحلولها.

كيف يعمل apt

الحزمة هي أرشيف .deb يحتوي على البرنامج وبياناته الوصفية وقائمة تبعياته. والمستودعات خوادم تُخزَّن فيها الحزم، وعناوينها مكتوبة في /etc/apt/sources.list وفي المجلد /etc/apt/sources.list.d/. يحتفظ apt بنسخة محلية من قائمة الحزم المتاحة ويرجع إليها عند التثبيت، لذلك يجب تحديثها بانتظام.

يستدعي apt في الخلفية الأداة منخفضة المستوى dpkg التي تفكّ الحزم وتسجّلها، لكنها لا تحل التبعيات. وأوامر apt-get وapt-cache هي الواجهة القديمة بالوظائف نفسها: مخرجاتها ثابتة ومناسبة للسكريبتات. أما apt فهو غلاف أحدث موجّه للإنسان: شريط تقدم، وألوان، وأوامر أقصر.

معظم الأوامر التي تغيّر النظام تحتاج صلاحيات المدير، لذلك تُنفَّذ عبر sudo. أما البحث وعرض المعلومات فيعملان دونه.

مرجع سريع: أهم أوامر apt

الأمرما يفعله
sudo apt updateتحديث قوائم الحزم من المستودعات
sudo apt upgradeتثبيت التحديثات دون حذف الحزم
sudo apt full-upgradeتحديث مع حذف الحزم أو استبدالها عند الحاجة
sudo apt install الحزمةتثبيت الحزمة مع تبعياتها
sudo apt reinstall الحزمةإعادة تثبيت الحزمة
sudo apt remove الحزمةحذف الحزمة مع إبقاء الإعدادات
sudo apt purge الحزمةحذف الحزمة مع إعداداتها النظامية
sudo apt autoremoveحذف التبعيات التي لم تعد لازمة
apt search كلمةالبحث عن حزمة بالاسم والوصف
apt show الحزمةالوصف والإصدار والتبعيات والحجم
apt list --installedقائمة الحزم المثبتة
apt list --upgradableما يمكن تحديثه
apt policy الحزمةالإصدار المثبت والإصدارات المتاحة ومصادرها
sudo apt cleanتنظيف ذاكرة التخزين المؤقت لملفات .deb
sudo apt --fix-broken installإصلاح التبعيات المكسورة

apt update وapt upgrade: كيف تحدّث النظام

هاتان عمليتان مختلفتان، وكثيراً ما يخلط بينهما الناس. لا يثبّت apt update أي شيء: بل ينزّل قوائم الحزم الحديثة فقط. أما apt upgrade فيثبّت الإصدارات الجديدة من البرامج المثبتة، معتمداً على تلك القوائم.

$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
...
12 packages can be upgraded. Run 'apt list --upgradable' to see them.

$ apt list --upgradable
$ sudo apt upgrade

التركيبة المعتادة للخادم في سطر واحد مع تأكيد تلقائي:

sudo apt update && sudo apt upgrade -y

الفرق بين upgrade وfull-upgrade

لا يحذف apt upgrade أي حزمة مثبتة أبداً، لكنه قد يثبّت تبعيات جديدة. وإذا كان التحديث يتطلب حذف شيء ما (مثل تغيير إصدار النواة أو مكتبة)، فستُؤجَّل هذه الحزم، وتظهر في المخرجات عبارة The following packages have been kept back. أما apt full-upgrade (وهو ما يعادل apt-get dist-upgrade) فيسمح بالحذف ويُكمل التحديث. قبل تشغيله اقرأ جيداً ما الذي ينوي apt حذفه.

تحديث حزمة واحدة فقط

sudo apt install --only-upgrade nginx

إذا لم تكن الحزمة مثبتة، فإن الأمر مع --only-upgrade لن يثبّتها، وهذا يحميك من التثبيت العرضي.

apt install: تثبيت الحزم

sudo apt install nginx                 # حزمة واحدة
sudo apt install git curl htop         # عدة حزم معاً
sudo apt install -y docker.io          # دون سؤال Y/n
sudo apt install nginx=1.24.0-2ubuntu7 # إصدار محدد
sudo apt install --no-install-recommends ffmpeg  # دون الحزم الموصى بها
sudo apt install ./google-chrome-stable_current_amd64.deb  # ملف .deb محلي

يعرض apt قبل التثبيت الحزم التي ستُضاف وحجمها الإجمالي، ويطلب التأكيد. والخيار -y يجيب بـ«نعم» تلقائياً، وهو مناسب للسكريبتات وملفات Dockerfile، أما في العمل التفاعلي فمن الأفضل قراءة القائمة.

افتراضياً يثبّت apt التبعيات الإلزامية (Depends) والموصى بها (Recommends). وعلى الخوادم والحاويات يقلل --no-install-recommends الحجم بشكل ملحوظ.

تثبيت ملف .deb: apt أم dpkg -i

الأفضل تثبيت ملف .deb المنزَّل عبر apt install ./ملف.deb، ويجب أن يبدأ المسار بـ ./ أو يكون مساراً كاملاً، وإلا فسيبحث apt عن حزمة بهذا الاسم في المستودع. وعلى عكس dpkg -i، يُنزّل apt التبعيات الناقصة تلقائياً. وإذا ثبّت الحزمة عبر dpkg وظهر خطأ في التبعيات، فيصلحه sudo apt --fix-broken install.

sudo dpkg -i package.deb
sudo apt --fix-broken install

apt remove وpurge وautoremove: حذف الحزم

الأمرالبرنامجالإعدادات في /etcالتبعيات
apt removeيُحذفتبقىتبقى
apt purgeيُحذفتُحذفتبقى
apt autoremove——تُحذف غير اللازمة
sudo apt remove nginx
sudo apt purge nginx            # والإعدادات معها
sudo apt autoremove             # بقايا التبعيات
sudo apt autoremove --purge     # البقايا مع إعداداتها

يناسب remove الحالة التي تنوي فيها إعادة البرنامج لاحقاً وتريد الاحتفاظ بإعداداته. أما purge فللإعادة الكاملة من الصفر. وانتبه إلى أن الملفات في المجلد الشخصي للمستخدم (مثل ~/.config) لا يحذفها أي من هذه الأوامر.

لمعرفة الحزم المحذوفة التي بقيت إعداداتها تُظهر حالتها rc:

dpkg -l | grep '^rc'

البحث عن الحزم ومعلوماتها

apt search postgresql          # بحث بالاسم والوصف
apt search --names-only '^php8' # بالاسم فقط، مع تعبير نمطي
apt show htop                  # الإصدار والحجم والتبعيات والوصف
apt policy docker.io           # الإصدارات المتاحة ومصدرها
apt list --installed | grep python3
apt-cache depends curl         # ما الذي تعتمد عليه الحزمة
apt-cache rdepends libssl3     # من يعتمد على الحزمة

أي حزمة تملك هذا الملف

$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl

$ dpkg -L curl        # الملفات التي ثبّتتها الحزمة

إذا لم يكن الأمر موجوداً في النظام، فإن Ubuntu ستقترح عند محاولة تشغيله الحزمة المناسبة (رسالة مثل Command 'tree' not found, but can be installed with: sudo apt install tree). وللبحث في الملفات داخل الحزم غير المثبتة توجد الأداة apt-file: apt-file search bin/dig بعد تنفيذ sudo apt-file update.

تثبيت إصدار ثابت: apt-mark hold

أحياناً لا يجوز تحديث حزمة معينة، مثل إصدار قاعدة بيانات أو نواة في بيئة الإنتاج، إذ يجب أن يتم تغييرهما يدوياً فقط. لذلك تُجمَّد الحزمة (hold):

sudo apt-mark hold postgresql-16
apt-mark showhold
sudo apt-mark unhold postgresql-16

زوج مفيد آخر هو apt-mark manual وapt-mark auto. الحزم التي تُثبَّت كتبعية تُوسَم تلقائياً، وتدخل في نطاق autoremove حين لا تعود لازمة. أما الوسم manual فيحمي الحزمة من ذلك.

المستودعات: كيف تضيفها وأين توجد

قائمة المصادر موجودة في /etc/apt/sources.list وفي الملفات /etc/apt/sources.list.d/*.list. وفي Ubuntu 24.04 وDebian 12 فما بعد يُستخدم أكثر فأكثر تنسيق deb822 بامتداد .sources (مثل /etc/apt/sources.list.d/ubuntu.sources).

مستودع خارجي مع مفتاح

الطريقة الحديثة هي حفظ مفتاح المستودع في ملف مستقل وربطه عبر signed-by. الأمر apt-key قديم وقد أُزيل في الإصدارات الجديدة.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce

PPA في Ubuntu

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo add-apt-repository --remove ppa:deadsnakes/ppa

مستودعات PPA شخصية على Launchpad. فعّل فقط ما تثق به، فالحزم منها تُثبَّت بصلاحيات root.

الذاكرة المؤقتة والمساحة على القرص

تبقى الحزم التي نُزّلت في /var/cache/apt/archives/. على الأقراص الصغيرة وفي صور Docker يُستحسن تنظيف هذه الذاكرة.

du -sh /var/cache/apt/archives
sudo apt clean          # حذف كل ذاكرة .deb المؤقتة
sudo apt autoclean      # حذف الإصدارات القديمة فقط

في ملف Dockerfile يُكتب التثبيت في طبقة واحدة مع حذف قوائم الحزم فوراً:

RUN apt-get update \
 && apt-get install -y --no-install-recommends curl ca-certificates \
 && rm -rf /var/lib/apt/lists/*

في السكريبتات يُستخدم apt-get وليس apt، لأن واجهة apt غير ثابتة، وهو يحذّر من ذلك صراحةً (WARNING: apt does not have a stable CLI interface). ولكي لا يطرح المثبّت أسئلة، تُضاف DEBIAN_FRONTEND=noninteractive.

الأخطاء الشائعة في apt وكيفية إصلاحها

Could not get lock /var/lib/dpkg/lock-frontend

توجد عملية أخرى تعمل على الحزم: نافذة طرفية ثانية فيها apt، أو «مركز التطبيقات»، أو التحديثات التلقائية في الخلفية unattended-upgrades. انتظر بضع دقائق وتحقق من العملية التي تحجز القفل:

ps aux | grep -E 'apt|dpkg'

لا تحذف ملفات القفل يدوياً ما دامت العملية حية، فالتثبيت المقطوع قد يترك النظام في حالة غير متسقة. وإذا كانت العملية معلقة أو توقفت فعلاً، فبعد انتهائها نفّذ sudo dpkg --configure -a.

Unable to locate package

لم يجد apt الحزمة. غالباً لم تنفّذ sudo apt update على نظام جديد، أو أخطأت في الاسم، أو أن الحزمة في مكوّن معطّل (universe في Ubuntu). يُفعَّل المكوّن بالأمر sudo add-apt-repository universe.

Unmet dependencies / held broken packages

التبعيات غير متوافقة، وهذا يحدث عادةً بعد تثبيت ملف .deb يدوياً أو خلط مستودعات من إصدارات مختلفة للتوزيعة.

sudo apt --fix-broken install
sudo dpkg --configure -a
apt policy الحزمة-المشكلة

dpkg was interrupted

انقطع التثبيت (أُغلقت الطرفية أو انقطعت الكهرباء). وتذكر الرسالة الحل بنفسها: sudo dpkg --configure -a.

NO_PUBKEY عند apt update

مفتاح توقيع المستودع الخارجي غير موجود أو قديم. حمّل المفتاح الحديث من موقع المشروع إلى /etc/apt/keyrings/ واربطه عبر signed-by، كما في مثال Docker أعلاه.

التحديثات الأمنية التلقائية

يأتي Ubuntu Server افتراضياً بالحزمة unattended-upgrades التي تثبّت التحديثات الأمنية تلقائياً. للتحقق منها وتفعيلها:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log

هل يلزم إعادة التشغيل بعد التحديث؟ يخبرك بذلك الملف /var/run/reboot-required: إذا كان موجوداً فقد حُدّثت النواة أو مكتبات أساسية.

الخلاصة

تتلخص أوامر apt الأساسية في دورة قصيرة: update قبل أي عمل، وinstall للتثبيت، وupgrade للتحديث، وremove أو purge للحذف، وautoremove للتنظيف. وللإصدارات هناك apt policy وapt-mark hold، وللأعطال --fix-broken install وdpkg --configure -a، وفي السكريبتات استخدم apt-get. وتُشرح إدارة الحزم عملياً في دورة Linux.

الأسئلة الشائعة

ما الفرق بين apt وapt-get؟

كلاهما واجهة لنظام الحزم نفسه. يُعد apt أنسب للعمل في الطرفية (شريط تقدم، وألوان، وأوامر قصيرة)، أما apt-get فمخرجاته ثابتة ويُوصى به في السكريبتات وملفات Dockerfile.

هل يلزم تنفيذ apt update قبل كل تثبيت؟

يُستحسن ذلك إذا لم تُحدَّث القوائم منذ فترة، وإلا فقد لا يجد apt الحزمة، أو يحاول تنزيل إصدار لم يعد موجوداً على الخادم فيظهر خطأ 404.

كيف أرى سجل تثبيتات apt وحذفها؟

يُكتب السجل في /var/log/apt/history.log (والسجلات القديمة في الأرشيف history.log.N.gz)، أما السجل التفصيلي لـ dpkg فيُكتب في /var/log/dpkg.log.

كيف أعود إلى إصدار أقدم من حزمة؟

اعرض الإصدارات المتاحة بالأمر apt policy الحزمة، ثم ثبّت الإصدار المطلوب بالأمر sudo apt install الحزمة=الإصدار، وبعدها جمّده بـ apt-mark hold حتى لا يعيده التحديث التالي إلى الإصدار الجديد.

هل يمكن استخدام apt في CentOS أو Fedora؟

لا، فهناك صيغة حزم مختلفة (rpm) ومديرا حزم خاصان بها هما dnf وyum. يعمل apt في Debian وUbuntu والتوزيعات المشتقة منهما فقط.

تعلّم هذا الموضوع بالفيديو

يُشرح هذا الموضوع بالتفصيل مع التطبيق العملي في دورة «Linux: с нуля до уверенного администрирования».

الانتقال إلى الدورة