เนื่องจากข้อผิดพลาด # 693758ฉันต้องการป้องกันapt-get upgrade
และ Update Manager จากการอัปเดตแพคเกจ "libgtk2.0-0"
สิ่งนี้จะสำเร็จได้อย่างไร
disable packages from the auto-update
เนื่องจากข้อผิดพลาด # 693758ฉันต้องการป้องกันapt-get upgrade
และ Update Manager จากการอัปเดตแพคเกจ "libgtk2.0-0"
สิ่งนี้จะสำเร็จได้อย่างไร
disable packages from the auto-update
คำตอบ:
มีสี่วิธีในการหยุดหีบห่อแพ็คเกจ: ด้วย dpkg, apt, aptitude หรือ dselect
พักบรรจุภัณฑ์:
echo "<package-name> hold" | sudo dpkg --set-selections
ยกเลิกการระงับ:
echo "<package-name> install" | sudo dpkg --set-selections
แสดงสถานะของแพ็คเกจของคุณ:
dpkg --get-selections
แสดงสถานะของแพ็คเกจเดียว:
dpkg --get-selections | grep "<package-name>"
ถือแพคเกจ:
sudo apt-mark hold <package-name>
ยกเลิกการระงับ:
sudo apt-mark unhold <package-name>
แสดงแพ็คเกจทั้งหมดที่ถูกระงับ:
sudo apt-mark showhold
ด้วย dselect ป้อน [S] หน้าจอเลือกตั้งพบแพคเกจที่คุณต้องการที่จะยึดมั่นในสถานะปัจจุบันและกดหรือ= Hการเปลี่ยนแปลงจะมีผลทันทีหลังจากออกจากหน้าจอเลือก [S]
วิธีการต่อไปนี้มีข้อ จำกัด ในการล็อค / บรรจุหีบห่อภายในความถนัดหรือ synaptic ไม่มีผลต่อ apt-get / apt
ถือแพคเกจ:
sudo aptitude hold <package-name>
ยกเลิกการระงับ:
sudo aptitude unhold <package-name>
ไปที่Synaptic Package Manager (ระบบ> การดูแลระบบ> Synaptic Package Manager)
คลิกปุ่มค้นหาและพิมพ์ชื่อแพ็คเกจ
เมื่อคุณพบแพคเกจให้เลือกและไปที่แพคเกจเมนูและเลือกล็อครุ่น
แพ็คเกจดังกล่าวจะไม่ปรากฏในตัวจัดการอัปเดตและจะไม่ได้รับการอัปเดต
devscripts
แพคเกจจำนวนมากจะถูกดึงเป็นแพ็คเกจที่แนะนำ ขณะที่ผมไม่จำเป็นต้องมี MailServer (postfix) ผมสามารถปิดการใช้งานการติดตั้งของมันโดยการทำงานก่อนที่จะใช้echo postfix hold | sudo dpkg --set-selections
sudo apt-get install devscripts
การดำเนินการพักนี้ยังคงมีอยู่สำหรับการติดตั้งนี้หลังจากการติดตั้งการเลือกจะถูกรีเซ็ต
apt-mark
ไม่รองรับhold
ในเวอร์ชั่น 0.7.25 (Ubuntu Lucid)
apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev
ATI,
หากต้องการพักแพคเกจ "foo" ไว้:
echo "foo hold" | dpkg --set-selections
ในกรณีของคุณเราจะหยุดไวน์ไว้:
sudo -i
echo "wine hold" | dpkg --set-selections
หากต้องการยกเลิกการระงับ:
sudo -i
echo "wine install" | dpkg --set-selections
apt-get install wine=1.2.3
ติดตั้งรุ่นที่เฉพาะเจาะจงผ่าน การพักสายป้องกันไม่ให้apt-get (dist-)upgrade
เปลี่ยนแปลง
/var/cache/apt/archives
) ไม่ขึ้นกับการพัก & อัปเกรด & เนื้อหาดังนั้นเวอร์ชันทั้งหมดที่คุณดาวน์โหลดจะอยู่ที่นั่นจนกว่าคุณจะทำงานapt-get [auto]clean
ฉันกำลังมองหาสิ่งเดียวกันและหลังจากการวิจัยจำนวนมากฉันพบว่าการใช้ไวยากรณ์ต่อไปนี้คุณสามารถห้ามหนึ่งรุ่นเฉพาะ แต่อนุญาตให้มีการปรับปรุงต่อไป:
แพคเกจ: compiz-plugins-main Pin: รุ่น 1: 0.9.7.0 ~ bzr19-0ubuntu10.1 ลำดับความสำคัญพิน: -1
สิ่งนี้จะเข้าสู่ไฟล์ / etc / apt / preferences
ติดตั้งโดยใช้synaptic
sudo apt-get install synaptic
เรียกใช้โดยใช้gksudo synaptic
และในช่องค้นหาค้นหาแพ็คเกจที่คุณต้องการล็อคเช่น:gedit
จากเมนูแพ็คเกจเลือกล็อคเวอร์ชัน :
และนั่นคือทั้งหมดเวอร์ชันที่ติดตั้งในปัจจุบันในช่วงเวลาของการล็อคจะยังคงติดตั้งแม้ในระหว่างการอัพเกรด
การป้องกันไม่ให้มีการติดตั้งแพคเกจเรียกว่า "การถือแพ็คเกจ" และมันง่ายมากที่จะทำ:
echo package_name hold | dpkg - ชุดตัวเลือก
... โดยที่ * package_name * เป็นชื่อของแพ็คเกจที่คุณต้องการป้องกันไม่ให้ติดตั้ง
หมายเหตุ:คำสั่งดังกล่าวจะใช้สิทธิ์ของรูท คุณอาจต้องพิมพ์sudo su
ก่อนเรียกใช้
s/sudo su/sudo -s/g
(หรือsudo -i
) ( -i
จะให้เปลือกเข้าสู่ระบบ-s
จะไม่)
เนื่องจากบางครั้งapt-get
ถูกแทนที่ด้วยapt
ดังนั้นตัวอย่างเช่นฉันต้องการป้องกัน Firefox ไม่ให้อัปเดตเป็นรุ่นที่สูงกว่า 56 เนื่องจากมี Add-on จำนวนมากเช่น"กลุ่มแท็บ"ไม่ทำงานกับ Firefox 57 ใหม่อีกต่อไป (ดู "WebExtensions" อัปเดต ")
เป็นไปได้ที่จะเก็บมากกว่าหนึ่งแพ็กเกจด้วยคำสั่งเดียวและใช้สัญลักษณ์แทน
sudo apt-mark hold firefox firefox-locale-*
หากคุณควรที่จะเปิดเผยพวกเขาในภายหลังนั่นคือคำสั่ง:
sudo apt-mark unhold firefox firefox-locale-*
ฉัน synaptic คุณสามารถตรึงรุ่นของแพคเกจเฉพาะฉันไม่แน่ใจ 100% ว่าจะแก้ไข apt-get แต่มันจะหยุดตัวจัดการการปรับปรุงแน่นอน
ในการตรึงแพคเกจให้เลือกใน synaptic จากนั้นเปิดเมนูแพ็คเกจและเลือกเวอร์ชันค้าง
หวังว่านี่จะช่วยได้
ทุกสิ่งที่คุณอยากรู้เกี่ยวกับแพ็คเกจ "การถือครอง" และ "การตรึง" ให้กับรุ่นเฉพาะ: https://help.ubuntu.com/community/PinningHowto
คุณสามารถใช้ความสามารถเฉพาะ "แทนที่เฉพาะ" เช่นนี้:
aptitude reinstall ~i oracle-java8-jre:
นี่เป็นเพียงการใช้ครั้งเดียวเท่านั้น (ไม่ได้เก็บไว้สำหรับการติดตั้งในอนาคต), แทนที่เฉพาะเพื่อติดตั้งแพ็กเกจทั้งหมดในระบบของคุณ แต่ไม่ใช่ oracle-java8-jre
หากคุณใช้การเขียนทับแบบเฉพาะของแพคเกจจะอยู่ในสถานะเก็บความสามารถชั่วขณะหนึ่งจะไม่พยายามติดตั้ง
สิ่งที่ดีมากถ้าคุณคิดว่าระบบของคุณถูกบุกรุก
หากคุณติดตั้ง Synaptic คุณสามารถเลือกแพ็คเกจและใช้เมนูแพ็คเกจ -> ล็อคเวอร์ชันเพื่อป้องกันไม่ให้อัปเดต
คุณสามารถติดตั้ง Synaptic ด้วย sudo apt-get install synaptic ฉันพบว่ามันมีประโยชน์มากกว่าศูนย์ซอฟต์แวร์ ... จากนั้นอีกครั้งฉันเป็นโรงเรียนค่อนข้างเก่า :)
บางครั้งอาจต้องการเก็บแพคเกจทั้งหมดที่ติดตั้งอยู่ในปัจจุบัน นี่คือวิธี
ก่อนอื่นให้บันทึกสถานะปัจจุบันเพื่อให้คุณสามารถยกเลิก:
dpkg --get-selections > current_selections.txt
จากนั้นให้ระงับแพ็คเกจทั้งหมด:
dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections
ในที่สุดเมื่อคุณต้องการเปลี่ยนกลับเป็นสถานะก่อนหน้า:
dpkg --set-selections < current_selections.txt
กรณีการใช้งานหนึ่งกรณีนี้อาจเกิดขึ้นเมื่อสร้าง VM หรือ Amazon AMI snapshot เพื่อโอนย้ายจาก QA ไปยังสภาพแวดล้อมการผลิต
การเพิ่มรายละเอียดไปยังความคิดเห็นของ@ sogerที่เกี่ยวข้องกับ Ubuntu 16.04
Ubuntu 16.04 ไม่มีไฟล์ / etc / apt / preferences ที่มีอยู่ตามค่าเริ่มต้น หากคุณยังไม่มีในตอนนี้เพียงแค่สร้างไฟล์ใหม่และเติมด้วย stanza ตามที่ @soger อธิบายด้านบนเพื่อไม่รวมแพ็กเกจที่กำหนดและการอ้างอิงจากการอัพเดต
หลังจากนั้นวิ่งapt update
และคุณเป็น GTG : 0)
ตัวอย่างเช่นฉันมีเซิร์ฟเวอร์ Ubuntu 16.04.5 LTS พร้อมการ์ดแสดงผล Intel และการ์ด NVidia การ์ด NVidia เป็นการ์ดเดียวที่ใช้ เซิร์ฟเวอร์ยังใช้ไดรเวอร์ CUDA ฉันมีปัญหาที่apt
ยังคงยืนยัน
va ไดรเวอร์ทั้งหมด
(ไดรเวอร์ของ Intel) จำเป็นต้องมีการอัพเดต แต่ไม่สามารถระบุรุ่นที่จะติดตั้งได้ นี่คือการขับรถฉันถั่วและฉันไม่ต้องการไดรเวอร์ Intel ต่อไป ฉันป้อนข้อความนี้ลงในไฟล์การกำหนดค่าตามความชอบและล้างข้อมูลออกแก้ปัญหาได้
Package: va-driver-all
Pin: release *
Pin-Priority: -1