Score:4

เหตุใดจึงไม่พบแพ็คเกจรุ่นเก่าบางรุ่น

ธง gr

ฉันกำลังพยายามกำหนดค่า build engine (Bazel) เพื่อใช้ gcc-7 เพื่อที่ฉันต้องการลิงก์ไปยังแพ็คเกจ .deb ทั้งหมดที่จำเป็น

หนึ่งในการพึ่งพาของ gcc-7 คือ libatomic1 (>= 7.5.0-6ubuntu2) ฉันรู้ว่านี่คือ "มากกว่าหรือเท่ากับ" แต่ถ้าฉันต้องการใช้ไลบรารีดั้งเดิมที่แจกจ่ายด้วย gcc-7 ฉันจะหาได้ที่ไหน

เช่น ถ้าฉันทำ ดาวน์โหลด apt --print-uris libatomic1=7.5.0-6ubuntu2 ทำไม apt บอกฉัน:

E: ไม่พบเวอร์ชัน '7.5.0-6ubuntu2' สำหรับ 'libatomic1'

แต่เมื่อฉันทำ ฉลาดแสดง libgcc-7-dev ฉันเห็นว่า libatomic1>=7.5.0-6ubuntu2 ถูกระบุว่าเป็นการพึ่งพา ฉันจะหา libatomic1=7.5.0-6ubuntu2 นี้ได้ที่ไหน

ฉันคิดว่าฉันอาจพบแพ็คเกจห้องสมุดใน http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-7/ แต่มันไม่ได้อยู่ที่นั่น

N0rbert avatar
zw flag
การติดตั้งแพ็คเกจเวอร์ชันที่แน่นอนเป็นความคิดที่ไม่ดี คุณไม่ควรถือว่า APT เป็น Ruby/Rake/rvm หรือ Npm หรือ pip
Score:5
ธง bo

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

ฉันทำการค้นหาที่ package.ubuntu.com โดยใช้ "โฟกัส" เป็นการกระจาย

ป้อนคำอธิบายรูปภาพที่นี่

อีกเหตุผลหนึ่งที่เวอร์ชันเก่าไม่พร้อมใช้งานเนื่องจากเวอร์ชันมาตรฐานของ libatomic1 ไม่ได้สร้างจาก gcc-7 อีกต่อไป อย่างที่เห็น ที่นี่เวอร์ชันปัจจุบันที่มีให้สำหรับ Ubuntu Focal สร้างขึ้นจาก gcc-10 (ทางด้านขวามือใต้ "Ubuntu Resources")

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

คุณสามารถเปิดใช้งานแหล่งที่มาในของคุณ /etc/apt/sources.list ไฟล์แล้วเรียกใช้:

sudo apt ซอร์ส gcc-7

หรือดาวน์โหลดที่มาได้จาก package.ubuntu.com และทางด้านขวามือ คุณจะเห็นสามตัวเลือกในการดาวน์โหลดแหล่งที่มา

ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้ ควรสังเกตด้วยว่าหากคุณกำลังจะสร้างบางอย่าง คุณจะต้องดาวน์โหลดการขึ้นต่อกันของบิลด์ที่จำเป็น:

sudo apt build-dep gcc-7
mchid avatar
bo flag
แน่นอนว่าการสร้างจากซอร์สจะไม่เป็นไปตามการพึ่งพา dpkg แต่คุณจะสามารถทำงานกับ lib ที่คุณคอมไพล์จากซอร์สได้โดยการอ้างอิงอย่างชัดเจนเมื่อคุณเรียกใช้ gcc-7
Score:1
ธง cm

ที่เก็บ Apt มักจะมีเพียงหนึ่งเวอร์ชันของแพ็คเกจสำหรับรีลีสที่กำหนด หากคุณต้องการแพ็คเกจ Ubuntu ที่เก่ากว่าคุณจะต้องค้นหา "ประวัติการเผยแพร่" สำหรับแพ็คเกจต้นทางบน Launchpad จากนั้นคุณสามารถติดตามลิงก์ไปยังเวอร์ชันเฉพาะ จากนั้นลิงก์ไปยังรุ่น และจากนั้นลิงก์ไปยังแต่ละแพ็คเกจในที่สุด

อย่างไรก็ตามฉันไม่เชื่อว่าแพ็คเกจ libatomic1 ที่เวอร์ชัน 7.5.0-6ubuntu2 นั้นเคยมีอยู่จริง เมื่อมีการเพิ่มซอร์สแพ็กเกจสำหรับ gcc เวอร์ชันหลักใหม่ลงในเดเบียนหรืออูบุนตู แพ็กเกจดังกล่าวจะเข้าควบคุมแพ็กเกจไลบรารีสำหรับไลบรารีที่สนับสนุนรันไทม์ gcc (libgcc, libatomic, libasan เป็นต้น)

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

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

โพสต์คำตอบ

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