SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor · آخر تحديث في 2026-08-23

إصلاح تكرار مصادر apt وملفات deb822

هل تظهر لك رسالة Target is configured multiple times؟ تعرّف على ملفي .list و.sources في Ubuntu 24.04، واحتفظ بواحد منهما لتستعيد تحديثاً نظيفاً.

ما معنى خطأ تكرار مصادر apt

يعني تكرار مصادر apt أنّ مستودعاً واحداً مُعرَّف مرتين في ملفين مختلفين، وأنّ APT (أداة الحزم المتقدمة) عثر على التعريفين. في Ubuntu 24.04 والإصدارات الأحدث، يحدث ذلك غالباً لأنّ برنامج تثبيت من جهة خارجية أنشأ ملفاً قديماً من نوع السطر الواحد .list، بينما كان ملف من نوع deb822 .sources للمستودع نفسه موجوداً على القرص. لا يوجد تلف، ولا توجد حزم معرّضة للخطر. احذف أحد التعريفين، وتختفي الرسالة.

هذا هو السطر الذي ينسخه المستخدمون في مربع البحث:

W: Target Packages (stable/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list.d/docker.list:1 and /etc/apt/sources.list.d/docker.sources:1

اقرأه من النهاية. يعرّف ملفان، مع رقم سطر لكل منهما، الشيء نفسه. يمثّل Target Packages الفهرس الذي ينزّله apt لمعرفة الحزم التي يوفّرها المستودع، بينما يحدّد stable/binary-amd64/Packages المكوّن (stable) والبنية (amd64) اللذين يغطيهما ذلك الفهرس. لذلك يخبرك apt بأنّ فهرس amd64 للمكوّن stable مُعدّ في docker.list في السطر 1، ومُعدّ مرة أخرى في docker.sources في السطر 1.

في apt 3.0 والإصدارات الأحدث، أي Ubuntu 25.04 وما بعده وDebian 13، تبدأ الرسالة نفسها بـ Warning: بدلاً من W:. أما النص الذي يلي البادئة فهو نفسه.

هذا التحذير هو الحالة البسيطة. يدمج apt التعريفين، ويستمر التحديث، لأنّ كليهما يصف الأرشيف نفسه باستخدام المفتاح نفسه. أما الحالة الصعبة فتوقف العملية بالكامل:

E: Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/ubuntu/ noble: /usr/share/keyrings/docker-archive-keyring.gpg != /etc/apt/keyrings/docker.asc
E: The list of sources could not be read.

يرفض apt المتابعة هنا لأنّ التعريفين يحدّدان مفتاحي توقيع مختلفين لأرشيف واحد. يدمج التعريفين المتطابقين، لكنه لا يختار بين قيمتي Signed-By، لأنّ اختيار القيمة الخاطئة يعني التحقق من توقيعات الحزم باستخدام مفتاح لم يوقّع به مالك الأرشيف. لذلك لا يقرأ apt أي مصادر على الإطلاق. يفشل كل من apt update وapt install مع السطرين نفسيهما إلى أن تعدّل الملفين يدوياً.

كيفية ظهور النسخة المكررة

يوجد التنسيقان في ملفين منفصلين بامتدادات مختلفة، لذلك لا يمنع أي شيء على القرص وجودهما معاً. يلاحظ apt التداخل في مرحلة متأخرة، عندما يوسّع كل ملف مصدر إلى قائمة أهداف الفهارس التي يخطط لجلبها. حتى ذلك الحين، يكون docker.list وdocker.sources ملفين غير مرتبطين.

تنتج أربعة أحداث عادية هذا الزوج:

  • يكتب برنامج تثبيت من مورّد، أو أمر نسخته من مقالة قديمة، /etc/apt/sources.list.d/vendor.list ويضيف إليه سطر tee.
  • تشحن حزمة المورّد نفسها لاحقاً /etc/apt/sources.list.d/vendor.sources وتثبّتها نيابةً عنك.
  • ينشئ add-apt-repository في Ubuntu 24.04 والإصدارات الأحدث ملفات deb822 من نوع .sources، لذلك تعود PPA (أرشيف حزم شخصي) أضفتها يدوياً من قبل بصيغة .list على شكل .sources.
  • أعادت ترقية الإصدار كتابة مصادر التوزيعة نفسها بتنسيق deb822، وتركت ملف .list الذي أنشأته يدوياً دون تغيير إلى جانبها.

كل مسار معقول بمفرده. تظهر النسخة المكررة عندما يحدث مساران منهما على الخادم نفسه، وغالباً يفصل بينهما عدة أشهر.

الصيغان جنباً إلى جنب

الصيغة القديمة تستخدم سطراً واحداً لكل مستودع، وتكون كل أجزائه مرتبة بحسب موضعها.

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable

الترتيب ثابت: النوع (deb للحزم الثنائية، وdeb-src للحزم المصدرية)، ثم الخيارات بين قوسين مربعين، ثم URI (معرّف الموارد الموحّد) للأرشيف، ثم suite، ثم مكوّن واحد أو أكثر. وبما أنّ المعنى يعتمد على الموضع، فإن وضع مسافة في المكان الخطأ يغيّر ما يقرأه apt.

تعبّر deb822 عن الشيء نفسه في صورة مقطع يحتوي على حقول مسمّاة. جاء الاسم من RFC 822، وهو أسلوب ترويسة البريد الذي تستخدمه Debian مسبقاً لملفات التحكم بالحزم.

Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: amd64
Signed-By: /etc/apt/keyrings/docker.asc

المستودع نفسه، والمفتاح نفسه، من دون إضافة أي شيء. الربط مباشر: يتحول deb إلى Types، وعنوان الأرشيف إلى URIs، وsuite إلى Suites، والمكوّنات إلى Components، بينما يتحول كل خيار بين القوسين إلى حقل مستقل، لذلك يصبح signed-by= هو Signed-By:، ويصبح arch= هو Architectures:.

تأتي أسماء الحقول بصيغة الجمع لأن كل حقل يقبل قائمة مفصولة بمسافات. يستبدل Suites: noble noble-updates noble-backports في مقطع واحد ثلاثة أسطر deb منفصلة. تنهي السطر الفارغ مقطعاً، لذلك يمكن لملف .sources واحد أن يحتوي على عدة مستودعات. كما تحمل deb822 إعدادات تتعامل معها صيغة السطر الواحد بشكل ضعيف: Enabled: no لتعطيل مستودع، وTrusted، وCheck-Valid-Until، ومفتاحاً مضمنًا يُلصق مباشرة في Signed-By مع إزاحة كل سطر بمسافة واحدة وكتابة الأسطر الفارغة كنقطة واحدة.

مكان كل ملف

  • /etc/apt/sources.list: الملف الأصلي الوحيد. في Ubuntu 24.04 والإصدارات الأحدث يكون فارغاً عادةً أو يحتوي فقط على تعليق يشير إلى الموقع الجديد.
  • /etc/apt/sources.list.d/*.list: إدخالات من سطر واحد، وعادةً ما يكون هناك ملف واحد لكل مستودع.
  • /etc/apt/sources.list.d/*.sources: كتل deb822. تحتفظ Ubuntu 24.04 والإصدارات الأحدث بمستودعات التوزيعة الخاصة هنا، في ubuntu.sources.
  • /etc/apt/keyrings/: المكان المخصص للمفاتيح التي تضيفها. يحتوي /usr/share/keyrings/ على المفاتيح التي جاءت من حزمة.

يقرأ apt الملفات التي تنتهي فقط بـ .list أو .sources، ويمكن أن يحتوي اسم الملف على أحرف وأرقام وشرطة سفلية وشرطة ونقطة. يتخطى أي ملف ذي امتداد آخر مع عرض إشعار، وهذا مهم للإصلاح الوارد أدناه.

حدّد الزوج المكرر

ابدأ بعرض محتويات الدليل:

ls -l /etc/apt/sources.list.d/
-rw-r--r-- 1 root root  195 Aug  3 09:12 docker.list
-rw-r--r-- 1 root root  254 Aug  9 14:40 docker.sources
-rw-r--r-- 1 root root 2683 Jun 11 08:02 ubuntu.sources

الملفان اللذان لهما الاسم الأساسي نفسه وامتدادان مختلفان يشكّلان الزوج المعتاد، لكن لا تثق بالأسماء. اقرأ المحتوى، لأن التكرار قد يكون مخفياً في ملف يحمل أي اسم:

grep -rn -E '^(deb |deb-src |Types:|URIs:|Suites:|Signed-By:)' /etc/apt/sources.list /etc/apt/sources.list.d/
/etc/apt/sources.list.d/docker.list:1:deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu noble stable
/etc/apt/sources.list.d/docker.sources:1:Types: deb
/etc/apt/sources.list.d/docker.sources:2:URIs: https://download.docker.com/linux/ubuntu
/etc/apt/sources.list.d/docker.sources:3:Suites: noble
/etc/apt/sources.list.d/docker.sources:6:Signed-By: /etc/apt/keyrings/docker.asc

الزوج هو الإدخالان اللذان لهما المضيف نفسه ومجموعة الحزم نفسها. كلاهما يشيران إلى https://download.docker.com/linux/ubuntu وإلى المجموعة noble، ولذلك فهما المستودع نفسه مكتوباً مرتين. كما أن مسارات Signed-By فيهما مختلفة، وهذا ما ينتج الخطأ Conflicting values المعروض سابقاً.

استخدم grep بدلاً من أمر apt في هذه الخطوة. عندما يتوقف apt بسبب التعارض، لا يستطيع أيضاً عرض مصادر الحزم، ولذلك يطبع apt-cache policy الخطأ نفسه بدلاً من النتيجة التي تريدها.

إصلاح المشكلة: أبقِ ملف deb822 وأزل الملف القديم

أبقِ على ملف .sources. فهذا هو التنسيق الذي تكتبه أدوات apt حالياً، وهو الاتجاه الذي تتبعه Debian وUbuntu. قبل حذف أي شيء، تحقّق من أيٍّ من المسارين الأساسيين موجود على القرص:

ls -l /etc/apt/keyrings/ /usr/share/keyrings/ | grep -i docker
-rw-r--r-- 1 root root 4813 Aug  9 14:40 docker.asc

الملف /etc/apt/keyrings/docker.asc فقط هو الموجود، لذلك فإن ملف deb822 هو الذي يعكس الحالة الصحيحة، بينما يشير ملف .list إلى مفتاح تمت إزالته. إذا تبيّن أن الملف الذي تخطط للاحتفاظ به يذكر المفتاح المفقود، فانسخ المسار العامل إليه أولاً، ثم احذف الملف الآخر.

انقل الملف القديم خارج الدليل بدلاً من حذفه مباشرة:

sudo mkdir -p /root/apt-sources-backup
sudo mv /etc/apt/sources.list.d/docker.list /root/apt-sources-backup/
sudo apt update

يمكنك أيضاً إعادة تسميته إلى docker.list.bak وتركه في مكانه، لأن apt يتجاهل الامتدادات غير المعروفة، لكن كل تشغيل لـapt سيطبع ما يلي:

N: Ignoring file 'docker.list.bak' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

يؤدي نقل الملف إلى مكان آخر إلى منع ظهور هذا التنبيه على الشاشة، مع الاحتفاظ بالنسخة الاحتياطية. يجب أن يبدو ملف apt update السليم بعد ذلك كما يلي، من دون أي سطر يسمّي ملفين:

Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 https://download.docker.com/linux/ubuntu noble InRelease [48.8 kB]
Get:3 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Fetched 175 kB in 1s (146 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

تحقّق الآن من أن المستودع ما زال يعمل بعد التعديل:

apt-cache policy | grep download.docker.com
 500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     origin download.docker.com

إذا كانت وثائق أحد المورّدين لا تزال تفترض استخدام الملف ذي السطر الواحد، فيمكنك الاحتفاظ بهذا الملف وحذف ملف .sources بدلاً منه. القاعدة الحاسمة في الحالتين هي: لا يجوز لأكثر من ملف واحد تعريف archive وsuite معيّنين.

لماذا يتسبب مصدر تابع لجهة خارجية معطّل في تعطيل apt update بالكامل

يبدو العطل المجاور مختلفاً، لكن سببه الجذري نفسه: مصدر تابع لجهة خارجية لا يستطيع apt استخدامه. الإصدار الأول ينتج عن فقدان مفتاح:

Err:5 https://download.docker.com/linux/ubuntu noble InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://download.docker.com/linux/ubuntu noble InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

الحقل Signed-By مفقود، أو يشير إلى ملف لا يحتوي على مفتاح صالح للاستخدام، لذلك لا يستطيع apt التحقق من توقيع ملف InRelease الخاص بالأرشيف. عندها يتجاهل المستودع بأكمله بدلاً من الوثوق بقوائم حزم لا يستطيع التحقق منها. افحص ملف المفتاح نفسه:

ls -l /etc/apt/keyrings/docker.asc
gpg --show-keys /etc/apt/keyrings/docker.asc

يطبع المفتاح الصالح سطراً pub يتضمن معرّف المفتاح، وسطراً uid يذكر اسم المورّد. يشير gpg: no valid OpenPGP data found. إلى أن الملف ليس مفتاحاً أصلاً، وهذا يعني عادةً أن التنزيل حفظ صفحة خطأ لأن عنوان URL الخاص بالمفتاح تغيّر. نزّل المفتاح مرة أخرى، وافحص الملف، ثم شغّل apt update.

يظهر الإصدار الثاني بعد ترقية الإصدار:

Err:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu plucky InRelease
  404  Not Found [IP: 10.0.0.80 443]
E: The repository 'https://ppa.launchpadcontent.net/ondrej/php/ubuntu plucky Release' does not have a Release file.

لم ينشر PPA أي شيء لهذه المجموعة، لذلك لا يوجد المسار على الخادم ويعيد الطلب الحالة 404. تستمر مستودعاتك الأخرى في التحديث، ولا تتأثر الحزم الموجودة لديك. لكن التنفيذ ينتهي بحالة غير صفرية، ولذلك يبلّغ أي برنامج نصي يتحقق من حالة خروج apt update عن فشل في كل مرة يُشغَّل فيها. لهذا السبب يستحق المصدر المتوقف الإزالة على خادم مفعّلة عليه ترقيات الأمان غير التفاعلية: ففي الضجيج اليومي قد يختبئ عطل حقيقي. تصطدم برامج تثبيت المورّدين بكلا الإصدارين من هذا العطل، ولذلك يتضح أن معظم أخطاء تثبيت Tailscale على Ubuntu تنتج عن keyring لم يكتبه البرنامج النصي مطلقاً، أو عن اسم إصدار لا يدعمه الأرشيف.

تعطيل مصدر واحد من دون التأثير في بقية المصادر

في ملف deb822، أضف حقلاً واحداً إلى المقطع ثم احفظه:

Types: deb
URIs: https://ppa.launchpadcontent.net/ondrej/php/ubuntu
Suites: plucky
Components: main
Signed-By: /etc/apt/keyrings/ondrej-php.asc
Enabled: no

يوصي دليل apt بهذا الأسلوب بدلاً من وضع تعليق على كل سطر في المقطع، كما أن التراجع عنه أسهل. بالنسبة إلى ملف يحتوي على سطر واحد، ضع # في بداية السطر. وفي كلتا الصيغتين، يمكنك أيضاً نقل الملف خارج /etc/apt/sources.list.d/. استخدم هذا الخيار عندما يُزال المستودع نهائياً.

شغّل sudo apt update مرة أخرى. يختفي مقطع Err: الخاص بذلك المستودع، وتعود حالة الخروج إلى 0. يمكنك التحقق من ذلك باستخدام echo $? في السطر التالي.

لا تصلح مصدراً معطلاً باستخدام sudo rm /etc/apt/sources.list.d/*. في Ubuntu 24.04 والإصدارات الأحدث، يحذف ذلك ubuntu.sources، الذي يحتوي على مستودعات التوزيعة نفسها. عندها لا يبقى لدى apt أي قوائم حزم، ويعرض E: Unable to locate package curl للبرامج الموجودة بوضوح. إذا شغّلت هذا الأمر، فأعد كتابة الملف:

Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

احفظه باسم /etc/apt/sources.list.d/ubuntu.sources، مع استبدال noble باسم إصدارك كما يظهر في lsb_release -cs، ثم شغّل sudo apt update.

حوِّل ملفات .list القديمة إلى deb822

اعتباراً من August 2026، تتضمن إصدارات apt 3.0 والأحدث أداة لتحويل هذه الملفات. تتضمنها Debian 13، وكذلك Ubuntu 25.04 وكل إصدار لاحق، بما في ذلك 26.04. تحقّق من الإصدار، ثم شغّل الأمر:

apt --version
sudo apt modernize-sources

يعيد الأمر كتابة الملفات ذات السطر الواحد الموجودة ضمن /etc/apt/sources.list.d/ بصيغة ملفات deb822 الموجودة ضمن .sources. اقرأ ما يطبعه الأمر، ثم اعرض محتويات الدليل بنفسك وشغّل apt update قبل أن تثق بالنتيجة. تتضمن Ubuntu 24.04 إصداراً أقدم من apt لا يحتوي على هذا الأمر الفرعي، ويُرجع الأمر فيه E: Invalid operation modernize-sources. في ذلك الإصدار، أجرِ التحويل يدوياً باستخدام تعيين الحقول الوارد أعلاه.

التحويل اختياري حالياً، لأن apt ما زال يقرأ الصيغتين. لكنه مفيد على الخادم الذي تنوي الإبقاء عليه، لأن كل أداة تكتب مصادر الحزم تكتب الآن بصيغة deb822، ولأن النظام الذي يحتوي على ملفات .sources فقط لا يمكنه إنشاء هذا النوع من التكرار.

نظّم مصادر الجهات الخارجية على الخادم

تُعد مستودعات الجهات الخارجية من أكثر أجزاء الخادم تعرضاً للتقادم. فكل مستودع منها يمثل التزاماً من جهة أخرى بمواصلة النشر لإصدار Ubuntu لديك، وتختبر ترقية الإصدار كل هذه الالتزامات في الوقت نفسه.

  • أضف مستودع جهة خارجية فقط عندما لا تفي حزمة التوزيعة بالغرض. لا يحتاج مكدس LAMP على Ubuntu 24.04 إلى أي مستودع منها: إذ يحتوي أرشيف Ubuntu على كل الحزم التي يستخدمها، مع تحديثات أمنية طوال مدة دعم الإصدار.
  • احتفظ بالمفاتيح في /etc/apt/keyrings/، بمعدل ملف واحد لكل مورّد، وبالوضع 644. ينفّذ المستخدم غير المميّز _apt عملية التنزيل ويحتاج إلى قراءة المفتاح، لذلك يؤدي جعل ملف المفتاح قابلاً للقراءة من root فقط إلى ظهور خطأ صلاحيات عند كل عملية جلب من ذلك المستودع.
  • وجّه Signed-By إلى ذلك الملف تحديداً في كل stanza. فإذا كان المفتاح موجوداً في /etc/apt/trusted.gpg أو /etc/apt/trusted.gpg.d/، فسيُوثق به لكل مستودع على الخادم، ما يعني أن مفتاح مورّد أُضيف قبل سنوات يمكنه التحقق من حزم من أي مصدر.
  • قبل ترقية الإصدار، اقرأ مصادر الحزم وتحقق من أن كل مورّد ينشر بالفعل للإصدار المستهدف الذي ستنتقل إليه.

يعلن مفتاح موجود في keyring العام القديم عن نفسه أثناء كل تحديث:

W: https://download.docker.com/linux/ubuntu/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

صدّر ذلك المفتاح وحده إلى ملف خاص به، ثم وجّه stanza إليه:

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export 7EA0A9C3F273FCD8 | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
sudo chmod 644 /etc/apt/keyrings/docker.gpg

أضف Signed-By: /etc/apt/keyrings/docker.gpg إلى stanza الخاص بالمستودع، وشغّل sudo apt update. يتوقف التحذير عندما لا يعود أي مستودع يعتمد على keyring القديم، ويمكنك بعد ذلك حذف الإدخال باستخدام sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --delete-key 7EA0A9C3F273FCD8.

هناك عادة أخرى تقلل المشكلات بدرجة كبيرة. يعطّل do-release-upgrade مصادر الجهات الخارجية أثناء الترقية ويتركها معطّلة بعدها، وإعادة تفعيلها يدوياً، واحداً تلو الآخر، هي تحديداً المرحلة التي تُنشأ فيها التصريحات المكررة. اقرأ دليل الترقية من Ubuntu 24.04 إلى 26.04 قبل البدء، وسجّل المستودعات التي ما زلت تحتاج إليها. على جهاز أنشأته للتو، يكون تصحيح المصادر بأقل تكلفة خلال الدقائق العشر الأولى على VPS جديد، عندما تكون الإدخالات الموجودة على الخادم هي فقط التي أصدرتها Ubuntu.

FAQ

لماذا يقول apt إن الهدف مهيأ عدة مرات؟

لأن ملفين ضمن /etc/apt/sources.list.d/ يعرّفان المستودع نفسه والمجموعة والمكوّن نفسيهما. تعرض الرسالة اسمي الملفين مع أرقام الأسطر، مثل docker.list:1 وdocker.sources:1. يدمجهما apt ويتابع العمل، لذلك ينجح التحديث نفسه. مع ذلك، من الأفضل إزالة التكرار. فبمجرد أن يحدّد الملفان مفاتيح توقيع مختلفة، يتوقف apt مع E: Conflicting values set for option Signed-By ويرفض قراءة أي مصدر، ما يمنع apt install أيضاً.

هل أحتفظ بملف .list أم ملف .sources؟

احتفظ بملف .sources. تنسيق deb822 هو ما يكتبه add-apt-repository في Ubuntu 24.04 والإصدارات الأحدث. ويحتوي على حقل مسمّى واحد لكل إعداد بدلاً من نص موضعي داخل أقواس مربعة. كما أنه التنسيق الذي تتجه إليه التوزيعات. قبل حذف ملف .list، تأكد من أن مسار Signed-By داخل ملف .sources يشير إلى مفتاح موجود، باستخدام ls -l /etc/apt/keyrings/. انقل الملف القديم خارج /etc/apt/sources.list.d/ بدلاً من إعادة تسميته داخل الدليل، لأن بقاء اسم .bak يجعل apt يعرض إشعاراً عن ملف متجاهَل في كل تشغيل.

كيف أعطّل مستودع apt واحداً من دون حذفه؟

في ملف .sources بتنسيق deb822، أضف Enabled: no إلى المقطع. وفي ملف .list ذي السطر الواحد، ضع # في بداية السطر. في كلتا الحالتين، شغّل sudo apt update بعد ذلك، وسيختفي قسم Err: الخاص بذلك المستودع. هذا هو الإجراء الصحيح عندما لا يحتوي مستودع تابع لجهة خارجية على حزم لإصدار Ubuntu لديك بعد، ويجعل خطأ 404 الأمر apt update ينتهي بحالة غير صفرية.

هل سيختفي تنسيق sources.list ذي السطر الواحد؟

إنه مهجور، لكنه لم يُزل. ما زال apt يقرأ ملفات .list وسيستمر في ذلك فترة طويلة، لذلك لن يتعطل شيء على خادمك غداً. تكتب الأدوات الجديدة بتنسيق deb822. تحتفظ Ubuntu 24.04 والإصدارات الأحدث بمستودعات التوزيعة في /etc/apt/sources.list.d/ubuntu.sources، ويكتب add-apt-repository ملفات .sources. في apt 3.0 والإصدارات الأحدث، يحوّل sudo apt modernize-sources الملفات التي ما زالت لديك.

#apt#ubuntu#deb822#package-management#troubleshooting