ทำไม apt-get จึงไม่จำเป็นต้องทำการรีสตาร์ทซึ่งตัวจัดการอัพเดตจะทำอย่างไร?


53

บ่อยครั้งที่ฉันพยายาม 'เอาชนะ' ผู้จัดการการอัปเดตด้วยการเปิดคอนโซลและป้อนลำดับ

sudo apt-get update
sudo apt-get upgrade

ซึ่งความรู้ของฉันที่ดีที่สุดควรอัปเดตแพ็คเกจทั้งหมดเป็นรุ่นล่าสุดที่มีความเสถียร ตัวจัดการการอัปเดตทำเช่นเดียวกันเท่าที่ฉันรู้

อย่างไรก็ตามบางครั้งตัวจัดการการอัพเดท (บ่อยที่สุดเมื่อมีการกระจายเคอร์เนลใหม่) ต้องเริ่มต้นใหม่หลังจากยุติ apt-getไม่เคยทำแม้แต่ตอนที่ดูเหมือนว่าฉันกำลังอัพเกรดเคอร์เนล ทำไมเป็นเช่นนี้


ในการตอบกลับการลงคะแนนซ้ำ: ฉันไม่ได้ถามว่าแพคเกจใดที่ต้องรีบูตเนื่องจากคำถามที่เชื่อมโยงคือ ค่อนข้างฉันถามว่าทำไม apt-getไม่ขอให้ฉันรีบูตแม้ว่าฉันจะรู้ว่ามีการปรับปรุงแพคเกจที่ผู้จัดการการปรับปรุงจะต้องรีบูต


10
นอกจากนี้ยังเป็นที่น่าสังเกตว่าการเรียงลำดับของการอัปเดตที่มีการครอบคลุมapt-get dist-upgradeแต่ไม่ใช่โดยapt-get updgradeมีแนวโน้มที่จะเป็นรายการที่จะทำให้โปรแกรมจัดการอัปเดตแนะนำการรีบูต
Jon Hanna

4
FWIW /var/run/reboot-requiredคุณสามารถตรวจสอบว่าจะต้องเริ่มต้นใหม่โดยการตรวจสอบการดำรงอยู่ของ นอกจากนี้ Byobu ยังแสดงไอคอน "จำเป็นต้องมีการอัพเดท" ในแถบสถานะเมื่อต้องการ
Andrea Corbellini

2
@ Pilot6 ไม่ได้จากระยะไกลใกล้เคียงกับการซ้ำ คำถามที่คุณทำเครื่องหมายจะถามว่าแพคเกจใดที่จำเป็นต้องรีบูต คำถามของฉันถามว่าทำไมวิธีการอัปเดตวิธีหนึ่งไม่ได้ขอให้ฉันรีบูตแม้ว่าฉันจะรู้ว่ามีการอัปเดตแพคเกจที่ต้องรีบูต
Jan

1
ตกลง. แต่มันมีความสัมพันธ์กันอย่างใกล้ชิด
Pilot6

1
@ Pilot6 ที่ฉันสามารถยอมรับ;)
มกราคม

คำตอบ:


81

เพราะapt-get(หรือแบบธรรมดาapt) สำหรับข้อดีและเมื่อข้อดีทำ:

sudo apt-get dist-upgrade

และดูเคอร์เนลใหม่ที่กำลังติดตั้งข้อดีรู้ว่าพวกเขาต้องรีบูตเพื่อเปิดใช้งาน ...

การอัปเดตอัตโนมัติสำหรับทุกคนที่นั่น!

;-)

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


4
ฉันหวังว่าฉันจะยอมรับคำตอบทั้งสามเพราะพวกเขาในทางเทคนิคพูดในสิ่งเดียวกัน แต่ผมคิดว่าผมจะพาคุณเพราะคุณทำให้ฉันยิ้มมากที่สุด;-)
ม.ค.

6
> :) อารมณ์ขันเล็กน้อยในคำตอบนั้นไม่เลวเลย! ;-)
Fabby

4
การสนับสนุนการจับเคอร์เนลเคอร์เนลอยู่ในกระแสหลักในขณะนี้ดังนั้นโชคดีที่เราอาจไม่ต้องรีบูตอีกต่อไปเมื่อเราไปถึง LTS 16.04
kasperd

คำอธิบายของคุณapt-get upgradeเทียบกับการapt-get dist-upgradeจับคู่ทั้งman apt-getประสบการณ์การใช้เครื่องมือของฉัน ฉันค่อนข้างแน่ใจว่าความแตกต่างเกี่ยวกับการจัดการการพึ่งพาที่จะต้องมีการติดตั้งหรือลบแพคเกจ; "อัพเกรด" ข้ามแพ็คเกจเหล่านั้น "dist-upgrade" พยายามติดตั้ง / ลบแพ็คเกจเพื่อให้การอัปเกรดเกิดขึ้น
Derobert

1
@Fabby ค่อนข้างสับสนในขณะที่คุณลบย่อหน้านั้นออกไป แต่ถ้าคุณดูที่หน้า man apt-get คำอธิบายของ "upgrade" กล่าวเช่น "ภายใต้สถานการณ์ที่ไม่ได้ติดตั้งแพ็คเกจที่ถูกลบหรือแพ็คเกจที่ยังไม่ได้ติดตั้ง และติดตั้งแล้ว ". ดังนั้นหากการอัปเดตแอปปกติต้องติดตั้งแพคเกจใหม่ (ตัวอย่างเช่นไลบราไลบรารีใหม่) จะไม่สามารถทำได้ หรือหากการอัพเดตเคอร์เนลใช้ชื่อแพ็กเกจเดียวกันมันก็จะเสร็จสิ้น
Derobert

37

Update manager แนะนำให้รีสตาร์ทเมื่อมีการอัพเกรดเมล็ดหรือแพ็คเกจระบบอื่น ๆ พร้อมบริการที่ทำเครื่องหมายว่าจะรีบูตเมื่ออัพเกรด

ในกรณีนี้/var/run/reboot-requiredถูกกำหนดโดยสคริปต์การติดตั้งแพคเกจ

บรรทัดคำสั่งapt-get upgradeไม่แนะนำอะไรเลยเนื่องจากเป็นเป้าหมายสำหรับผู้ใช้ขั้นสูงที่สามารถตัดสินใจได้เองว่าจะเริ่มระบบใหม่เมื่อใด ;-)

แต่หลังจากอัปเกรดโดยใช้ apt-get Update Manager ในระยะเวลาหนึ่งจะแนะนำให้รีสตาร์ทด้วย


ฉันไม่อยากจะเชื่อเลยว่าจริงหรือ? "บริการที่ไม่สามารถรีสตาร์ทได้โดยไม่ต้องรีบูตระบบทั้งหมด"
AB

2
ใช่นี่เป็นเรื่องจริง ชอบ "คนธรรมดา" และคนอื่น ๆ ไม่มาก.
Pilot6

2
@ Pilot6 ฟังดูไร้สาระหากไม่สามารถรีสตาร์ทได้โดยไม่ต้องรีบูตเครื่อง มันควรจะเป็นการอัพเกรดจาก SysV init ซึ่งสามารถรีสตาร์ทได้โดยไม่ต้องรีบูต
kasperd

@kasperd นั่นเป็นเพียงตัวอย่าง ฉันสังเกตเห็นว่า Update manager ขอให้รีสตาร์ทบนแพ็คเกจที่ไม่ใช่เคอร์เนล จะต้องมีรายการของแพ็คเกจเหล่านี้ ฉันไม่แน่ใจว่ามีคนธรรมดาพุ่งพรวด
Pilot6

1
@MaxNanasy Update manager จะป๊อปอัปและแนะนำให้รีบูต มันอาจเกิดขึ้นในขณะที่
Pilot6

15

เมื่อคุณติดตั้งเคอร์เนลใหม่คุณต้องรีสตาร์ทเครื่องเพื่อให้การเปลี่ยนแปลงมีผลใช้งาน apt-get เพียงแค่ไม่จู้จี้กับมัน


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

7

apt-get จะแจ้งให้คุณทราบถึงเทอร์มินัลเมื่อทำการติดตั้งแพคเกจที่ต้องการหากจำเป็นต้องรีบูต

update-manager เป็นโซลูชันแบบ all-in-one ที่ดูแลทุกความต้องการในการอัพเกรดของคุณ

ฉันชอบ apt-get แต่ไม่รู้ว่าทำไม :)


2

apt-get upgrade ไม่อัปเดตเคอร์เนล

apt-get dist-upgrade อัพเดตเคอร์เนลใน Ubuntu

เคอร์เนล Linux เวอร์ชันก่อน 4.1 จำเป็นต้องรีบูตเมื่อเคอร์เนลถูกอัพเดต

แพ็คเกจอื่น ๆ ไม่จำเป็นต้องทำการรีบูต แต่เพียงรีสตาร์ทแอปพลิเคชันเท่านั้น แอปพลิเคชัน Windows บางตัวที่ทำงานบน Wine ขอให้รีบูต แต่เพียงพิมพ์คำสั่ง:

wineserver -k

และรีสตาร์ทแอปพลิเคชัน

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