SSD Nodes Learn Hosting plans →
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-08-31

תיקון שגיאת מקורות apt כפולים וקבצי deb822

נתקלתם בשגיאת Target is configured multiple times בעת הרצת apt update? המדריך מסביר כיצד לאתר קבצי .list ו-.sources כפולים ב-Ubuntu 24.04 ומעלה ולנקות את הגדרות המאגרים.

מה משמעות השגיאה על מקורות apt כפולים

שגיאת מקורות apt כפולים מציינת שמאגר מסוים הוגדר פעמיים, בשני קבצים שונים, וכי APT (כלי החבילות המתקדם) זיהה את שני העותקים. בגרסאות Ubuntu 24.04 ומעלה, הדבר קורה כמעט תמיד משום שסקריפט התקנה של צד שלישי יצר קובץ .list ישן בשורה אחת, בעוד שקובץ .sources בפורמט deb822 עבור אותו מאגר כבר היה קיים בדיסק. שום דבר אינו פגום ואף חבילה אינה נמצאת בסיכון. מחקו את אחת משתי ההגדרות וההודעה תיעלם.

זו השורה שאנשים מדביקים בתיבת החיפוש:

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 מציג את אותו המידע כבית (stanza) של שדות בעלי שם. השם מגיע מ-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, ומפתח מוטבע (inline) המודבק ישירות לתוך Signed-By, כאשר כל שורה מוזחת ברווח אחד ושורות ריקות נכתבות כנקודה בודדת.

מיקום הקבצים

  • /etc/apt/sources.list: הקובץ המקורי היחיד. בגרסאות Ubuntu 24.04 ומעלה הוא בדרך כלל ריק או מכיל רק הערה המפנה למיקום החדש.
  • /etc/apt/sources.list.d/*.list: רשומות בשורה אחת, בדרך כלל קובץ אחד לכל מאגר (repository).
  • /etc/apt/sources.list.d/*.sources: בתים (stanzas) בפורמט 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

הזוג הוא שני הערכים עם אותו host ואותה suite. שניהם מצביעים על https://download.docker.com/linux/ubuntu ועל ה-suite בשם noble, לכן מדובר באותו מאגר (repository) שרשום פעמיים. גם נתיבי ה-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. שאר המאגרים שלכם עדיין מתעדכנים, והחבילות שכבר יש לכם נותרות ללא שינוי. עם זאת, ההרצה מסתיימת עם קוד שגיאה שאינו אפס, כך שכל סקריפט שבודק את סטטוס היציאה של apt update מדווח כעת על כשל בכל הרצה. זו הסיבה שכדאי לנקות מקור מת בשרת שבו מוגדרים שדרוגי אבטחה אוטומטיים: הרעש היומי הוא המקום שבו מסתתר כשל אמיתי. סקריפטי התקנה של ספקים נתקלים בשתי הגרסאות הללו, וזו הסיבה שרוב ה-שגיאות התקנה של Tailscale ב-Ubuntu מתבררות כ-keyring שהסקריפט מעולם לא כתב או כשם קוד של הפצה שהארכיון אינו מכיל.

השבתת מקור אחד מבלי לפגוע בשאר

עבור קובץ בפורמט deb822, הוסיפו שדה אחד לבית (stanza) ושמרו את הקובץ:

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 מוחלף בשם ה-release שלכם מתוך lsb_release -cs, ולאחר מכן הריצו את sudo apt update.

המרת קובצי .list מדור קודם לפורמט deb822

החל מאוגוסט 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 stack on Ubuntu 24.04 בסיסי אינו זקוק לאף מאגר חיצוני: ארכיון ה-Ubuntu מכיל את כל החבילות הנדרשות, עם עדכוני אבטחה לאורך כל חיי הגרסה.
  • שמרו מפתחות ב-/etc/apt/keyrings/, קובץ אחד לכל ספק, בהרשאות 644. המשתמש הלא-מורשה _apt מבצע את ההורדה וחייב לקרוא את המפתח, לכן קובץ מפתח שניתן לקריאה על ידי root בלבד יגרום לשגיאת הרשאות בכל ניסיון משיכה מהמאגר.
  • הפנו את Signed-By לקובץ הספציפי הזה בכל הגדרה. מפתח שנמצא ב-/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.

ייצאו את המפתח הבודד לקובץ משלו, ולאחר מכן הפנו את הגדרת המאגר אליו:

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 להגדרת המאגר והריצו את sudo apt update. האזהרה תיפסק ברגע שאף מאגר לא יהיה תלוי ב-keyring הישן, ואז תוכלו להסיר את הרשומה באמצעות sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --delete-key 7EA0A9C3F273FCD8.

הרגל נוסף חוסך את מירב עוגמת הנפש. do-release-upgrade משבית מקורות צד-שלישי לצורך השדרוג ומשאיר אותם כבויים לאחריו; הפעלה ידנית שלהם בחזרה, אחד אחד, היא בדיוק המקום שבו נוצרות כפילויות בהגדרות. קראו את the Ubuntu 24.04 to 26.04 upgrade guide לפני שתתחילו, ורשמו לעצמכם אילו מאגרים אתם עדיין צריכים. במכונה שזה עתה הקמתם, הרגע הזול ביותר לסדר את המקורות הוא במהלך the first ten minutes on a new VPS, בזמן שהרשומות היחידות בשרת הן אלו ש-Ubuntu סיפקה כברירת מחדל.

FAQ

מדוע apt מציג שגיאה שהיעד מוגדר פעמיים?

מכיוון ששני קבצים תחת /etc/apt/sources.list.d/ מגדירים את אותו המאגר (repository), את אותה הסוויטה ואת אותו הרכיב. ההודעה מציינת את שני הקבצים עם מספרי השורות, למשל 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 מבלי להסיר אותו?

בקובץ deb822 מסוג .sources, הוסיפו את Enabled: no לבית (stanza). בקובץ שורה אחת מסוג .list, הוסיפו # בתחילת השורה. בכל מקרה, הריצו את sudo apt update לאחר מכן, ובלוק ה-Err: עבור אותו מאגר ייעלם. זהו הצעד הנכון כאשר למאגר צד-שלישי אין עדיין חבילות עבור גרסת ה-Ubuntu שלכם, ושגיאת ה-404 שלו גורמת ל-apt update לסיים את פעולתו עם קוד שגיאה.

האם פורמט ה-sources.list של שורה אחת עומד להיעלם?

הוא מוגדר כ-deprecated (מיושן), אך לא הוסר. המערכת 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