Mengapa apt-get tidak memerlukan restart, di mana manajer pembaruan tidak?

53

Seringkali saya mencoba 'mengalahkan' manajer pembaruan dengan membuka konsol dan memasukkan urutannya

sudo apt-get update
sudo apt-get upgrade

yang, sepengetahuan saya, harus memperbarui semua paket ke rilis stabil terbaru mereka. Manajer pembaruan melakukan hal yang sama, sejauh yang saya tahu.

Namun, manajer pembaruan kadang-kadang (paling sering ketika kernel baru didistribusikan) memerlukan restart setelah berakhir. apt-gettidak pernah, bahkan ketika sepertinya saya meningkatkan kernel. Kenapa begitu?


Menanggapi suara duplikat: Saya tidak menanyakan paket mana yang memerlukan reboot seperti pertanyaan terkait. Sebaliknya saya bertanya mengapa apt-get tidak meminta saya untuk reboot bahkan ketika saya mengenali paket sedang diperbarui bahwa manajer update akan memerlukan reboot untuk.

Jan
sumber
10
itu juga perlu dicatat bahwa jenis pembaruan yang dicakup oleh apt-get dist-upgradetetapi tidak oleh apt-get updgradelebih cenderung menjadi orang-orang yang akan menyebabkan pembaruan manajer menyarankan reboot.
Jon Hanna
4
FWIW, Anda dapat memeriksa apakah restart diperlukan dengan memeriksa keberadaan /var/run/reboot-required. Selain itu, Byobu menunjukkan ikon "pembaruan yang diperlukan" di bilah status saat diperlukan.
Andrea Corbellini
2
@ Pilot6 Bahkan jauh dekat untuk menjadi duplikat. Pertanyaan yang Anda tandai adalah menanyakan paket mana yang memerlukan reboot. Pertanyaan saya adalah bertanya mengapa satu metode pembaruan tidak meminta saya untuk reboot meskipun saya mengenali paket yang diperbarui yang akan membutuhkan reboot.
Jan
1
BAIK. Tapi itu terkait erat.
Pilot6
1
@ Pilot6 Bahwa aku bisa setuju untuk;)
Jan

Jawaban:

81

Karena apt-get(atau sederhana apt) untuk pro dan ketika pro melakukan:

sudo apt-get dist-upgrade

dan melihat kernel baru sedang diinstal, pro tahu mereka harus reboot untuk mengaktifkannya ...

Pembaruan otomatis untuk semua orang di luar sana!

;-)

Atau, Anda sekarang dapat menginstal Ubuntu Live kernel Patching dari versi 16.04 dan seterusnya yang memungkinkan Anda untuk memperbarui kernel Anda saat server Anda sedang berjalan.

Fabby
sumber
4
Saya berharap saya dapat menerima ketiga jawaban karena semuanya secara teknis mengatakan hal yang sama. Tapi saya pikir saya akan mengambil Anda karena Anda membuat saya tersenyum paling ;-)
Jan
6
> :) Sedikit humor dalam sebuah jawaban tidak pernah buruk! ;-)
Fabby
4
Dukungan livepatching kernel ada di kernel mainstream sekarang, jadi dengan sedikit keberuntungan kita mungkin tidak perlu reboot lagi begitu kita sampai ke LTS 16.04.
kasperd
Deskripsi Anda tentang apt-get upgradevs. apt-get dist-upgradecocok man apt-getdengan pengalaman saya menggunakan alat. Saya cukup yakin perbedaannya berkaitan dengan bagaimana dependensi yang akan memerlukan menginstal atau menghapus paket ditangani; "upgrade" melompati paket-paket itu, "dist-upgrade" mencoba menginstal / menghapus paket untuk membuat pembaruan terjadi.
derobert
1
@Fabby agak bingung karena Anda saat ini menghapus paragraf itu, tetapi jika Anda melihat halaman manual apt-get, deskripsi "upgrade" mengatakan misalnya, "dalam keadaan apa pun paket yang diinstal saat ini tidak dihapus, atau paket yang belum diinstal diambil diambil dan diinstal. " Jadi, jika pembaruan aplikasi normal memerlukan menginstal paket baru (soname perpustakaan baru, misalnya), itu tidak akan dilakukan. Atau jika pembaruan kernel menggunakan nama paket yang sama, itu akan dilakukan.
derobert
37

Manajer pembaruan menyarankan untuk memulai kembali ketika kernel ditingkatkan atau beberapa paket sistem lainnya dengan layanan yang ditandai untuk reboot ketika ditingkatkan.

Dalam hal /var/run/reboot-requiredini diatur oleh skrip instalasi paket.

Baris perintah apt-get upgradetidak menyarankan apa pun, karena ditargetkan untuk pengguna yang lebih mahir yang dapat memutuskan kapan harus memulai ulang sistem ;-)

Tetapi setelah upgrade menggunakan Update Manager apt-get dalam beberapa saat akan menyarankan untuk me-restart juga.

Pilot6
sumber
Saya tidak percaya itu, benarkah itu? "Layanan yang tidak dapat dimulai ulang tanpa me-reboot seluruh sistem."
AB
2
Ya ini benar. Seperti "pemula" dan beberapa lainnya. Tidak banyak.
Pilot6
2
@ Pilot6 Kedengarannya konyol jika pemula tidak dapat dihidupkan ulang tanpa reboot. Itu seharusnya merupakan upgrade dari SysV init yang dapat di-restart tanpa reboot.
kasperd
@kasperd Itu hanya contoh. Saya perhatikan bahwa Update manager meminta restart pada beberapa paket non-kernel. Harus ada daftar paket-paket ini. Saya tidak begitu yakin pemula ada di sana.
Pilot6
1
@MaxNanasy Manajer pembaruan akan muncul dan menyarankan untuk reboot. itu mungkin terjadi dalam beberapa saat.
Pilot6
15

Ketika Anda menginstal kernel baru Anda harus me-restart mesin agar perubahan diterapkan, apt-get tidak mengomel tentang hal itu.

Godam
sumber
1
Bukan hanya pembaruan kernel. Anda juga harus me-reboot atau me-restart beberapa layanan ketika paket-paket tertentu ditingkatkan. Jika Anda cerdas, Anda dapat sering memulai ulang layanan yang relevan dan menghindari reboot. Jika tidak, maka reboot akan selalu berfungsi. Seringkali tidak mudah untuk mengetahui layanan apa yang perlu direstart, karena paket yang ditingkatkan dapat melibatkan pustaka bersama yang banyak tergantung pada perangkat lunak lain secara langsung atau tidak langsung melalui perangkat lunak lain. Saya juga tidak perlu 100% mempercayai pengelola pembaruan grafis untuk mengetahuinya.
thomasrutter
7

apt-get sebenarnya memberi tahu Anda di terminal ketika setelah menginstal paket tertentu, jika perlu reboot.

update-manager adalah jenis solusi lengkap yang menangani semua kebutuhan upgrade Anda dengan sendirinya.

Saya lebih suka apt-get, tidak tahu mengapa :)

121n3
sumber
2

apt-get upgrade tidak memperbarui kernel.

apt-get dist-upgrade memperbarui kernel di Ubuntu.

Versi kernel Linux sebelum 4.1 perlu di-boot ulang ketika kernel diperbarui.

Paket lain tidak perlu reboot, cukup restart aplikasi itu sendiri. Beberapa aplikasi Windows yang berjalan di Wine meminta reboot tetapi cukup ketik perintah:

wineserver -k

dan restart aplikasi.

pengguna222789
sumber