Pertanyaan Apa itu "dist-upgrade" dan mengapa upgrade lebih dari "upgrade"?


Saya bertanya-tanya mengapa upgrade kadang-kadang tidak ingin meng-upgrade bagian-bagian tertentu dari sistem, sementara dist-upgrade tidak. Berikut ini contohnya setelah menjalankan apt-get upgrade:

apt-get upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

melawan apt-get dist-upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  linux-headers-3.0.0-13 linux-headers-3.0.0-13-generic
  linux-image-3.0.0-13-generic
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 48.5 MB of archives.
After this operation, 215 MB of additional disk space will be used.
Do you want to continue [Y/n]?

Dengan kata lain, mengapa ini tidak bisa dilakukan upgrade?


344
2017-11-22 06:03


asal




Jawaban:


Dari apt-get manual:

upgrade
   upgrade is used to install the newest versions of all packages
   currently installed on the system from the sources enumerated in
   /etc/apt/sources.list. Packages currently installed with new
   versions available are retrieved and upgraded; under no
   circumstances are currently installed packages removed, or packages
   not already installed retrieved and installed. New versions of
   currently installed packages that cannot be upgraded without
   changing the install status of another package will be left at
   their current version. An update must be performed first so that
   apt-get knows that new versions of packages are available.

dist-upgrade
   dist-upgrade in addition to performing the function of upgrade,
   also intelligently handles changing dependencies with new versions
   of packages; apt-get has a "smart" conflict resolution system, and
   it will attempt to upgrade the most important packages at the
   expense of less important ones if necessary. So, dist-upgrade
   command may remove some packages. The /etc/apt/sources.list file
   contains a list of locations from which to retrieve desired package
   files. See also apt_preferences(5) for a mechanism for overriding
   the general settings for individual packages.

Dan dengan yang lebih baru apt alat tersedia mulai 14.04 dan seterusnya:

full-upgrade
   full-upgrade performs the function of upgrade but may also remove
   installed packages if that is required in order to resolve a
   package conflict.

Dalam kasus khusus Anda, saya melihat, misalnya, itu linux-headers adalah paket virtual yang disediakan oleh keduanya linux-headers-3.0.0-12 dan linux-headers-3.0.0-13 dan itu terdengar seperti jenis instalasi dan penghapusan paket yang ditangani oleh dist-upgrade, tetapi tidak oleh upgrade.


285
2017-11-22 06:57



Aku tidak melihat full-upgrade sebagai opsi untuk apt-get di bawah 14.04.1. - nobar
Saya tidak tahu tentang itu apt baik tetapi tampaknya menjadi perintah yang benar-benar berbeda sesuai dengan halaman manual yang dihubungkannya - BlueWizard
@nobar Anda tidak melihat karena ini adalah opsi apt dan bukan dari apt-get... :-) Coba man apt. - Hastur
Oke, saya mencari dan tautan paling awal yang saya temukan adalah untuk Ubuntu 15.10 (yang keluar di akhir 2014 yang sesuai dengan pengujian Jessie) manpages.ubuntu.com/manpages/wily/en/man8/apt.8.html - Z boson
@Zboson Ya, dan 14.04 keluar bukan di 2011, tapi di April 2014 ... lihat polanya? - tgies


apt-get upgrade terbatas pada kasus di mana paket harus diganti oleh versi yang lebih baru, tetapi tidak perlu ditambahkan atau dihapus paket. Versi baru Firefox, misalnya, harus dapat diinstal apt-get upgrade.

Namun apt-get upgrade akan menolak bekerja ketika ada tambahan atau penghapusan yang dibutuhkan oleh versi yang diperbarui. Misalnya, ketika Anda memiliki kernel linux-image-3.2.0-10-generic terpasang dan linux-image-3.2.0-11-generic muncul, linux-image-generic paket diperbarui untuk bergantung pada versi yang lebih baru. Untuk menginstal kernel baru, Anda harus menjalankannya apt-get dist-upgrade.

Perhatikan bagaimana sebuah apt-get upgrade akan mengatakan bahwa paket-paket kernel telah held back. Itu isyarat untuk digunakan apt-get dist-upgrade.


118
2018-01-27 16:34



Sempurna! : D Dua pertanyaan lagi ... apa yang digunakan oleh pengelola pembaruan grafis di Ubuntu? Apa yang direkomendasikan? - THpubs
Utilitas grafis, update-manager, tidak digunakan apt-get langsung; melainkan bekerja dengan backend yang disebut aptdaemon. Kemampuan standar update-manager adalah campuran dari upgrade dan dist-upgrade mode apt-get: dapat ditambahkan tetapi tidak menghapus paket - ia memanggil alat "Pembaruan parsial" saat penghapusan diperlukan. Saat menggunakan baris perintah, gunakan apt-get upgrade. Jika Anda melihatnya melaporkan bahwa paket telah "ditahan kembali", jalankan apt-get dist-upgrade untuk mengambil pembaruan yang tersisa. - pablomme


Pada dasarnya, upgrade hanya akan meng-upgrade paket yang ada dari satu versi ke versi lainnya. Ini tidak akan menginstal atau menghapus paket, meskipun jika diperlukan untuk meng-upgrade orang lain. Dalam kasus pembaruan kernel, upgrade paket linux-generic membutuhkan menginstal paket linux-3.0.0-13-generic baru, dan karena upgrade menolak untuk menginstal atau menghapus paket, ia menolak untuk meng-upgrade linux-generic.

Terkadang berbagai ketidaksesuaian antar paket akan membutuhkan beberapa paket untuk dihapus guna meningkatkan yang lain, dan itu juga akan memerlukan dist-upgrade. Pembaruan kernel akan selalu membutuhkan dist-upgrade karena cara penanganannya. Daripada memiliki paket kernel yang diperbarui, paket kernel yang sama sekali baru dibuat setiap kali, dan kernel metapackage diperbarui untuk bergantung pada paket kernel baru daripada yang lama. Ini dilakukan agar Anda menjaga versi kernel lama agar jika ada masalah dengan booting kernel baru, Anda dapat memilih yang lama dari menu boot dan memulihkannya.


32
2017-11-22 14:45



Inti terbaik. Namun, bagaimana cara menyimpan paket tertentu? - 0xC0000022L


Itu apt-get upgrade perintah biasanya hanya menginstal pembaruan (atau perbaikan) untuk paket yang saat ini diinstal. Biasanya rilis baru Mozilla Firefox, misalnya, akan dipasang dengan perintah ini.

Namun apt-get upgrade akan TIDAK biasanya menginstal rilis baru, di mana perubahan besar (termasuk penghapusan paket atau pembaruan GRUB diperlukan). Misalnya, ketika kernel Linux baru (linux-image-3.x.x-xx-generic, dll.) Tersedia, paket tidak akan diinstal.

Untuk menginstal kernel baru, Anda harus menjalankannya apt-get dist-upgrade. Anda akan diberitahu ketika Anda menjalankan apt-get upgrade, karena akan mengatakan bahwa paket-paket tertentu telah ditahan kembali. Itu isyarat Anda untuk digunakan: apt-get dist-upgrade.


11
2018-01-28 00:55



Ini menyesatkan. dist-upgrade tidak akan meningkatkan ke rilis baru kecuali sources.list telah dimodifikasi sesuai (dan bahkan kemudian, itu bukan cara yang didukung untuk meng-upgrade di Ubuntu). Ketika sebuah kernel baru diinstal dist-upgrade, bukan itu rilis baru Ubuntu. Itu hanya a paket baru. Selanjutnya, klaim "atau pembaruan GRUB diperlukan" salah. sudo apt-get upgrade sangat mampu meningkatkan paket dalam situasi di mana GRUB harus diperbarui, asalkan tidak ada paket yang dihapus dan paket baru dipasang. update-grub dijalankan secara otomatis, seperti biasa. - Eliah Kagan
Anda harus menulis jawaban Anda sendiri, karena itu tidak menambah kejelasan bagi saya. - david6
Selain apa yang dikatakan Eliah, titik pentingnya adalah itu apt-get upgrade tidak akan menghapus atau menambahkan paket. Jika memperbaiki paket membutuhkan paket baru, pembaruan akan ditahan kembali. Jawaban pablomme, yang Anda revisi menjadi kurang akurat, lebih baik dan saya menyarankan pembaca untuk pergi ke yang satu itu. - Chan-Ho Suh
Koreksi: apt-get upgrade tidak akan pernah memasang atau menghapus paket apa saja. Upgrade Kernel dikemas sebagai paket baru dan sebagai hasilnya, apt-get upgrade tidak akan pernah mengupgrade kernel. Kenyataan bahwa upgrade kernel melakukan perubahan "besar" seperti konfigurasi GRUB bukanlah alasan untuk perbedaan antara upgrade dan dist-upgrade. - Mikko Rantalainen