حل خطأ تكرار مصادر apt وملفات deb822
هل يظهر الخطأ Target is configured multiple times؟ اعثر على ملفَي .list و.sources للمستودع نفسه، واحتفظ بواحد فقط لاستعادة apt update نظيف.
ما الذي يعنيه خطأ مصادر 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 والإصدارات الأحدث ملفات.sourcesبتنسيق deb822، لذلك يعود 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 (معرّف المورد الموحّد) للأرشيف، ثم مجموعة الحزم، ثم مكوّن واحد أو أكثر. وبما أنّ المعنى يعتمد على الموضع، فإن وضع مسافة في المكان الخطأ يغيّر ما يقرأه 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، وتصبح مجموعة الحزم هي 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، ويمكن أن يحتوي اسم الملف على الأحرف والأرقام والشرطة السفلية والواصلة والنقطة. يتجاهل apt أي ملف له امتداد آخر مع عرض إشعار، وهذا مهم للإصلاح أدناه.
حدّد الزوج المكرر
ابدأ بعرض محتويات الدليل:
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 بدلاً منه. القاعدة واحدة في كلتا الحالتين: لا يجوز أن يعرّف أكثر من ملف واحد الأرشيف و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. تستمر مستودعاتك الأخرى في التحديث، ولا تتأثر الحزم المثبتة لديك. لكن العملية تنتهي برمز غير صفري، ولذلك يعرض أي script يتحقق من حالة خروج apt update فشلاً في كل مرة يعمل فيها. لهذا السبب يستحق مصدر متوقف واحد المعالجة على خادم مهيّأ لإجراء ترقيات الأمان غير التفاعلية: ففي الضوضاء اليومية قد يختفي الفشل الحقيقي.
تعطيل مصدر واحد دون التأثير في بقية المصادر
في ملف 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، تأكد باستخدام ls -l /etc/apt/keyrings/ من أن المسار Signed-By داخل ملف .sources يشير إلى مفتاح موجود. انقل الملف القديم خارج /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 الملفات التي ما زالت لديك.