Как правильно обновлять систему через терминал в Ubuntu подобных системах.

Данная статья короткая и в ней расскажу, чем отличается команда apt-get upgrade от apt-get dist-upgrade.

А также расскажу, почему лучше использовать команду apt-get dist-upgrade.

dist-upgrade vs upgrade

Исчерпывающие ответы можно получить из документации Debian:

Также можно обратиться к мануалу в системе (если знаете английский язык):

man apt-get dist-upgrade

Если по-русски, то вот описание команд из мануала:

upgrade
upgrade используется для установки новейших версий всех установленных пакетов системы из источников, указанных в /etc/apt/sources.list. Будут разысканы новейшие версии установленных в настоящий момент пакетов и произведено обновление; ни в коем случае не будет удалено ни одного установленного пакета или установлено нового пакета, не имеющего уже установленной в системе предыдущей версии. Текущие версии установленных в настоящий момент пакетов, если они не могут быть обновлены новыми версиями без изменения статуса других пакетов, будут оставлены в неизменном виде. Для того, чтобы apt-get узнал о существовании доступных новых версиях пакетов, данной команде должна предшествовать команда update.

dist-upgrade
dist-upgrade, в дополнение выполняет функцию upgrade, а также разумно управляет изменением зависимостей с новыми версиями пакетов; apt-get имеет «умную» систему разрешения конфликтов и она будет в случае необходимости пытаться произвести обновление наиболее важных пакетов за счет менее важных. Файл /etc/apt/sources.list содержит список источников для получения пакетов, из которых будут получены файлы пакетов.

Таким образом, когда вы обновляете систему с помощью команды:

sudo apt-get upgrade

то у вас только обновляются установленные пакеты, при этом могут возникнуть конфликты и неудовлетворенные зависимости и новые пакеты не будут устанавливаться.

Команда же:

sudo apt-get dist-upgrade

удалит старые пакеты, разрешит конфликты, доставит необходимые зависимости, доставит новые пакеты, если требуется. Более умный и гибкий инструмент обновления системы.

Именно поэтому, я советую пользоваться dist-upgrade для обновления системы, а про upgrade вообще забыть.

И да команда:

sudo apt-get dist-upgrade

не обновляет версию дистрибутива Ubuntu,
для обновления дистрибутива до следующей версии есть другая отдельная команда:

do-release-upgrade

Перед выполнением которой нужно очень долго подумать, прежде чем применять на LTS версии  Ubuntu (на дистрибутиве с долгосрочной версией поддержки).

Кроме того, стоит упомянуть, что можно заблокировать обновление каких-либо пакетов:

Ни одна из этих двух команд не будет их обновлять после данных манипуляций.

Вот и всё.

  • https://www.blogger.com/profile/01138329259838833556 Сергей Совков

    Попробую спасибо, всегда пользовался sudo apt-get upgrade вариантом =)

  • https://www.blogger.com/profile/10315335844059931614 Александр Чирков

    Спасибо! Познавательно и полезно. Беру к использованию.

  • https://www.blogger.com/profile/12644567413012194455 Sergey Sedov

    Спасибо, узнал для себя что-то новое.

  • https://www.blogger.com/profile/01820092315809479371 Anton Serov

    и upgrade, и dist-upgrade все равно предлагают обновить заблокированный в synaptic пакет

    • https://www.blogger.com/profile/00865845114198842309 Edward Kobylyanets

      лучше блокировать через
      sudo apt-mark hold package_name
      http://www.linuxrussia.com/2013/10/ubuntu-hold-package.html

    • https://www.blogger.com/profile/01820092315809479371 Anton Serov

      Я уже понял, что блокировать надо стандартным средством — через apt .
      Просто указал на неточность статьи относительно равнозначности 4-х методов бокировки.

  • http://vk.com/id38624877 ua9oas Михаил Рыцарев

    Такие радикальные обновления ОС- это дело достаточно рискованное. И вот у меня есть «Минт 17.3» (инсталлирован на флешку (и долго и стабильно с нее проработал)). В штатном менеджере обновлений нигде нет кнопки обновить его до «18 го» (а почему нет?) Тогда я нагуглил, как это можно сделать из под командной строки. Сделал. И когда этот процесс пошел, то и длился он часами (и скачалось под это почти 2500 пакетов) и потом что-то пошло не так, что процесс обновлений аварийно завершился с надписью, что было много ошибок. И эта ОС повредилась. Теперь она все же запускается, но и версию пишет старую, загружаться стала намного медленней (но главное, что данные в ней все же не утеряны). Под ней перестали запускаться «Synaptic» а главное- сетевое подключение. Какие пакеты мне тогда надо скачать, чтобы попытаться их там переустановить и возстановить функцию доступа в сеть? (Другой вариант- что нужно набрать в командной строке, чтобы попытаться «разрулить» возникшие те там проблемы и дообновить ее с тех пакетов, которые уже скачаны? (Ведь возможно, что скачано в нее вообще все что надо)). И в варианте, что заполучив там доступ в сеть что мне будет нужно пытаться там делать дальше, чтобы осуществилась самодиагностика и устранение случившихся там ошибок и чтобы завершить наконец ея обновление?

    Можно конечно проще- снести всю ОС и «накатить» туда же новую чистую ОС с нуля (данные-то все целы). Но все же я хотел бы найти того, кого поврежденные ОС интересуют в качестве учебнаго пособия- поразбираться-поиграться с ними (могу дать эту флешку, либо могу предоставить дистанционный доступ к ней по сети).

    • http://vk.com/id38624877 ua9oas Михаил Рыцарев

      Если мне реанимировать эту ОС не удастся, то тогда мне будет очень важно перенести некоторые ее данные на новую ОС (это все один к одному данные профилей браузеров, а также по возмножности и конфиги сетевых настроек (чтобы вручную их потом туда не перезабивать)). Но я пока не могу разобраться, как это делать вручную (какие файлы и папки надо перекопировать?) И какие есть программы-инструменты для и бэкапа и переноса таких данных?

      И поскольку обновления версий ОС- это достаточно рискованное занятие, то рекомендую вариант, что лучше поставить рядом на этот же «винт» вторую ОС с нуля, перенести в новую ОС со старой какие надо конфигурационные данные и потом перейти на нее. И старую ОС лучше при этом и оставить и сносить только потом, когда можно быть уверенным, что в новой нормально все получилось (хотя можно и не спешить сносить,- как резервная и подстраховочная вторая ОС может быть не лишней).
      (и при с обновлением того «Минт» у меня было еще что,- в инструкциях по таким апгрейдам, которые я читал в сети написано, что перед такими радикальными обновлениями осей в них важно сначала поотключать все сторонние репозитории (PPA и еще что-то), иначе будет риск конфликтов и сбоев при таких обновлениях. Помню, что возможно я не все из этого отключил. Но тогда в нормальном случае этот функционал должен быть встроен в ОС для защиты от таких ошибок пользователя (и уведомлениями его), вроде что-то у меня так и было, но и не достаточно и не совсем понятно, что.

      И при обновлениях- а как узнавать, насколько больше оборудования будет поддерживать новое ядро? (И какое новое оборудование оно будет поддерживать?)