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