Навіщо використовувати оновлення apt-get замість apt-get dist-upgrade?


302

Зазвичай я використовую apt-get update && apt-get upgradeдля запуску своїх оновлень та оновлень замість GUI, оскільки, здається, працює швидше.

Однак останнім часом я помічав, що часто отримую повідомлення про те, що одна з моїх оновлень була зупинена. Тоді я зазвичай пробігаю, dist-upgradeщоб запустити його, і він працює добре. Наскільки я можу сказати, прочитавши це питання та його відповіді, dist-upgradeробить все те саме, а потім якесь.

Отже, моє питання: навіщо apt-get upgradeвзагалі використовувати ? Чому б не використовувати apt-get dist-upgradeвесь час? Чому apt-get upgradeнавіть існує?


1
У новіших версіях Ubuntu sudo apt full-upgradeробить подібні речі.
Аарон Франке

Відповіді:


410

Зазвичай я модернізую свої машини за допомогою:

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

Нижче наведено уривок із man apt-get. Використання оновлення дотримується правила: ні в якому разі не встановлюються встановлені пакети, або пакети, які вже не встановлені, отримані та встановлені. Якщо це важливо для вас, використовуйте apt-get upgrade. Якщо ви хочете, щоб речі "просто працювали", ви, мабуть, хочете apt-get dist-upgradeзабезпечити вирішення залежностей.

Щоб розширити, чому ви хочете оновити замість dist-оновлення , якщо ви системний адміністратор, вам потрібна передбачуваність. Можливо, ви використовуєте розширені функції, такі як влучне закріплення або витягнення з колекції PPA (можливо, у вас є власний PPA), з різними автоматизаціями для того, щоб перевірити вашу систему та доступні оновлення, а не завжди з нетерпінням оновлювати всі наявні пакети. Ви б дуже засмучені, коли підлітки виконують неписану поведінку, особливо якщо це призводить до простоїв виробничої служби.

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.

44
Дякую за те, що ви не тільки підсумували відмінності між ними, але й пояснили ситуації, коли одне може бути кращим за інше. Це саме те, що я шукав.
jimchristie

10
dist-upgradeймовірніше , зламати речі гірше , ніж upgrade. upgradeгарантує, що ваша система залишається повноцінною.
Брайам

5
dist-модернізація швидше виправить проблеми із суперечливими версіями пакету, якщо вам зручно використовувати підхід доріжних котків (тобто у вас не працює програмне забезпечення для критичного виробничого завдання)
Хенно

1
Невелике запитання щодо "apt-get upgrade", посилаючись на те, що "жодних встановлених пакетів зараз не видалено чи додано нових": чи будуть відповідно модернізовані існуючі пакети. Наприклад, oldA залежить від oldB. Чи будуть модернізовані обидва oldA та oldB? Як щодо того, якщо newA залежить від oldB, а не newB, що відбувається з цими двома під час оновлення? обидва не оновлені або обидва оновлені, що може призвести до того, що newA не працює, оскільки oldB втрачено?
Кенні

2
Яка причина використання timeтут?
ItalyPaleAle

128

Я знаю, що на це питання відповіли і мені вже рік, але я вважаю, що це потрібно сказати. Ubuntu 14.04 і пізніші версії (а також Debian Jessie та пізніші версії для тих, хто їх знайшов від Google) використовує APT 1.0, що дозволяє виконувати команду aptзамість apt-getі apt-cacheдля деяких операцій.

  • apt-get upgrade не змінить те, що встановлено (лише версії),
  • apt-get dist-upgrade встановить або видалить пакунки за необхідності для завершення оновлення,
  • apt upgrade автоматично встановить, але не видалить пакети.
  • apt full-upgradeвиконує ту ж функцію, що і apt-get dist-upgrade.

@muru Дякую за редагування та примітку про повне оновлення. В основному я використовую Debian 7 (що є попереднім APT 1.0), і я грав лише з Debian Jessie та Ubuntu 14.04.
Стівен Анжеліко

Ласкаво просимо. Як хтось, хто jessieрегулярно використовує та 14.04, я вперше дізнався про цю нову утиліту з вашої відповіді!
муру

У вас є джерело для вашого опису apt upgrade? Все, що я можу придумати, підказує, що apt upgradeте саме apt-get upgrade. Наприклад, apt help upgradeна моїй системі виходить:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Джон Бентлі,

1
Відповідні вказівки для aptта apt-getуточнюйте те, що я спочатку сказав.
Стівен Анжеліко

1
apt safe-upgradeне є дійсною операцією в моїй системі. Якщо ви маєте на увазі aptitude safe-upgrade, не зовсім. apt-get upgradeніколи не встановлюватиме пакунки, тоді як apt upgradeі aptitude safe-upgradeвстановлюватиме нові пакунки залежно від цього. Так що aptitude safe-upgradeрівнозначно apt upgrade, ні apt-get upgrade.
Стівен Анжеліко

7

upgradeОпція тільки встановлює нові версії пакетів, які вже встановлені в системі (і так, оновлення ядра належить до них).

Однак іноді оновлення змінюють залежності: наприклад, нова версія пакету більше не залежатиме від встановленої вами бібліотеки або вимагатиме встановлення додаткових бібліотек. Ця upgradeопція ніколи не видаляє встановлені пакети, які вам фактично більше не потрібні.

Однак dist-upgradeпараметр може "розумно" обробляти зміни в системі залежностей. Сюди входить видалення пакетів, які більше не потрібні, або вирішення конфліктів між пакетами, які виникли через зміни залежностей.


5
Хоча це точно, я не думаю, що це відповідає на питання. Якщо у нас є "розумний" варіант, який може впоратися зі змінами залежності і усунути безлад, чому б не завжди використовувати його?
ændrük

1
upgradeтакож ніколи не додаватимуть нові пакети, які стають необхідними як залежності. З man apt-get: "В даний час жодним чином не видаляються встановлені пакети або не встановлені пакети та не встановлені" @ ændrük Тільки тому, що щось є "розумним", це не означає, що воно завжди буде робити те, що хоче користувач (або навіть щось взагалі розумне) . Щоразу, коли оновлення системи видаляє пакет, добре переглянути, що він робить, перш ніж натиснути Y.
Eliah Kagan

2

Користувачі могли покластися на пакунки, які були встановлені неявно через залежність від інших (явно встановлених) пакетів. Таким чином, система упаковки не може усвідомлювати бажання користувача / адміністратора зберегти певні функціональні можливості, які в іншому випадку можуть бути видалені через dist-upgrade.


-4

Користувачам Win-Home не повинно бути проблемою завжди "dist-upgrade", але якщо ви використовуєте складні системи, вам краще "ніколи не змінювати працюючу систему" ... Навіть якщо не повинно виникнути проблем , там "можуть" бути пробники - що вас відріже! ВИ повинен бути той, хто має право 2 вирішити ;-)


3
Should not be a problem for Win-Home Users to always "dist-upgrade"..чому так ?
heemayl

1
Ну, скажімо, ви створили ubuntu-сервер, робочу станцію для продуктивного середовища: коли ви завжди та автоматизовано робите dist-модернізацію, ви, ймовірно, не можете контролювати, коли отримуєте проблеми - навіть якщо у вас немає часу на вирішення проблеми на в цей момент робиться автоматичне оновлення дистанції. Деякі конфігурації можуть потребувати "людського" дотику до порту. Ось що я досвідчував кілька разів. Коли ви просто працюєте на платформах "Домашня сторінка", як-от Win-Home, за замовчуванням користувач не має можливості контролювати оновлення. Так що ви, що може не турбувати вас.
Торбен Кауфманн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.