Mengapa menggunakan upgrade apt-get alih-alih apt-get dist-upgrade?

302

Saya biasanya menggunakan apt-get update && apt-get upgradeuntuk menjalankan pembaruan dan peningkatan daripada GUI karena tampaknya berjalan lebih cepat.

Namun, saya perhatikan belakangan ini bahwa saya sering mendapat pesan bahwa salah satu upgrade saya ditahan. Saya kemudian biasanya menjalankan dist-upgradeuntuk menjalankannya dan berfungsi dengan baik. Sejauh yang saya tahu setelah membaca pertanyaan ini dan jawabannya, dist-upgrademelakukan semua hal yang sama dan kemudian beberapa.

Jadi, pertanyaan saya adalah: Mengapa menggunakan apt-get upgradesama sekali? Kenapa tidak digunakan apt-get dist-upgradesepanjang waktu? Mengapa apt-get upgradebahkan ada?

jimchristie
sumber
1
Dalam versi Ubuntu yang lebih baru, sudo apt full-upgrademelakukan hal serupa.
Aaron Franke

Jawaban:

410

Saya biasanya memutakhirkan mesin saya dengan:

sudo apt-get update && time sudo apt-get dist-upgrade

Di bawah ini adalah kutipan dari man apt-get. Menggunakan pemutakhiran mematuhi aturan: dalam keadaan apa pun paket yang diinstal saat ini dihapus, atau paket yang belum diinstal diambil dan diinstal. Jika itu penting bagi Anda, gunakan apt-get upgrade. Jika Anda ingin hal-hal "hanya berfungsi", Anda mungkin ingin apt-get dist-upgradememastikan dependensi diselesaikan.

Untuk memperluas alasan mengapa Anda ingin memutakhirkan daripada memperbarui , jika Anda seorang administrator sistem, Anda perlu dapat diprediksi. Anda mungkin menggunakan fitur-fitur canggih seperti pinning yang tepat atau menarik dari kumpulan PPA (mungkin Anda memiliki PPA internal), dengan berbagai otomatisasi tersedia untuk memeriksa sistem Anda dan peningkatan yang tersedia alih-alih selalu dengan bersemangat memperbarui semua paket yang tersedia. Anda akan menjadi sangat frustrasi ketika melakukan perilaku yang tidak tertulis, terutama jika ini menyebabkan penghentian layanan produksi.

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.
penunggu
sumber
44
Terima kasih karena tidak hanya merangkum perbedaan di antara keduanya, tetapi juga menjelaskan situasi di mana yang satu mungkin lebih baik daripada yang lain. Ini persis apa yang saya cari.
jimchristie
10
dist-upgradelebih cenderung merusak barang daripada upgrade. upgradememastikan bahwa sistem Anda tetap lengkap.
Braiam
5
dist-upgrade lebih mungkin untuk memperbaiki masalah dengan versi paket yang saling bertentangan, jika Anda merasa nyaman dengan mengambil pendekatan road roller (yaitu Anda tidak memiliki perangkat lunak produksi misi kritis yang berjalan di kotak)
Henno
1
Sebuah pertanyaan kecil tentang 'peningkatan apt-get' mengacu pada fakta bahwa "tidak ada paket yang diinstal saat ini dihapus atau yang baru ditambahkan": apakah paket yang ada juga dapat ditingkatkan versinya. Misalnya oldA tergantung pada oldB. Apakah oldA dan oldB akan ditingkatkan? Bagaimana jika newA tergantung pada oldB dan bukan newB, apa yang terjadi pada keduanya selama upgrade? keduanya tidak ditingkatkan atau keduanya ditingkatkan, yang mungkin membuat newA tidak berfungsi karena oldB hilang?
Kenny
2
Apa alasan menggunakan di timesini?
ItalyPaleAle
129

Saya tahu pertanyaan ini telah dijawab dan berumur satu tahun, tetapi saya merasa ini perlu dikatakan. Ubuntu 14.04 dan yang lebih baru (dan Debian Jessie dan yang lebih baru, untuk mereka yang menemukan ini dari Google) menggunakan APT 1.0, yang memungkinkan perintah aptalih-alih apt-getdan apt-cacheuntuk beberapa operasi.

  • apt-get upgrade tidak akan mengubah apa yang diinstal (hanya versi),
  • apt-get dist-upgrade akan menginstal atau menghapus paket yang diperlukan untuk menyelesaikan peningkatan,
  • apt upgrade akan secara otomatis menginstal tetapi tidak menghapus paket.
  • apt full-upgrademelakukan fungsi yang sama dengan apt-get dist-upgrade.
Stephen Angelico
sumber
@muru Terima kasih atas hasil edit dan catatan tentang peningkatan penuh. Saya terutama menggunakan Debian 7 (yang merupakan pra-APT 1.0), dan saya hanya bermain dengan Debian Jessie dan Ubuntu 14.04.
Stephen Angelico
sama-sama. Sebagai seseorang yang menggunakan jessiedan 14,04 secara teratur, saya pertama kali mengetahui utilitas baru ini dari jawaban Anda!
muru
Apakah Anda memiliki sumber untuk uraian Anda apt upgrade? Semua yang bisa saya kemukakan menunjukkan bahwa apt upgradeitu sama dengan apt-get upgrade. Sebagai contoh, apt help upgradepada output sistem saya:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley
1
Halaman manual masing-masing untuk aptdan apt-getmenentukan apa yang saya katakan sebelumnya.
Stephen Angelico
1
apt safe-upgradebukan operasi yang valid di sistem saya. Jika maksud Anda aptitude safe-upgrade, tidak cukup. apt-get upgradetidak akan pernah menginstal paket, sedangkan apt upgradedan aptitude safe-upgradeakan menginstal paket baru karena dependensi menuntutnya. Jadi aptitude safe-upgradesetara dengan apt upgrade, bukan apt-get upgrade.
Stephen Angelico
7

The upgradepilihan hanya menginstall versi baru dari paket yang sudah diinstal pada sistem (dan ya, update kernel milik mereka).

Namun, kadang-kadang pembaruan mengubah dependensi: misalnya, versi baru paket tidak lagi tergantung pada perpustakaan yang telah Anda instal, atau akan memerlukan instalasi perpustakaan tambahan. The upgradepilihan tidak akan menghapus paket diinstal bahwa Anda tidak lagi benar-benar membutuhkan.

Namun, dist-upgradeopsi dapat "secara cerdas" menangani perubahan dalam sistem dependensi. Ini termasuk menghapus paket-paket yang tidak lagi diperlukan atau menyelesaikan konflik antara paket-paket yang muncul karena perubahan dependensi.

Januari
sumber
5
Meskipun ini akurat, saya tidak berpikir itu menjawab pertanyaan. Jika kita memiliki opsi "cerdas" yang dapat menangani perubahan ketergantungan dan menghapus kekacauan, mengapa tidak selalu menggunakannya?
ændrük
1
upgradejuga akan tidak pernah menambahkan paket baru yang menjadi diperlukan sebagai dependensi. Dari man apt-get: "dalam keadaan apa pun saat ini paket yang diinstal tidak dihapus, atau paket yang belum diinstal diambil dan diinstal" @ ændrük Hanya karena ada sesuatu yang "cerdas" tidak berarti ia akan selalu melakukan apa yang diinginkan pengguna (atau bahkan sesuatu yang masuk akal) . Kapan saja pembaruan sistem menghapus paket, ada baiknya memeriksa apa yang dilakukannya sebelum menekan Y.
Eliah Kagan
2

Pengguna mungkin mengandalkan paket yang diinstal secara implisit karena ketergantungan paket lain (yang diinstal secara eksplisit) pada paket tersebut. Dengan demikian sistem pengemasan tidak dapat mengetahui keinginan pengguna / administrator untuk mempertahankan fungsionalitas tertentu yang dapat dihapus melalui peningkatan-dist.

pengguna244474
sumber
-4

Seharusnya tidak menjadi masalah bagi Pengguna Win-Home untuk selalu "dist-upgrade", tetapi jika Anda menjalankan sistem yang kompleks, Anda lebih baik "tidak pernah (benar-benar) mengubah sistem yang sedang berjalan" ... Bahkan jika ada "seharusnya" tidak ada masalah , "mungkin" ada masalah - apa yang akan memotong Anda! ANDA harus menjadi orang yang berhak memutuskan 2 ;-)

Thorben Kaufmann
sumber
3
Should not be a problem for Win-Home Users to always "dist-upgrade"..mengapa demikian ?
heemayl
1
Nah, katakanlah Anda menyiapkan server-ubuntu, workstation untuk lingkungan produktif: ketika Anda selalu dan otomatis melakukan dist-upgrade, Anda mungkin tidak dapat mengontrol, ketika Anda mendapatkan masalah - bahkan jika Anda tidak punya waktu untuk menyelesaikannya dengan benar saat itu upgrade dist otomatis dilakukan. Beberapa konfigurasi mungkin perlu sentuhan "manusia" ke port. Itulah yang saya alami beberapa kali. Ketika Anda hanya bekerja pada platform "Home" seperti Win-Home, secara default pengguna tidak diaktifkan untuk mengontrol pembaruan. Jadi Anda yang mungkin tidak mengganggu Anda.
Thorben Kaufmann