Berikut deskripsi proses yang lebih terperinci. Maaf, teksnya terlalu panjang.
Pengalaman saya berasal dari Debian, yang seluruh sistem pengemasan dan peningkatan yang digunakan di Ubuntu awalnya diciptakan. Peningkatan keamanan Ubuntu harian berhubungan dengan menjalankan apt-get upgrade
yang biasanya tidak menghapus perangkat lunak apa pun. Upgrade rilis besar sesuai dengan apt-get dist-upgrade
selama paket perangkat lunak dapat ditukar sepenuhnya.
Sebenarnya komponen level sangat rendah biasanya tidak ditukar selama upgrade rilis. Segera setelah peningkatan, Anda harus menemukan dua imej kernel dan initrd di direktori / boot Anda. Ini karena tidak seperti program, komponen-komponen kernel tidak dapat dipertukarkan dengan baik. Jika diperlukan untuk memuat driver perangkat baru selama peningkatan, itu harus kompatibel dengan kernel yang berjalan. Setelah sistem boot dengan kernel baru, yang lama dapat dihapus. Terakhir kali saya memeriksa hal ini harus dilakukan secara manual, saya tidak tahu bagaimana updater saat ini menangani ini. Ini BTW. alasan utama, mengapa gambar kernel memuat nomor versinya dalam nama file - sehingga Anda dapat menginstal versi kernel yang berbeda secara bersamaan. Sama untuk lintasan modul (/ lib / modules / ...)
Paket perangkat lunak ditingkatkan satu per satu, dimulai dengan paket terendah dalam hirarki ketergantungan. Itu biasanya perpustakaan program seperti libc dan yang lainnya. Namun, urutan paket diperbarui tidak hardcoded tetapi secara dinamis dihitung sebagai dependensi paket diselesaikan. Dalam kebanyakan kasus, program lama dapat berfungsi dengan perpustakaan baru, jadi tidak terlalu bermasalah jika perpustakaan itu diganti terlebih dahulu.
Anda harus memahami di sini, bahwa sistem membedakan antara paket yang diinstal secara manual (yaitu paket yang Anda instal sendiri, yaitu kromium) dan paket yang diinstal secara otomatis, yang hanya diinstal untuk memenuhi dependensi paket yang diinstal secara manual (dan dependensi dependensi tersebut). ).
Untuk setiap program yang diinstal secara manual, pembaru hanya mencari versi yang lebih baru. Seringkali program tersebut hanyalah paket meta seperti "ubuntu-desktop", yang tidak berisi data, dan hanya dependensi. Versi baru pustaka dependen akan ditarik, karena diminta oleh program yang diperbarui secara langsung (diminta secara manual). Pemutakhiran akan selalu mencoba untuk menginstal versi terbaru yang dapat digunakan dari semua paket yang bergantung (selama pembaruan apa pun tidak hanya merilis pemutakhiran).
Program yang tidak dapat berfungsi dengan versi perpustakaan baru tidak dapat dimulai selama waktu setelah perpustakaan ditingkatkan, dan sebelum program itu sendiri ditingkatkan juga. Jika program-program tersebut seharusnya sudah berjalan sebelum pemutakhiran perpustakaan, mereka akan terus berjalan, karena versi perpustakaan lama tetap ada di memori selama masih digunakan. Hal yang sama berlaku untuk program yang dimulai sebelum mereka ditingkatkan. Mereka tidak akan memberikan fitur baru sampai mereka dihentikan dan dimulai kembali.
Setelah pembaruan, beberapa perpustakaan (atau dependensi pada umumnya) akan menjadi yatim piatu. Itu adalah perpustakaan yang diwajibkan oleh versi program lama, tetapi tidak lagi diperlukan oleh versi baru. Karena paket-paket ini ditandai sebagai terinstal secara otomatis, dan karena tidak ada prgram yang diinstal secara manual yang berhubungan dengannya lagi, paket-paket ini dapat dengan mudah ditemukan dan dihapus. Anda bahkan dapat mengamati ini sebagai langkah terakhir dari proses pembaruan (saver pembaru "menghapus paket usang" atau yang serupa).
Beberapa paket akan diinstal, yang mana tidak diinstal sebelumnya, itu hanyalah dependensi baru, yang ditandai sebagai diinstal secara otomatis, dan dapat dihapus, jika persyaratan untuk mereka menghilang di masa depan.
Mekanisme ini bahkan memungkinkan pertukaran seluruh program pengguna. Seperti misalnya beralih dari Gnome2 ke Unity. Karena keduanya hanyalah dependensi otomatis dari ubuntu-desktop, yang merupakan salah satu dari sedikit paket, untuk itulah versi baru sebenarnya diminta.
Program-program biasanya tidak tergantung pada versi spesifik dari kernel OS, sehingga mereka biasanya akan bekerja dengan baik dengan kernel yang sedang berjalan.
Terlepas dari semua ini saya curiga updater Ubuntu melempar beberapa perbaikan dan penyelesaian spesifik ke dalam campuran, untuk menghindari situasi di mana teori ini rusak.
Seperti yang Anda lihat selama pembaruan ada kondisi yang sangat baik di mana sistem hanya dapat digunakan untuk bagian yang terbatas. Haruskah sesuatu yang salah dalam update Anda akan kemungkinan besar akan ditinggalkan dengan sistem rusak. Seringkali bahkan satu yang tidak mudah diperbaiki, karena program peningkatan juga dapat terpengaruh. Ingat, program dengan dependensi yang rusak dapat terus berfungsi, tetapi tidak dapat dimulai kembali, selama dependensinya rusak, ini berlaku untuk pembaru juga.
Anda dapat menggunakan program baris perintah apt-mark
untuk mengetahui paket mana yang ditandai sebagai yang diinstal secara manual dan yang telah diinstal secara otomatis. Anda juga dapat mengganti tanda tersebut menggunakan program yang sama. Ini akan secara langsung mempengaruhi proses pembaruan.
Dalam pengaturan perangkat lunak yang lebih kompleks, Updater terkadang akan meminta Anda untuk menyelesaikan ketergantungan secara manual. Yaitu ketika satu program yang diinstal secara manual diperbarui dan meminta versi baru dari perpustakaan sementara program lain yang diinstal secara manual tergantung pada versi lama dari perpustakaan yang sama dan tidak dapat bekerja dengan yang baru. Anda kemudian harus membuat pilihan, baik untuk melepaskan salah satu dari program tersebut atau untuk tidak memperbarui keduanya. Karena dependensi seringkali kompleks, ini bisa menjadi sangat berantakan dengan sangat cepat (Anda mungkin pernah mendengar istilah "neraka ketergantungan").
Sekarang untuk pertanyaan spesifik:
- Ketika infrastruktur tingkat rendah diubah (tingkat rendah seperti di kernel, driver, perpustakaan, dll apa pun yang pengguna tidak berinteraksi secara langsung), apa yang terjadi dengan binari yang sudah tidak digunakan lagi?
- OKE ... Saya sudah membahas yang ini
- Apa yang terjadi pada aplikasi yang telah sepenuhnya ditinggalkan? Misalnya, Unity 2D (atau perangkat lunak lain yang ditinggalkan / tidak ada pengelola yang paketnya tidak dalam repo baru).
- Jika Aplikasi pernah diinstal secara manual itu akan tetap di sistem, sering menyebabkan ketergantungan neraka yang saya jelaskan.
- ubuntu-desktop adalah metapackage yang menarik aplikasi default Ubuntu sebagai dependensi. Jika saya menghapus Firefox dan menginstal Chrome, apakah Firefox masih akan ditarik sebagai bagian dari peningkatan?
- Selama itu adalah browser standar dari Rilis baru, ya. Chromium juga akan ditingkatkan. Saya tidak yakin apakah Anda dapat menghapus Firefox tanpa menghapus ubuntu-desktop. Perhatikan bahwa selain dari dependensi yang ketat, sistem paket juga mengetahui konsep rekomendasi, di mana perangkat lunak biasanya akan diinstal seperti dependensi, tetapi dapat dihapus instalasinya nanti tanpa mempengaruhi hal lain selain dependensi sendiri.
- Terlebih lagi, apa yang terjadi jika satu aplikasi dulu bergantung pada package-x dan tidak lagi melakukannya dalam rilis baru; Apakah paket-x akan ditingkatkan bersama paket-paket lainnya meskipun menjadi yatim?
Tanyakan kepada saya jika Anda masih memiliki pertanyaan lagi.