Почему разделение обновления и обновления даже существует?

Я понимаю, что в apt команда update обновляет список доступных пакетов, но не обновляет программное обеспечение, которое уже было установлено из этих пакетов.

Я также понимаю, что upgrade обновляет любое программное обеспечение, которое я уже установил из пакета, который я обновил с помощью update, как описано выше.

В чем причина того, что разработчики Ubuntu / Debian сделали это расщепление update и upgrade вместо этого работают с одной командой для выполнения обеих задач?

Это больше вопрос об архитектурной философии разработчиков Ubuntu.

11
задан 30 March 2018 в 14:23

12 ответов

В отсутствии дистрибутива есть одна команда обновления обновления, если она есть, это не что иное, как предопределенные псевдонимы, насколько я предполагаю. Эти псевдонимы можно легко установить на Ubuntu, отредактировав ~ / .bashrc.

Обновление используется для ресинхронизации хранилищ и устранения любых проблем. Затем, когда вы обновляете, вы фактически угадываете свои установленные пакеты. Но когда вы Dist-Upgrade, вы полностью обновляетесь. В Arch linux они подчеркивают полное обновление с помощью Syu. Вы можете сделать то же самое в Ubuntu. При полном обновлении вы фактически решаете любую систему проблем с зависимостями, которая может возникнуть при частичном обновлении.

Надеюсь, что это поможет. Извините, что текст был напечатан на телефоне.

0
ответ дан 17 July 2018 в 20:54

Всякий раз, когда вы меняете источники программного обеспечения, вы должны запустить команду sudo apt update, чтобы обновить список доступных программ. Затем вы можете искать доступные пакеты в новом исходном ПО, который вы только что добавили и / или установили.

Команда sudo apt upgrade является терминальным эквивалентом обновления списка установленных пакетов с использованием приложения Software Updater. Это отличается от обычного рабочего процесса добавлением нового источника программного обеспечения, обновления списка доступного программного обеспечения для включения пакетов из нового источника программного обеспечения и установки новых пакетов из нового источника программного обеспечения, который вы только что добавили, так что это более удобно и менее запутанным, что sudo apt update и sudo apt upgrade являются отдельными командами.

Это также менее запутанно отделять sudo apt update и sudo apt upgrade, потому что, когда вы запускаете sudo apt update успешно, вы подтвердили, что имеете подключение к Интернету. Если при запуске sudo apt upgrade возникает проблема, проблема скорее связана с проблемой управления пакетами, чем с проблемой подключения к Интернету, а результаты sudo apt upgrade предоставят ключи для диагностики и решения проблемы.

6
ответ дан 17 July 2018 в 20:54

Обновление не является единственным моментом, когда вам может понадобиться apt-get update, и я не хочу обновлять его каждый раз, когда я просто хочу обновлять списки пакетов.

Работая хорошо apt-get upgrade зависеть от apt-get update, запущенного не так давно, но тогда это верно и для apt-get remove и apt-get install! Должны ли все это подразумевать apt-get update? Конечно нет!

С другой стороны, учитывая, что apt-get remove и apt-get install также могут зависеть от apt-get update, который недавно был успешно завершен, имеет смысл apt-get upgrade для каждого запуска apt-get update? Нет, опять же, поскольку то, что я намереваюсь сделать, вполне может противоречить тому, что apt-get upgrade будет делать.

7
ответ дан 17 July 2018 в 20:54

История разницы между update и upgrade на самом деле довольно крутая.

Давно, давно - примерно 2000 или около того, за несколько лет до того, как существовал Ubuntu - полоса пропускания и диск пространство было гораздо более ограниченным ... хотя и обширным по сравнению с серединой 1990-х годов. Широкополосная связь только начинала, и dialup все еще был жизненно важным способом онлайн. Большим дискам все еще было всего несколько сотен МБ. Апт был блестящим и новым, радикальным и революционным, построенным на основе dpkg.

Пригодная база данных, когда вы думаете об этом, - это чудо: это точная в настоящее время база данных всего программного обеспечения из всех известных репозиториев. Он достаточно подробен для apt для расчета зависимостей и определения доступных обновлений, но достаточно мал для передачи по модемам удаленного доступа времени и для хранения на небольших дисках времени. Обновление вашей базы данных по телефону может занять несколько минут после хорошего соединения. Хотя это долгое время, поиск обновлений пакетов вручную (до apt) может потреблять часы.

В то время дистрибутивы были построены по-разному - нет непрерывной интеграции, без тестирования дыма (ну, не очень много тестирования вообще !), строить фермы только начали. Модификации должны были быть возвращены чаще, чем сейчас. Многие пользователи выбрали все обновления определенных пакетов по различным причинам или для выбора только определенных обновлений сегодня (для проверки вручную) и других обновлений завтра.

В течение последующих 15 или - В течение многих лет инструменты не сильно изменились, поэтому у нас все еще есть отдельные действия update и upgrade. [D4] все эволюционировали по мере того, как надежность дистрибутива улучшилась, и большая часть управления источником / обновлением / обновлением, которая использовалась вручную, была медленно скрыта за слоями автоматизации (software-updater, unattended-upgrades).

Модернизация программных пакетов - одна из причин, по которой недавно появились Snaps и AppImage и Flatpack, но это следующая глава.

5
ответ дан 17 July 2018 в 20:54

Можно спросить, зачем загружать программу из официального репозитория Ubuntu с помощью apt, затем установить его? Какая разница, если вы сначала загрузите его, а затем установите, а не загружаете и устанавливаете в одной операции?

Ну, после прочтения комментариев и размышлений об этом я понимаю, что это связано с философией Unix , модульная философия, в которой в основном говорится: «Каждая программа делает одну вещь»: сначала загрузите, затем установите --- каждое действие со своей выделенной программой.

0
ответ дан 17 July 2018 в 20:54

Они делят вещи по многим причинам.

Один из примеров - это вопрос, который я опубликовал и ответил сам: как можно удалить PPA с помощью GUI ?. На этом экране мы хотим удалить PPA, не обновляя программное обеспечение:

Как можно удалить PPA с помощью GUI?

После удаления PPA программное обеспечение GUI автоматически работает sudo apt update. Если вы должны удалить PPA из командной строки, вам нужно запустить sudo apt update удалить PPA , удалив PPA из списка источников.

Без отдельной функции apt update есть

Еще один пример: вам нужно запустить sudo apt update из командной строки для обновления источников. Затем вы можете узнать, что можно обновить без фактической модернизации:

$ apt list --upgradable Listing... Done conky-std/xenial 1.10.1-3 amd64 [upgradable from: 1.9.0-4] google-chrome-stable/stable 65.0.3325.181-1 amd64 [upgradable from: 63.0.3239.132-1] libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1] nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1] peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 amd64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

Глядя на вывод, вы можете решить, что данный пакет «закреплен» или «сдержан», а не обновлен в следующий раз, sudo apt upgrade ". Если бы было одно« обновление / обновление », вы потеряли бы эти возможности.

Без отдельного apt update вы не можете видеть, что будет обновлено!

2
ответ дан 17 July 2018 в 20:54

В отсутствии дистрибутива есть одна команда обновления обновления, если она есть, это не что иное, как предопределенные псевдонимы, насколько я предполагаю. Эти псевдонимы можно легко установить на Ubuntu, отредактировав ~ / .bashrc.

Обновление используется для ресинхронизации хранилищ и устранения любых проблем. Затем, когда вы обновляете, вы фактически угадываете свои установленные пакеты. Но когда вы Dist-Upgrade, вы полностью обновляетесь. В Arch linux они подчеркивают полное обновление с помощью Syu. Вы можете сделать то же самое в Ubuntu. При полном обновлении вы фактически решаете любую систему проблем с зависимостями, которая может возникнуть при частичном обновлении.

Надеюсь, что это поможет. Извините, что текст был напечатан на телефоне.

0
ответ дан 23 July 2018 в 21:35
  • 1
    yum и dnf автоматически выполняют эквивалент update для большинства операций, если кэшированные данные достаточно стары. См. Например, обсуждение изменения этого поведения в dnf: lwn.net/Articles/750334 – muru 3 April 2018 в 10:07

Всякий раз, когда вы меняете источники программного обеспечения, вы должны запустить команду sudo apt update, чтобы обновить список доступных программ. Затем вы можете искать доступные пакеты в новом исходном ПО, который вы только что добавили и / или установили.

Команда sudo apt upgrade является терминальным эквивалентом обновления списка установленных пакетов с использованием приложения Software Updater. Это отличается от обычного рабочего процесса добавлением нового источника программного обеспечения, обновления списка доступного программного обеспечения для включения пакетов из нового источника программного обеспечения и установки новых пакетов из нового источника программного обеспечения, который вы только что добавили, так что это более удобно и менее запутанным, что sudo apt update и sudo apt upgrade являются отдельными командами.

Это также менее запутанно отделять sudo apt update и sudo apt upgrade, потому что, когда вы запускаете sudo apt update успешно, вы подтвердили, что имеете подключение к Интернету. Если при запуске sudo apt upgrade возникает проблема, проблема скорее связана с проблемой управления пакетами, чем с проблемой подключения к Интернету, а результаты sudo apt upgrade предоставят ключи для диагностики и решения проблемы.

6
ответ дан 23 July 2018 в 21:35

Обновление не является единственным моментом, когда вам может понадобиться apt-get update, и я не хочу обновлять его каждый раз, когда я просто хочу обновлять списки пакетов.

Работая хорошо apt-get upgrade зависеть от apt-get update, запущенного не так давно, но тогда это верно и для apt-get remove и apt-get install! Должны ли все это подразумевать apt-get update? Конечно нет!

С другой стороны, учитывая, что apt-get remove и apt-get install также могут зависеть от apt-get update, который недавно был успешно завершен, имеет смысл apt-get upgrade для каждого запуска apt-get update? Нет, опять же, поскольку то, что я намереваюсь сделать, вполне может противоречить тому, что apt-get upgrade будет делать.

7
ответ дан 23 July 2018 в 21:35

История разницы между update и upgrade на самом деле довольно крутая.

Давно, давно - примерно 2000 или около того, за несколько лет до существования Ubuntu - полоса пропускания и диск пространство было гораздо более ограниченным ... хотя и обширным по сравнению с серединой 1990-х годов. Широкополосная связь только начинала, и dialup все еще был жизненно важным способом онлайн. Большим дискам все еще было всего несколько сотен МБ. Апт был блестящим и новым, радикальным и революционным, построенным на основе dpkg.

Пригодная база данных, когда вы думаете об этом, - это чудо: это точная в настоящее время база данных всего программного обеспечения из всех известных репозиториев. Он достаточно подробен для apt для расчета зависимостей и определения доступных обновлений, но достаточно мал для передачи по модемам удаленного доступа времени и для хранения на небольших дисках времени. Обновление вашей базы данных по телефону может занять несколько минут после хорошего соединения. Хотя это долгое время, поиск обновлений пакетов вручную (до apt) может потреблять часы.

В то время дистрибутивы были построены по-разному - нет непрерывной интеграции, без тестирования дыма (ну, не очень много тестирования вообще !), строить фермы только начали. Модификации должны были быть возвращены чаще, чем сейчас. Многие пользователи выбрали все обновления определенных пакетов по различным причинам или для выбора только определенных обновлений сегодня (для проверки вручную) и других обновлений завтра.

В течение последующих 15 или - В течение многих лет инструменты не сильно изменились, поэтому у нас все еще есть отдельные действия update и upgrade. [D4] все эволюционировали по мере того, как надежность дистрибутива улучшилась, и большая часть управления источником / обновлением / обновлением, которая использовалась вручную, была медленно скрыта за слоями автоматизации (software-updater, unattended-upgrades).

Модернизация программных пакетов - одна из причин, по которой недавно появились Snaps и AppImage и Flatpack, но это следующая глава.

5
ответ дан 23 July 2018 в 21:35

Можно спросить, зачем загружать программу из официального репозитория Ubuntu с помощью apt, затем установить его? Какая разница, если вы сначала загрузите его, а затем установите, а не загружаете и устанавливаете в одной операции?

Ну, после прочтения комментариев и размышлений об этом я понимаю, что это связано с философией Unix , модульная философия, в которой в основном говорится: «Каждая программа делает одну вещь»: сначала загрузите, затем установите --- каждое действие со своей выделенной программой.

0
ответ дан 23 July 2018 в 21:35

Они делят вещи по многим причинам.

Один из примеров - это вопрос, который я опубликовал и ответил сам: как можно удалить PPA с помощью GUI ?. На этом экране мы хотим удалить PPA, не обновляя программное обеспечение:

Как можно удалить PPA с помощью GUI?

После удаления PPA программное обеспечение GUI автоматически работает sudo apt update. Если вы должны удалить PPA из командной строки, вам нужно запустить sudo apt update удалить PPA , удалив PPA из списка источников.

Без отдельной функции apt update есть

Еще один пример: вам нужно запустить sudo apt update из командной строки для обновления источников. Затем вы можете узнать, что можно обновить без фактической модернизации:

$ apt list --upgradable Listing... Done conky-std/xenial 1.10.1-3 amd64 [upgradable from: 1.9.0-4] google-chrome-stable/stable 65.0.3325.181-1 amd64 [upgradable from: 63.0.3239.132-1] libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1] nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1] peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 amd64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

Глядя на вывод, вы можете решить, что данный пакет «закреплен» или «сдержан», а не обновлен в следующий раз, sudo apt upgrade ". Если бы было одно« обновление / обновление », вы потеряли бы эти возможности.

Без отдельного apt update вы не можете видеть, что будет обновлено!

2
ответ дан 23 July 2018 в 21:35
  • 1
    Второй пара является ложным. yum и dnf автоматически запускают эквивалент обновления при выполнении соответствующих операций. Например, эквивалент apt list --upgradable - yum check-update, который обновляет список пакетов, если он не был обновлен в последнее время. Это, безусловно, возможно для этого, как это видно из других менеджеров пакетов. – muru 6 April 2018 в 11:20
  • 2
    @muru Это основано на этом 238 голосовом ответе , в котором говорится, что вы должны запустить sudo apt update после удаления репозитория. – WinEunuuchs2Unix 6 April 2018 в 13:05
  • 3
    Теперь, когда вы упомянули об этом, это также неверно. Как снова видно из примера yum / dnf, операция обновления является автоматической, поэтому отключенный источник автоматически удаляется из следующей операции. Опять-таки, что-то вполне возможно. – muru 6 April 2018 в 13:12
  • 4
    @muru Также, по крайней мере, в моей системе не установлены ни yum, ни dnf. Установка одного из них для замены apt update приведет к увеличению системных издержек и времени обучения. – WinEunuuchs2Unix 6 April 2018 в 13:13

Другие вопросы по тегам:

Похожие вопросы: