ไม่สามารถดึงที่เก็บ jessie backport


155

ฉันใช้อิมเมจนักเทียบท่าเป็นฐานสำหรับการพัฒนาของฉันเองที่เพิ่มที่เก็บ jessie backport ใน Dockerfile และใช้เพื่อติดตั้งการพึ่งพา อิมเมจนี้ใช้คำสั่งต่อไปนี้เพื่อเพิ่มที่เก็บ:

echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

ปัญหาคือการดึงแพคเกจจากแหล่งเก็บข้อมูล backport ในขณะนี้ล้มเหลวด้วยข้อผิดพลาดต่อไปนี้ (ใช้ในการทำงานก่อนหน้านี้):

W: Failed to fetch
http://ftp.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages
404  Not Found

W: Failed to fetch
http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages
 404  Not Found

ฉันดูเซิร์ฟเวอร์นั้นและเส้นทางเหล่านั้นไม่ได้อยู่ที่นั่น

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

นี่เป็นปัญหาชั่วคราวของที่เก็บหรือว่าที่เก็บ jessie-backports นั้นไม่สามารถใช้งานได้อีกต่อไป? และหากนี่ไม่ใช่ปัญหาชั่วคราวฉันต้องใช้ตัวเลือกใดหรือที่เก็บข้อมูลที่เทียบเท่าโดยไม่ต้องอัปเกรดเป็นเวอร์ชันเสถียร Debian รุ่นใหม่



นี้เป็นหลักคำถามเดียวกับapt-get ปรับปรุงเป็นความล้มเหลวในเดเบียนในSuper User
CVN

คำตอบ:


180

เมื่อเร็ว ๆ นี้ Wheezy และ Jessie ถูกลบออกจากเครือข่ายมิเรอร์ดังนั้นหากคุณต้องการดึงข้อมูลเจสซี backport ต่อไปคุณต้องใช้archive.debian.orgแทน:

deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main

(การตรวจสอบความถูกต้องจะต้องปิดการใช้งานเนื่องจากพื้นที่เก็บข้อมูลไม่ได้รับการปรับปรุงอีกต่อไปเจสซีaptไม่สนับสนุนการcheck-valid-untilตั้งค่าสถานะดูคำตอบของ inostiaสำหรับรายละเอียดและสรุปการกำหนดค่าเพิ่มเติมในคำตอบนี้)

ที่jessie-updatesเก็บถูกลบแล้ว: การอัปเดตทั้งหมดถูกรวมเข้ากับที่เก็บหลักและจะไม่มีการอัปเดตที่ไม่ใช่ความปลอดภัยเพิ่มเติม ดังนั้นการอ้างอิงใด ๆ ถึงjessie-updatesในsources.listหรือsources.list.dไฟล์จะต้องถูกลบออก การปรับปรุงความปลอดภัยจะยังคงมีอยู่ในสถาปัตยกรรมที่สนับสนุน LTS ในที่เก็บความปลอดภัยจนถึงวันที่ 30 มิถุนายน 2020

เนื่องจากคุณกำลังสร้างอิมเมจคอนเทนเนอร์ฉันขอแนะนำให้อ้างอิงบน Debian 9 (Stretch) แทน หากต้องการอยู่บน Debian 8 (Jessie) ที่เก็บข้อมูลของคุณควรจะดูเหมือน

deb http://cdn-fastly.deb.debian.org/debian/ jessie main
deb-src http://cdn-fastly.deb.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

deb http://archive.debian.org/debian jessie-backports main
deb-src http://archive.debian.org/debian jessie-backports main

(ไม่มีที่jessie-updatesเก็บ)

คุณจะต้องปิดการใช้งานการตรวจสอบความถูกต้องด้วย/etc/apt/apt.conf(ซึ่งจะใช้กับที่เก็บทั้งหมด):

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

1
ขออภัยคำตอบของฉันอาจไม่ชัดเจนทั้งหมด บรรทัดที่ฉันให้นั้นมีไว้สำหรับ backport เท่านั้น jessie-updatesไม่ได้อยู่ที่ใด ๆ security.debian.orgเพิ่มเติมดังนั้นคุณควรลบทั้งหมดและการปรับปรุงการรักษาความปลอดภัยของเจสซียังคงอยู่ใน
Stephen Kitt

2
@ ฉันไม่ได้มีการอัปเดตความปลอดภัยsecurity.debian.orgไม่ใช่บนbackport หรือการอัปเดต จะไม่มีการปรับปรุงใด ๆ ที่ไม่ใช่ LTS เสถียรภาพดังนั้นjessie-updatesไม่มีประโยชน์อีกต่อไปในเครือข่ายกระจกหลักและจะไม่มี backports ใด ๆ jessie-backportsเพิ่มเติมอย่างใดอย่างหนึ่งเพื่อให้เดียวกันจะไปสำหรับ
Stephen Kitt

4
ไม่ทำงานสำหรับฉัน: `` `E: ไฟล์เผยแพร่สำหรับarchive.debian.org/debian/dists/jessie-backports/InReleaseหมดอายุแล้ว (ไม่ถูกต้องตั้งแต่ 34d 20h 7 นาที 12 วินาที) การอัพเดตสำหรับที่เก็บนี้จะไม่ถูกนำไปใช้ `` `
Avi Kivity

2
พบว่าaptคำสั่งที่ตามมาดูเหมือนจะต้องการ-o Acquire::Check-Valid-Until=false(ต่อunix.stackexchange.com/a/45973/186565 ) เพื่อหลีกเลี่ยงข้อผิดพลาดการหมดอายุ
sumitsu

2
@sumitsu ขอบคุณการตั้งค่าที่apt.confควรจะใช้ได้เช่นกัน (ดูการอัปเดตของฉัน)
Stephen Kitt

42

หลังจากลองวิธีแก้ปัญหาที่แนะนำโดย @inostia และ @Stephen Kitt ฉันยังคงได้รับข้อผิดพลาดต่อไปนี้:

W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

ฉันคิดว่ามันจะสามารถแก้ไขได้โดยการถอดสายจากdeb http://deb.debian.org/debian jessie-updates main/etc/apt/sources.list

ฉันลงเอยด้วยตัวอย่างต่อไปนี้ใน Dockerfile ของฉัน:

RUN echo "deb [check-valid-until=no] http://cdn-fastly.deb.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie.list
RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list
RUN apt-get -o Acquire::Check-Valid-Until=false update

1
ฉันมีปัญหาเช่นเดียวกับที่คุณทำและตัวอย่างของคุณทำงานให้ฉัน!
cafemike

1
ฉันต้องสักส่วนเพราะในภาพนักเทียบท่า (postgres) ของฉันกำลังใช้ httpredir.debian.org แทน deb.debian.org
harrybvp

1
ขอขอบคุณ!!! ฉันดิ้นรนเป็นเวลาสองวันเพื่อแก้ไข Dockerfile ของฉันหลังจากการเปลี่ยนแปลง Debian jessie ฉันวางข้อมูลโค้ดของคุณและมันก็ทำงานได้อีกครั้ง
wpjmurray

ขออภัยมีปัญหาเดียวกัน ....
1722245

5
นี่คือsedคำสั่งของคุณในเวอร์ชันที่อัปเดตซึ่งทำเคล็ดลับสำหรับฉัน:sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
speedplane

26

สิ่งนี้เกิดขึ้นกับฉันในการจัดเตรียมกล่อง Vagrant ที่ใช้ Debian "Jessie"

ต่อไปนี้คำตอบของสตีเฟ่นกิตของเปลี่ยนไป archive.debian.org ทำงานสำหรับฉัน แต่ฉันได้ไปเพิ่มไปมากกว่าที่จะ/etc/apt/sources.list.d/jessie-backports.list/etc/apt/sources.list

ฉันเพิ่มบรรทัดต่อไปนี้ในprovision.sh:

echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list

จากนั้นฉันก็มีข้อผิดพลาดด้านความปลอดภัยทำงานapt-get updateอยู่

ต่อไปนี้วิธีการแก้ไขปัญหา "ไฟล์นำออกใช้หมดอายุ" ในมิเรอร์โลคอลการแก้ไขข้อผิดพลาดนั้น:

apt-get -o Acquire::Check-Valid-Until=false update

อีกทางเลือกหนึ่งที่จะปิดการใช้งานการตรวจสอบอย่างถาวรเพิ่มไปยังprovision.sh:

echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks

จากนั้นคุณสามารถเรียกใช้aptคำสั่งทั้งหมดโดยไม่มีการ-oตั้งค่าสถานะ


1
การปิดใช้งานการตรวจสอบความถูกต้องที่จะนำไปใช้กับที่เก็บข้อมูลทั้งหมดนั้นเป็นอันตรายหรือไม่?
Maxime Lafarie

4

สำหรับผู้ที่ใช้ NodeJS ที่มีรากฐานภาพนักเทียบท่าที่เก่ากว่า ฉันมีรูปภาพที่ตรึงไว้ซึ่งมีแหล่งข้อมูลเก่ากว่านี้สำหรับการรวบรวม libs พิเศษ

บริบท: ถ้าคุณต้องการติดตั้ง python ในระหว่างการสร้างนักเทียบท่าคุณพบปัญหานี้ในระหว่างการสร้างรูปภาพ (ภายใน 24 ชั่วโมงที่ผ่านมา) เนื่องจากไม่สามารถอ้างอิงแหล่งที่มาได้ในระหว่างการสร้างนักเทียบท่า

ฉันลองแนะนำเส้นทางเก็บถาวรในโพสต์นี้ แต่ไม่สามารถผ่าน 404 (และมาจากตำแหน่ง archive.debian.org ณ วันนี้)

วิธีแก้ปัญหา: ฉันสิ้นสุดการสลับไปยังโหนดคอนเทนเนอร์รุ่นล่าสุด (ซึ่งมี python libs ติดตั้งไว้แล้ว) และทำการอัปเดต libs บางส่วนในแพ็คเกจ json (ซึ่งตอนนี้ยังรวมไบนารี libs ที่เคยต้องการ pythyon) ทำให้ปัญหาล้าสมัย .

ในท้ายที่สุดการอัพเดตอิมเมจพื้นฐานสำหรับคอนเทนเนอร์สแต็ก (โหนด: ล่าสุด) ดูเหมือนจะเป็นเส้นทางที่ตรงไปข้างหน้ามากที่สุดเพื่อแก้ไขปัญหา

ระวังสแต็กอิมเมจสแต็กที่มีการขึ้นต่อกันแบบไบนารีรวมอยู่อาจใช้เวลาสักครู่ในการอัปเดตเลเยอร์ระบบปฏิบัติการหลัก


สวัสดีเกลนขอบคุณสำหรับการโพสต์ ฉันคิดว่าฉันพบปัญหาเดียวกันใน dockerfile เนื่องจากฉันมี "RUN apt-get update -y && apt-get ติดตั้ง python python-dev curl -y --force-yes" ฉันกำลังใช้โหนด FROM: 6.11.2 ฉันต้องทำอย่างไรเพื่อให้ผ่านจุดนี้
แอรอน

1
สำหรับอิมเมจ Docker Node ทางเลือกหนึ่งคือการใช้-stretchอิมเมจ:node:<version>-stretch
ลูกาส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.