จะห้ามแพ็คเกจเฉพาะที่จะติดตั้งได้อย่างไร?


27

ฉันสามารถกำหนดค่า Ubuntu ให้ไม่ติดตั้งแพคเกจเฉพาะได้หรือไม่แม้ว่าจะต้องใช้แพ็คเกจอื่นที่ติดตั้งหรือไม่


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

2
@enzotib ก่อนอื่นคุณผิด: การพึ่งพาแพ็คเกจสามารถซ้ำซ้อนได้ มีตัวอย่างมากมายหรือคุณสามารถติดตั้งแพ็กเกจที่ต้องการได้อีกวิธีหนึ่ง (ตัวอย่างเช่นฉันติดตั้ง openjdk-6 ไว้เพราะมันต้องการแอปพลิเคชัน java ทั้งหมดใน repos แต่ฉันไม่เคยใช้ openjdk-6 จริงๆ ตั้งค่าทุกอย่างเพื่อใช้ openjdk-7 หรือ Oracle JDK 7 แทน) และสิ่งที่สอง - ฉันไม่ได้บอกว่าต้องการติดตั้งแพ็กเกจแบบพึ่งพา - มันสามารถทิ้งข้อผิดพลาดได้ในกรณีนี้ฉันแค่ต้องการให้แน่ใจว่าจะไม่มีการติดตั้งแพ็กเกจใด ๆ
อีวาน

มีเป็นคำถามที่คล้ายกัน
Nimmermehr

คำตอบ:


28

ใน Debian เราสามารถใช้apt-pinningสำหรับเวอร์ชั่นและควบคุมการติดตั้งใน Ubuntu ได้เช่นกัน

เพื่อป้องกันการติดตั้งแพคเกจที่กำหนดเราอาจใส่บรรทัดต่อไปนี้ใน /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

โดยการให้ความสำคัญเชิงลบสำหรับพินนี้เราจะปิดกั้นการติดตั้ง<nameofpackage>จากแหล่งกำเนิดที่ไม่ได้ระบุเพิ่มเติมคือพื้นที่เก็บข้อมูลในท้องถิ่นของเรา แน่นอนว่าเราสามารถใช้ apt-pinning เพื่อปักหมุดแพกเกจรุ่นหรือแหล่งกำเนิดที่เฉพาะเจาะจง

ก่อนที่คุณจะดำเนินการต่อขอแนะนำอย่างยิ่งให้อ่านเอกสารที่ให้ไว้ด้านบนและ manpage จากapt_preferencesเนื่องจากข้อผิดพลาดในไฟล์เหล่านี้จะไม่ได้รับการตรวจสอบโดย apt และหากเกิดขึ้นอาจทำให้การจัดการแพ็กเกจของคุณเสียหาย

สำหรับทางเลือกอื่นและเพื่อป้องกันการอัพเดตแพ็คเกจที่ให้ดู:


คุณรู้หรือไม่ว่าสิ่งนี้สามารถใช้งานได้ใน Ubuntu 12.04? อีกคำถามหนึ่งคือการรายงานว่าอาจไม่ได้ผล
Lucio

1
@Lucio: แน่นอน - ยังคงใช้งานได้; เพิ่งทดสอบให้ทำงานใน 12.10 ด้วย
Takkat

3
ในPackage:-line คุณสามารถแสดงรายการหลายแพคเกจที่คั่นด้วยช่องว่างดังนี้: แพคเกจ: metacity metacity-common libmetacity-private0a (ดูเหมือนว่ารูปแบบเช่นแพคเกจ: ความกล้าหาญ * นอกจากนี้ยังเป็นไปได้)
Volker Siegel

5
ใน Ubuntu 16.04 ใช้งานPin: origin ""ไม่ได้สำหรับฉัน แต่Pin: release *ทำได้
barbaz

3

ในเดเบียนคุณสามารถบล็อกแพ็คเกจและแพ็คเกจนั้นจะไม่อัพเกรดอีกต่อไป

# echo name_of_package hold | dpkg --set-selections

แต่ฉันไม่แน่ใจว่าคุณสามารถห้ามได้


ฉันเพิ่งลองบน Ubuntu 15.10 (เจ้าเล่ห์) และมันไม่ได้ปิดกั้นแพ็กเกจ เพิ่งเตือนฉันpackage not in database
Brent Baccala

2

ฉันมีแพ็คเกจที่แอบย่องเข้ามาและทำลายคอมไพล์

sudo apt-mark hold libgnutls-deb0-28

ควรป้องกันไม่ให้มีการติดตั้งแพ็คเกจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.