ค้นหาเว็บไซต์

วิธีแก้ไขข้อผิดพลาด 404 Not Found ระหว่างการอัปเกรด apt-get บน Debian


ข้อผิดพลาด “404 Not Found” ระหว่างการอัปเกรดเกิดขึ้นเมื่อระบบของคุณพยายามดาวน์โหลดแพ็กเกจจากแหล่งที่เก็บซึ่งไม่มีอยู่แล้วหรือถูกย้ายไป ซึ่งมักเกิดขึ้นกับเวอร์ชัน Debian เก่าที่ถึงสิ้นสุดอายุการสนับสนุนแล้ว และแพ็กเกจของเวอร์ชันนั้นถูกย้ายไปยังเซิร์ฟเวอร์เก็บถาวร

เนื่องจาก Debian รักษารอบการออกเวอร์ชันอย่างเข้มงวด เวอร์ชันเก่าจะถูกย้ายจากมิเรอร์ที่ใช้งานไปยังพื้นที่เก็บถาวรเฉพาะ เมื่อเกิดเหตุการณ์นี้ การตั้งค่าที่เก็บข้อมูลของคุณจะล้าสมัย และการทำงานของตัวจัดการแพ็กเกจจะล้มเหลว

การเข้าใจข้อผิดพลาด 404 ระหว่างการอัปเกรด

เมื่อคุณรัน apt-get update หรือ apt-get upgrade ระบบจะอ่านรายการแหล่งที่มาของคุณจาก /etc/apt/sources.list และพยายามดึงข้อมูลแพ็กเกจจาก URL ที่ระบุไว้ที่นั่น หาก URL เหล่านั้นชี้ไปที่ที่เก็บที่ถูกย้ายหรือถูกลบ คุณจะได้รับข้อผิดพลาด 404

วิธีแก้ปัญหาคือการอัปเดตรายการแหล่งที่มาของคุณให้ชี้ไปยังตำแหน่ง repository ที่ถูกต้อง เนื่องจาก Debian เวอร์ชันต่าง ๆ ต้องการ URL ของ repository ที่แตกต่างกัน เราจะเริ่มต้นด้วยการระบุเวอร์ชันปัจจุบันของคุณ จากนั้นจึงปรับแต่งการตั้งค่าตามนั้น

ตรวจสอบเวอร์ชัน Debian ของคุณ

ก่อนที่จะทำการเปลี่ยนแปลงใด ๆ คุณจำเป็นต้องทราบว่าคุณกำลังใช้งานเวอร์ชัน Debian ใด

lsb_release -a

คำสั่งด้านบนจะแสดงข้อมูลการแจกจ่ายของคุณ รวมถึงหมายเลขเวอร์ชันและชื่อรหัส

  • บุ๊กเวิร์ม → Debian 12
  • บูลอาย → Debian 11
  • Buster → Debian 10

จดชื่อรหัสของคุณไว้ เพราะคุณจะต้องใช้ในขั้นตอนต่อไป

สำรองการตั้งค่าไฟล์แหล่งที่มา

เนื่องจากคุณจะทำการแก้ไขไฟล์ระบบ การสำรองข้อมูลจะช่วยให้คุณสามารถกู้คืนการตั้งค่าเดิมได้หากจำเป็น

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

สิ่งนี้จะสร้างสำเนาของรายการแหล่งที่มาของคุณในโฟลเดอร์เดียวกัน หากเกิดปัญหาอะไรขึ้น คุณสามารถกู้คืนโดยการสลับแหล่งที่มาและปลายทางในคำสั่งข้างต้น

กำลังอัปเดตแหล่งที่มาของที่เก็บ

ต่อไป คุณต้องแก้ไขรายการแหล่งที่มาของคุณเพื่อชี้ไปยังที่เก็บที่ถูกต้อง สำหรับรุ่น Debian เก่าที่หมดอายุแล้ว คุณต้องเปลี่ยนไปใช้เซิร์ฟเวอร์เก็บถาวร

เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความ:

sudo nano /etc/apt/sources.list

สำหรับเวอร์ชัน Debian ที่หมดอายุการใช้งาน

หากเวอร์ชัน Debian ของคุณไม่ได้รับการสนับสนุนแล้ว (เช่น Jessie, Stretch หรือเวอร์ชันเก่าอื่น ๆ) ให้แทนที่เนื้อหาในไฟล์ด้วย:

deb http://archive.debian.org/debian/ CODENAME main contrib non-free
deb http://archive.debian.org/debian-security/ CODENAME/updates main contrib non-free

แทนที่ CODENAME ด้วยชื่อรหัสของ Debian ของคุณ (ตัวอย่างเช่น stretch สำหรับ Debian 9)

สำหรับเวอร์ชันที่รองรับในปัจจุบัน

ถ้ารุ่น Debian ของคุณยังได้รับการสนับสนุนแต่คุณได้รับข้อผิดพลาด 404 (ปัญหากระจก), ให้ใช้ที่เก็บหลักของ Debian แทน:

deb http://deb.debian.org/debian/ CODENAME main contrib non-free
deb http://deb.debian.org/debian/ CODENAME-updates main contrib non-free
deb http://security.debian.org/debian-security CODENAME-security main contrib non-free

แทนที่ CODENAME ด้วยเวอร์ชันของคุณ:

  • เดเบียน 12 → บุ๊คเวิร์ม
  • Debian 11 → บูลส์อาย
  • เดเบียน 10 → บัสเตอร์

หลังจากทำการเปลี่ยนแปลงเหล่านี้แล้ว ให้บันทึกไฟล์โดยกด Ctrl+O จากนั้นกด Enter และออกจากโปรแกรมด้วย Ctrl+X

การจัดการการตรวจสอบคลังเอกสาร

แหล่งเก็บข้อมูลเก่าของเวอร์ชัน Debian ที่สิ้นอายุการใช้งานจะไม่ได้รับการอัปเดตความปลอดภัย ซึ่งหมายความว่าไฟล์การปล่อยเวอร์ชันเหล่านี้ไม่ได้ถูกเซ็นชื่อด้วยกุญแจที่ถูกต้องอีกต่อไป เพื่อป้องกันไม่ให้คำสั่ง apt ล้มเหลวเนื่องจากลายเซ็นหมดอายุ คุณจำเป็นต้องปิดการตรวจสอบการยืนยันสำหรับแหล่งเก็บข้อมูลเหล่านี้

เปิดหรือสร้างไฟล์การกำหนดค่าต่อไปนี้:

sudo nano /etc/apt/apt.conf.d/99allow-unauthenticated

เพิ่มบรรทัดนี้เพียงบรรทัดเดียว:

Acquire::Check-Valid-Until "false";

การตั้งค่านี้บอกให้ apt ไม่สนใจช่วงเวลาที่ถูกต้องของไฟล์ release ซึ่งจำเป็นสำหรับที่เก็บซอฟต์แวร์เก่าที่ไม่ได้รับการอัปเดตแล้ว

กำลังอัปเดตข้อมูลแพ็กเกจ

เมื่อแหล่งเก็บข้อมูลของคุณถูกตั้งค่าอย่างถูกต้องแล้ว ให้ทำการอัปเดตรายการแพ็กเกจของคุณ ซึ่งจะดึงข้อมูลแพ็กเกจล่าสุดจากแหล่งเก็บข้อมูลที่คุณตั้งค่าใหม่ หากทุกอย่างถูกตั้งค่าอย่างถูกต้อง ควรทำได้สำเร็จโดยไม่มีข้อผิดพลาด 404 ใดๆ

sudo apt-get update

เมื่อรายการแพ็กเกจของคุณได้รับการอัปเดตแล้ว คุณสามารถอัปเกรดแพ็กเกจที่ติดตั้งไว้ ซึ่งจะดาวน์โหลดและติดตั้งการอัปเดตที่มีอยู่สำหรับระบบปัจจุบันของคุณ สำหรับเวอร์ชันเก่า คุณอาจพบว่าแทบไม่มีแพ็กเกจใดที่ได้รับการอัปเกรดเนื่องจากไม่รับการอัปเดตอีกต่อไป

sudo apt-get upgrade

พิจารณาการอัปเกรดดิสทริบิวชัน

แม้ว่าการแก้ไขข้อผิดพลาด 404 จะทำให้ระบบปัจจุบันของคุณทำงานได้ แต่การใช้งาน Debian เวอร์ชันสิ้นอายุหมายถึงคุณจะไม่ได้รับการอัปเดตด้านความปลอดภัยอีกต่อไป ซึ่งเป็นความเสี่ยงสำคัญในสภาพแวดล้อมการผลิตหรือที่เชื่อมต่อกับอินเทอร์เน็ต

คุณควรพิจารณาอัปเกรดไปใช้เวอร์ชัน Debian ที่ยังได้รับการสนับสนุนอยู่

sudo apt-get dist-upgrade

อย่างไรก็ตาม การอัปเกรดระหว่างเวอร์ชันหลักของ Debian จำเป็นต้องมีการวางแผนอย่างรอบคอบและไม่ควรทำอย่างประมาท เพราะอาจทำให้การตั้งค่าที่มีอยู่หรือซอฟต์แวร์ที่ติดตั้งแล้วเสียหายได้ ควรปรึกษาบันทึกการออกเวอร์ชันอย่างเป็นทางการของ Debian สำหรับเวอร์ชันที่คุณต้องการก่อนที่จะทำการอัปเกรดครั้งใหญ่

สรุป

ข้อผิดพลาด 404 ระหว่าง apt-get upgrade เกิดจาก URL ของ repository ที่ล้าสมัยในไฟล์กำหนดค่า sources ของคุณ การระบุเวอร์ชัน Debian ของคุณ อัปเดตรายการ sources ให้ชี้ไปยัง repository ที่เหมาะสม และปรับการตั้งค่าการตรวจสอบ สามารถกู้คืนการทำงานของการจัดการแพ็กเกจได้

เนื่องจากการใช้งานเวอร์ชันที่ไม่ได้รับการสนับสนุนมีผลต่อความปลอดภัย การวางแผนอัปเกรดไปยังรุ่น Debian ปัจจุบันจึงยังคงเป็นทางออกที่แนะนำในระยะยาว