วิธีแก้ไขข้อผิดพลาด 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 ปัจจุบันจึงยังคงเป็นทางออกที่แนะนำในระยะยาว