Score:0

เหตุใดและจะดีบักอย่างไร: แพ็คเกจต่อไปนี้มีการอ้างอิงที่ไม่ได้รับการตอบสนอง ... แต่จะไม่ถูกติดตั้ง

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

แพ็คเกจต่อไปนี้มีการพึ่งพาที่ไม่ตรงกัน:
 cuda : ขึ้นอยู่กับ: cuda-11-4 (>= 11.4.2) แต่จะไม่ถูกติดตั้ง
E: ไม่สามารถแก้ไขปัญหาได้ คุณมีพัสดุที่เสียหาย

"จะไม่ติดตั้ง" หมายความว่าอย่างไร ทำไม เหตุใดจึงไม่ติดตั้งการพึ่งพา ฉันจะรู้ได้อย่างไร

"คุณมีบรรจุภัณฑ์ที่เสียหาย" หมายความว่าอย่างไร แพ็คเกจไหนพัง? ฉันจะรู้ได้อย่างไร

"สถานการณ์ที่เป็นไปไม่ได้" หมายถึงอะไร? ฉันจะขอรายละเอียดเพิ่มเติมได้อย่างไร

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

ฉันไม่ได้ถามเรื่องนี้โดยเฉพาะ คูดา แพ็คเกจที่นี่ ฉันยังไม่ถามถึงวิธีการแก้ไขหรือแก้ไขอะไรที่นี่ ฉันถามแค่เกี่ยวกับ วิธีแก้ไขข้อบกพร่อง และ เข้าใจ และจัดการดังกล่าว ฉลาด (หรือ ฉลาดรับ) ข้อความโดยทั่วไปสำหรับแพ็คเกจใดๆ

ru flag
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้[ย้ายไปแชท](https://chat.stackexchange.com/rooms/130195/discussion-on-question-by-albert-why-and-how-to-debug-the-following-packages- ชม).
Score:1
ธง fr

ฉันเห็นด้วยอย่างเต็มที่ว่าข้อความ apt จำนวนมากมีความคลุมเครือมากกว่าที่ใคร ๆ ก็ชอบ และมักจะทำให้เข้าใจผิดด้วยซ้ำ อย่างไรก็ตาม สิ่งที่ดีคือเมื่อทำงานกับ apt ไประยะหนึ่ง คุณจะเจอข้อความซ้ำแล้วซ้ำเล่า และจะชินกับวิธีแก้ไข

ขึ้นอยู่กับสิ่งที่คุณรู้เกี่ยวกับสิ่งที่ apt ทำอยู่เบื้องหลัง อาจไม่ง่ายนักที่จะเข้าใจรายละเอียดทั้งหมด ฉันจะให้การทดลองโดยหวังว่าจะคาดเดาภูมิหลังของคุณและตีความคำถามของคุณได้อย่างถูกต้อง โปรดอดทนกับฉันถ้าฉันทำผิด :-)

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

เพื่อให้เข้าใจสิ่งนี้ คุณจำเป็นต้องรู้ว่าแพ็คเกจส่วนใหญ่ไม่ได้มาพร้อมกับไฟล์ทั้งหมดที่จำเป็นต่อการรัน Linux custom คือการใช้ซอฟต์แวร์โอเพ่นซอร์สทุกที่ที่คุณทำได้ ดังนั้นแต่ละแพ็คเกจจึงใช้ไลบรารีจำนวนมาก นั่นคือ binary blobs ที่เต็มไปด้วยฟังก์ชันที่โปรแกรมเรียกใช้งานได้ทันที ปัญหาคือในแง่หนึ่งโครงการโอเพ่นซอร์สเหล่านั้นเปลี่ยนแปลงตลอดเวลาและได้รับการอัปเดตบ่อยมาก และในทางกลับกัน โปรแกรมจะถูกเข้ารหัสให้ทำงานกับเวอร์ชันเฉพาะ เช่น เวอร์ชันที่นักพัฒนาใช้ในขณะที่คอมไพล์ ดังนั้นคุณต้องมีเวอร์ชันนั้นหรือเวอร์ชันที่เข้ากันได้ มันจะเป็นเรื่องง่ายถ้านักพัฒนาทุกคนเช่น ของ CUDA จะจัดส่งไลบรารีทั้งหมดที่ใช้ระหว่างการคอมไพล์พวกเขาไม่ได้เพราะส่วนใหญ่เป็นไลบรารีมาตรฐานที่มีแนวโน้มว่าจะถูกใช้โดยโปรแกรมอื่นเช่นกัน และนั่นหมายความว่าแต่ละโปรแกรมจะมีขนาดใหญ่มากในการดาวน์โหลดและเก็บข้อมูลที่ซ้ำกันทั้งหมดนี้ (Docker หรือ AppImage โดยวิธีการทำเช่นนั้นเพื่อ ให้แก้ปัญหานี้) เนื่องจากปัญหานี้ คุณมักจะมีไลบรารีระบบหลายเวอร์ชันในระบบของคุณ อย่างไรก็ตาม มันเป็นเรื่องยุ่งยากเมื่อไลบรารีเข้ากันไม่ได้หรือขัดแย้งกัน เช่น เนื่องจากมีเพียงหนึ่ง lib เท่านั้นที่สามารถเข้าถึงทรัพยากรระบบได้ในแต่ละครั้ง ในกรณีนั้น คุณต้องค้นหาเวอร์ชันของไลบรารีที่เข้ากันได้กับแพ็กเก็ตที่ติดตั้งไว้ทั้งหมดที่กำลังใช้งาน

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

ตอนนี้คุณสามารถทำอะไรได้บ้าง? คุณสามารถแก้ไขได้ดีกว่า apt เมื่อคุณติดตามทุกข้อขัดแย้ง จากนั้นค้นหาว่าแอปพลิเคชันใดได้รับผลกระทบ จากนั้นตัดสินใจว่าสิ่งใดสำคัญและสิ่งใดไม่สำคัญตัวอย่างเช่น คุณอาจพบว่าตัวบล็อกสำหรับการติดตั้ง CUDA เป็นเครื่องมือส่งข้อความเริ่มต้นที่คุณไม่ได้ใช้งาน ทางออกที่ง่ายคือการถอนการติดตั้งอันนี้และ libs ทั้งหมด (เมื่อไม่ได้ใช้ที่อื่น apt จะทำเช่นนั้น) หลังจากนั้นสามารถติดตั้งได้ ขออภัย ฉันไม่ทราบถึงเครื่องมือใด ๆ ที่ช่วยให้คุณสามารถเรียกดูแผนผังการพึ่งพาเหล่านั้นด้วยวิธีที่เข้าใจได้ง่ายและติดตามการเชื่อมต่อเหล่านั้น

ฉันมีกรณีเหล่านี้เช่นกัน และสิ่งแรกคือลองใช้ Aptitude ไม่ได้ติดตั้งตามค่าเริ่มต้น:

  sudo ติดตั้งความถนัด

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

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

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

ตอนนี้ apt อยู่เบื้องหลังค่อนข้างซับซ้อน เนื่องจากเขียนด้วยภาษาระดับต่ำ ดังนั้นจึงค่อนข้างยากที่จะรวมอัลกอริธึมการตรวจจับและการแก้ไขที่ซับซ้อนหรือขั้นสูง มันถูกทำให้เป็นเครื่องมือที่แข็งแกร่งและมีขนาดเล็กที่ทำงานบนทุกระบบ (แม้แต่น้อยที่สุด) และนั่นก็คือ

in flag
ขอบคุณ นั่นมีประโยชน์มากในการอธิบายส่วน "ทำไม" ของคำถามของฉัน จึงมีความขัดแย้งกัน แต่คุณยังบอกว่า เป็นไปไม่ได้จริงๆ ที่จะเห็นความขัดแย้งคืออะไร? เป็นไปได้อย่างไร? เครื่องมือและตัวจัดการแพ็คเกจอื่น ๆ เกือบทั้งหมดที่ฉันใช้มักจะพิมพ์สิ่งที่ขัดแย้งกันเสมอ เช่น ไม่สามารถติดตั้ง saing lib-v1 และ lib-v2 พร้อมกันได้ แต่ได้รับการร้องขอจากแผนผัง dep นี้ ฉันค่อนข้างแน่ใจว่า Gentoo Portage โผล่ออกมาจะพิมพ์ออกมาแบบนั้น
CatMan avatar
fr flag
ฉันเห็นด้วย มันฟังดูขาวดำไปหน่อย บ่อยครั้งที่ฉันควรจะเน้นว่า "ง่าย" เช่น ง่ายๆ จากมุมมองของผู้ใช้ นักพัฒนาซอฟต์แวร์จะเรียนรู้ถึงวัตถุประสงค์และฟังก์ชันของแพ็คเกจ และสามารถตัดสินผลกระทบของการเปลี่ยนแปลงได้ง่ายขึ้น ไม่ใช่ devs ไม่สามารถทำได้ แต่พวกเขาควรได้รับวิธีการติดตั้งสิ่งต่าง ๆ ด้วย บางครั้งการทำให้สิ่งที่ซับซ้อนทางเทคนิค "ง่าย" ต้องใช้ความพยายามมากกว่าการทำคุณสมบัติหลักเอง ในโอเพ่นซอร์สฉันคิดว่ามันเป็นสิ่งที่สร้างความเสียหายให้กับตนเองทางวัฒนธรรม: ผู้คนรู้ว่าใครเป็นผู้คิดค้นฟีเจอร์ แต่ไม่มีใครสนใจว่าใครทำให้มันใช้งานง่าย อย่างไรก็ตาม หวังว่าคุณจะสามารถแก้ปัญหาของคุณได้

โพสต์คำตอบ

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