SLES Zypper HTTP 500: ค้นหาแหล่งเก็บข้อมูลที่ล้มเหลว

เมื่อzypper refreshพบข้อผิดพลาด HTTP 500 บน SLES ขั้นแรกให้ระบุว่า URL ของที่เก็บข้อมูลใดส่งคืนข้อผิดพลาดนั้น HTTP 500 หมายความว่าเซิร์ฟเวอร์ที่จัดการคำขอพบเงื่อนไขที่ไม่คาดคิด ผู้ตอบสนองอาจเป็นโฮสต์ของที่เก็บข้อมูล เซิร์ฟเวอร์ RMT ขององค์กร หรือพร็อกซี HTTP แยกที่เก็บข้อมูลที่ล้มเหลวและซ่อมแซมหรือรายงานปลายทางนั้นก่อนที่จะล้างเมตาเดตาในเครื่อง การสร้างแคชใหม่แบบบังคับไม่สามารถซ่อมแซมเซิร์ฟเวอร์ที่ยังคงส่งคืนข้อผิดพลาด 500 ได้

คู่มือการดูแลระบบและการอัปเกรด SLES 15 SP7 ฉบับปัจจุบันของ SUSE ได้บันทึกรายการคลังข้อมูลและคำสั่งรีเฟรช รวมถึงคำสั่งzypper refresh -fdbสำหรับการสร้างเมตาเดตาของคลังข้อมูลภายในเครื่องขึ้นใหม่ แต่ไม่ได้ระบุถึงเหตุการณ์ HTTP 500 ที่เกิดขึ้นทั่วทั้ง SLES ในปัจจุบัน วิธีแก้ไขที่ได้ผลจริงนั้นขึ้นอยู่กับว่า URL นั้นเป็นของ SUSE Customer Center, คลังข้อมูลภายใน หรือคลังข้อมูลของบุคคลที่สาม

มีแหล่งเก็บข้อมูลเพียงแห่งเดียวที่ล้มเหลว หรือหลายแห่งล้มเหลว?

เริ่มต้นด้วยการบันทึกชื่อเรียกแทน (alias) และ URL ของที่เก็บข้อมูล (repository) ไว้ บน SLES ให้รันคำสั่ง:

zypper repos -u

ตัวเลือก นี้-uจะแสดงที่มาของที่เก็บข้อมูลที่กำหนดค่าไว้แต่ละรายการ สังเกตว่ารายการใดบ้างที่เปิดใช้งานและตั้งค่าให้รีเฟรช จากนั้นเปรียบเทียบชื่อโฮสต์ของ URL ที่ล้มเหลว หากที่เก็บข้อมูลของบุคคลที่สามล้มเหลวในขณะที่แหล่งอัปเดตของ SUSE รีเฟรชได้สำเร็จ ให้ตรวจสอบเจ้าของที่เก็บข้อมูลนั้น หากที่เก็บข้อมูลหลายแห่งชี้ไปยังโฮสต์ภายในเดียวกันและล้มเหลวทั้งหมด มิเรอร์ที่ใช้ร่วมกัน บริการ RMT พร็อกซีแบบย้อนกลับ หรือการเชื่อมต่ออัปสตรีมจะเป็นเบาะแสที่สำคัญกว่า

คำสั่ง zypper repos -u ใช้ในเทอร์มินัล Linux เพื่อตรวจสอบ URL ของที่เก็บข้อมูลที่กำหนดค่าไว้
คำสั่งในเทอร์มินัลสำหรับแสดงรายการนามแฝงของที่เก็บข้อมูลและ URL แหล่งที่มาที่กำหนดค่าไว้ ก่อนทำการแก้ไขปัญหา

ถัดไป ให้รีเฟรชเฉพาะที่เก็บข้อมูลที่ได้รับผลกระทบโดยใช้ชื่อแทน:

sudo zypper refresh -f 'Vendor-App'

แทนที่Vendor-Appด้วยชื่อเรียกแทนที่ถูกต้องตามที่แสดงโดยzypper repos -u. วิธีนี้จะช่วยหลีกเลี่ยงข้อผิดพลาดซ้ำซ้อนจากแหล่งเก็บข้อมูลที่ไม่เกี่ยวข้อง และให้ผลลัพธ์ที่ตรงประเด็นเพื่อแชร์กับผู้ดูแลระบบ หากชื่อเรียกแทนมีช่องว่าง ให้คงเครื่องหมายอัญประกาศเดี่ยวไว้ เก็บ URL และเวลาที่เกิดข้อผิดพลาดไว้ แต่ให้ลบชื่อผู้ใช้ รหัสผ่าน โทเค็น หรือข้อมูลลับอื่นๆ ที่ฝังอยู่ก่อนส่งบันทึกหรือภาพหน้าจอ

คำสั่ง zypper refresh จะกำหนดเป้าหมายเฉพาะนามแฝงของที่เก็บข้อมูล Vendor-App เท่านั้น
คำสั่งในเทอร์มินัลสำหรับรีเฟรชชื่อเรียกแทนของที่เก็บข้อมูลหนึ่งรายการ เพื่อตรวจสอบว่าข้อผิดพลาด HTTP 500 เกิดขึ้นเฉพาะจากแหล่งที่มานั้นหรือไม่

เอนด์พอยต์เมตาเดตาเองส่งคืนรหัส HTTP 500 หรือไม่?

อ่านข้อความแสดงข้อผิดพลาดของ Zypper ให้ครบถ้วน และระบุ URL เมตาเดต้าที่ระบุชื่อ ซึ่งมักจะเป็นไฟล์ที่อยู่ในrepodataไดเร็กทอรีของที่เก็บข้อมูล หากสามารถสอบถามปลายทางได้โดยไม่ต้องใช้ข้อมูลรับรอง ให้เปรียบเทียบการตอบสนอง HTTP จากโฮสต์ SLES:

curl -sS -D - -o /dev/null --max-time 20 "$METADATA_URL"

ตั้งMETADATA_URLค่า URL เมตาเดต้าที่ล้มเหลวให้ถูกต้องโดยไม่ต้องใส่ข้อมูลรับรองใน URL หรือบรรทัดคำสั่ง คำสั่งจะพิมพ์ส่วนหัวการตอบกลับและละทิ้งเนื้อหาการตอบกลับ ผลลัพธ์เช่นนี้HTTP/1.1 500ยืนยันว่าเซิร์ฟเวอร์ในเส้นทางการร้องขอส่งคืนข้อผิดพลาด แต่ไม่ได้พิสูจน์ว่าต้นทางหรือตัวกลางเป็นผู้สร้างข้อผิดพลาดนั้น Curl อาจใช้การตรวจสอบสิทธิ์หรือการตั้งค่าพร็อกซีที่แตกต่างจาก Zypper ดังนั้นให้ถือว่านี่เป็นการเปรียบเทียบ ไม่ใช่การจำลองที่แน่นอน หากการเข้าถึงที่เก็บข้อมูลต้องการการตรวจสอบสิทธิ์ ให้ใช้วิธีการทดสอบที่ได้รับการอนุมัติจากองค์กรของคุณแทนการเปิดเผยข้อมูลรับรอง

คำสั่ง curl จะร้องขอส่วนหัวการตอบสนอง HTTP สำหรับ URL เมตาเดตาที่เก็บไว้ในตัวแปร REPO_URL
คำสั่งเทอร์มินัลสำหรับตรวจสอบการตอบสนอง HTTP จากปลายทางเมตาเดตาของที่เก็บข้อมูลที่ระบุโดย Zypper

ข้อความตอบกลับ 500 แตกต่างจากปัญหาแคชเมตาเดต้าในเครื่อง นอกจากนี้ยังแตกต่างจากความล้มเหลวของ DNS ข้อผิดพลาดของใบรับรอง TLS การหมดเวลา และการตอบสนองการตรวจสอบสิทธิ์ เช่น 401 หรือ 403 ข้อความเหล่านั้นต้องการการตรวจสอบที่แตกต่างกัน อย่าปิดใช้งานการตรวจสอบ TLS เปลี่ยนที่เก็บข้อมูลเป็น HTTP ธรรมดา หรือลบแคชซ้ำ ๆ เพื่อให้ข้อความ 500 หายไป สำหรับความหมายของ HTTP นั้น RFC 9110 กำหนดว่า 500 คือสภาวะเซิร์ฟเวอร์ที่ไม่คาดคิดซึ่งทำให้ไม่สามารถดำเนินการตามคำขอได้

ควรทำการซ่อมแซมตรงไหน?

  • ที่เก็บข้อมูล SUSE Customer Center:ลองใหม่อีกครั้งหลังจากช่วงเวลาสั้นๆ หากความล้มเหลวดูเหมือนจะเป็นเพียงชั่วคราว หากปลายทางที่โฮสต์โดย SUSE เดียวกันยังคงส่งคืนรหัส 500 ให้บันทึกผลิตภัณฑ์ Service Pack สถาปัตยกรรม URL ของที่เก็บข้อมูล และเวลาที่เกิดความล้มเหลว จากนั้นตรวจสอบช่องทางการสนับสนุน SUSE ขององค์กรของคุณ ยืนยันรายละเอียดการลงทะเบียนและการสมัครใช้งานหากการตอบสนองบ่งชี้ถึงปัญหาด้านสิทธิ์หรือการเข้าถึง รหัส HTTP 500 เพียงอย่างเดียวไม่ได้บ่งชี้ว่าการสมัครใช้งานไม่ถูกต้อง
  • RMT หรือเซิร์ฟเวอร์มิเรอร์ภายในอื่นๆ:ขอให้ผู้ดูแลระบบมิเรอร์ตรวจสอบบันทึกของเซิร์ฟเวอร์และรีเวิร์สพร็อกซีในช่วงเวลาที่บันทึกไว้ ยืนยันว่าที่เก็บข้อมูลที่ร้องขอเปิดใช้งานและซิงโครไนซ์แล้ว และตรวจสอบว่าไฟล์เมตาเดตาอยู่ที่พาธที่ให้บริการหรือไม่ เอกสารของ SUSE ระบุว่า RMT เป็นวิธีที่ไคลเอ็นต์ SLES สามารถดึงข้อมูลอัปเดตจากเซิร์ฟเวอร์ภายในเครื่องแทนการติดต่อ SCC โดยตรง
  • แหล่งเก็บข้อมูลของบุคคลที่สาม:ตรวจสอบคำแนะนำแหล่งเก็บข้อมูลปัจจุบันของผู้จำหน่ายและยืนยันว่า URL ตรงกับเวอร์ชันและสถาปัตยกรรมของ SLES ที่ติดตั้งไว้ หากแหล่งที่มามีการเปลี่ยนแปลง ให้ทำการอัปเดตเฉพาะ URL ที่เผยแพร่โดยผู้จำหน่ายนั้นเท่านั้น ปิดใช้งานแหล่งเก็บข้อมูลหลังจากยืนยันแล้วว่าเป็นทางเลือกและไม่จำเป็นอีกต่อไป อย่าปิดใช้งานแหล่งอัปเดต SLES ที่จำเป็นเพื่อซ่อนข้อผิดพลาด

คุณสามารถตรวจสอบและเปลี่ยนแปลงสถานะของที่เก็บข้อมูลได้ด้วย Zypper หรือ YaST ตัวอย่างเช่นzypper modifyrepoคำสั่งที่ระบุไว้ในเอกสารสามารถปิดใช้งานที่เก็บข้อมูลโดยใช้นามแฝงได้ แต่เป็นการเลือกใช้งานชั่วคราว ไม่ใช่การซ่อมแซมแหล่งข้อมูลที่จำเป็นซึ่งล้มเหลว หลีกเลี่ยงการแก้ไข URL ของที่เก็บข้อมูลที่สร้างขึ้นโดยการคาดเดา โดยเฉพาะอย่างยิ่งหลังจากการย้าย Service Pack เนื่องจากที่เก็บข้อมูลผลิตภัณฑ์และการอัปเดตใช้เส้นทางเฉพาะเวอร์ชัน

คุณควรสร้างแคชเมตาเดต้าในเครื่องใหม่เมื่อใด?

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

sudo zypper refresh -f
คำสั่ง zypper refresh -f จะบังคับให้รีเฟรชเมตาเดต้าของที่เก็บข้อมูลหลังจากแก้ไขปัญหาฝั่งเซิร์ฟเวอร์แล้ว
คำสั่งในเทอร์มินัลสำหรับลองรีเฟรชแบบบังคับอีกครั้งหลังจากที่ปลายทางของที่เก็บข้อมูลกลับมาใช้งานได้ปกติแล้ว

หากขณะนี้ปลายทางตอบสนองแล้ว แต่ Zypper ยังคงรายงานว่าข้อมูลในที่เก็บข้อมูลภายในเครื่องล้าสมัยหรือไม่สอดคล้องกัน ส่วนการแก้ไขปัญหาของ SUSE SLES 15 SP7 แนะนำให้รีเฟรชเมตาเดต้าและสร้างฐานข้อมูลใหม่ทั้งหมดโดยใช้คำสั่งต่อไปนี้:

sudo zypper refresh -fdb

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

คุณจะตรวจสอบความถูกต้องของการแก้ไขได้อย่างไร?

เริ่ม จากการรัน zypper refresh -f 'ALIAS'โค้ดสำหรับแหล่งที่มาที่เคยมีปัญหา จากนั้นจึงรันsudo zypper refresh -fสำหรับแหล่งเก็บข้อมูลที่เปิดใช้งานทั้งหมด การแก้ไขจะได้รับการยืนยันเมื่อดาวน์โหลดเมตาเดต้าของแหล่งเก็บข้อมูลที่ได้รับผลกระทบได้โดยไม่มีข้อผิดพลาด HTTP 500 และ Zypper ทำงานเสร็จสิ้นโดยไม่มีแหล่งที่มาที่เปิดใช้งานใดล้มเหลว หากยังมีแหล่งที่มาใดล้มเหลวอยู่ ให้เก็บ URL รหัสสถานะ ส่วนหัวการตอบกลับ และเวลาที่แน่นอนไว้ แล้วส่งให้เจ้าของปลายทางนั้น

ข้อมูลอ้างอิงอย่างเป็นทางการ

ฝากความเห็น

SLES Zypper HTTP 500: ค้นหาแหล่งเก็บข้อมูลที่ล้มเหลว

SLES Zypper HTTP 500: ค้นหาแหล่งเก็บข้อมูลที่ล้มเหลว

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

พื้นที่พูลบางของ SLES ไม่เพียงพอ: ขยาย LVM อย่างปลอดภัยและกู้คืนการเขียน

พื้นที่พูลบางของ SLES ไม่เพียงพอ: ขยาย LVM อย่างปลอดภัยและกู้คืนการเขียน

แก้ไขข้อผิดพลาดเกี่ยวกับพื้นที่ thin-pool ของ SUSE LVM โดยการตรวจสอบการใช้งานข้อมูลและเมตาเดต้า ขยายพูลอย่างปลอดภัย และป้องกันการหยุดทำงานซ้ำซ้อน

เมื่อ SLES Btrfs เข้าสู่โหมดอ่านอย่างเดียว: ตรวจสอบหาสาเหตุก่อนทำการเมานต์ใหม่

เมื่อ SLES Btrfs เข้าสู่โหมดอ่านอย่างเดียว: ตรวจสอบหาสาเหตุก่อนทำการเมานต์ใหม่

ตรวจสอบว่า Btrfs ถูกตั้งค่าเป็นโหมดอ่านอย่างเดียวโดยเจตนา พื้นที่เหลือน้อย หรือกำลังปกป้องข้อมูลหลังเกิดข้อผิดพลาด จากนั้นเลือกวิธีการกู้คืนที่เหมาะสมกับสาเหตุ

ลงทะเบียน SLES 15 กับ SUSE Manager ในเครือข่ายออฟไลน์

ลงทะเบียน SLES 15 กับ SUSE Manager ในเครือข่ายออฟไลน์

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

ทำให้การส่งต่อ X11 ของ YaST ใช้งานได้ผ่าน SSH

ทำให้การส่งต่อ X11 ของ YaST ใช้งานได้ผ่าน SSH

แก้ไขข้อผิดพลาดในการเปิดใช้งาน XIO ของ YaST ผ่าน SSH ตรวจสอบการส่งต่อ X11 และ xauth และสลับไปใช้ส่วนติดต่อ ncurses เมื่อไม่จำเป็นต้องใช้หน้าต่างระยะไกล

ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

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

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

ส่งบันทึกระบบ SLES ไปยังตัวเก็บรวบรวม rsyslog ระยะไกลผ่าน TLS ที่มีการตรวจสอบสิทธิ์ พร้อมด้วยการตรวจสอบใบรับรอง การบัฟเฟอร์เมื่อระบบขัดข้อง และการทดสอบการส่งมอบ

ตรวจสอบข้อผิดพลาดเกี่ยวกับหน่วยความจำระหว่างการอัปเกรด SLES ก่อนลองใหม่อีกครั้ง

ตรวจสอบข้อผิดพลาดเกี่ยวกับหน่วยความจำระหว่างการอัปเกรด SLES ก่อนลองใหม่อีกครั้ง

ใช้บันทึก RAM, swap, kernel และ Zypper เพื่อระบุแรงดันหน่วยความจำที่แท้จริง ป้องกันสถานะของแพ็กเกจ และเลือกวิธีการลองอัปเกรด SLES ที่ปลอดภัยยิ่งขึ้น

รักษาการอัปเดตความปลอดภัยของ Debian 12 ให้ทำงานได้บนเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผล

รักษาการอัปเดตความปลอดภัยของ Debian 12 ให้ทำงานได้บนเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผล

เปิดใช้งานการอัปเดตความปลอดภัยอัตโนมัติของ Debian ผ่าน SSH รักษาแหล่งแพ็กเกจเริ่มต้น และตรวจสอบการทำงานตามกำหนดเวลาผ่านบันทึกของ systemd และ APT

รับการแจ้งเตือน SMART Disk ของ Ubuntu ทางอีเมลด้วย smartd

รับการแจ้งเตือน SMART Disk ของ Ubuntu ทางอีเมลด้วย smartd

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