Чому навіть існує розділення оновлення та оновлення?


12

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

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

Що було причиною розробників Ubuntu / Debian робити це розбиття updateі upgradeзамість цього працювати з однією командою для виконання обох завдань?

Це більше питання про архітектурну філософію розробників Ubuntu.


Якщо я збираюся встановити багато багатьох додатків (і згрупую їх, так що одна команда для однієї групи, наступна команда для наступної і т. Д.), Чому б я хотів завантажити репо-файли для кожної групи - відокремлюючи repo.update і наступні кроки встановлення Я можу зберегти пропускну здатність. Якби я хотів, щоб команда виконувала і те, і інше, я могла зробити сценарій або aliasце все одно Універсальний спосіб - це одна команда, але так чи інакше, так що розділення краще підходить для Unix-способу, якщо «теологічні / філософські» аргументи теж є вами.
guiverc

так само, якщо я перейду apt dist-upgradeі натисніть "n", щоб скасувати, то передумайте, я збережу пропускну здатність, оскільки вона не буде "оновлюватись", щоб повторно виконати свою apt dist-upgradeкоманду ... Навіть якщо "dist-upgrade" зробив оновлення автоматично, є причини "оновлення", які не включають "встановити", "оновити" або "відключити оновлення", щоб команда "оновлення" все одно існувала ..
guiverc

Я стверджував, що розділення не повинно існувати з точки зору користувача, і що дія « apt updateповинно просто виконуватись автоматично, коли це потрібно».
Робі Басак

Відповіді:


7

Оновлення - це не єдиний раз, коли вам може знадобитися 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буде робити.


6

Щоразу, коли ви змінюєте джерела програмного забезпечення, ви повинні запустити команду 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нададуть підказки для діагностики та вирішення проблеми.


5

Історія різниці між updateі upgradeнасправді досить класна.

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

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

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

Протягом наступних 15-ти років інструменти не сильно змінилися, тому ми все ще маємо окремі дії updateта upgradeдії. Робочий процес користувача перетворилася в дистрибутиві надійність покращилася, і велика частина вихідного / оновлення / управління поновлення , які раніше керівництво було повільно ховається за шарами автоматизації ( software-updater, unattended-upgrades).

Модернізація інструментів програмного забезпечення - одна з причин того, що нещодавно з'явилися Snaps і AppImage та Flatpack, але це наступна глава.


2

Вони роблять окремі речі з багатьох причин.

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

Видаліть PPA.png

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

Без окремої apt updateфункції немає способу видалити PPA !.


Ще один приклад - вам потрібно запустити 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ви не бачите, що було б оновлено!


Другий пункт - помилковий. yumі dnfавтоматично запускати еквівалент оновлення під час виконання відповідних операцій. Наприклад, еквівалент apt list --upgradableє yum check-update, який оновлює список пакетів, якщо він нещодавно не оновлювався. Це, безумовно, можливо, щоб це працювало, як це можна побачити в інших менеджерів пакетів.
муру

@muru Це ґрунтується на цій відповіді на 238 голосів, яка говорить, що вам потрібно запуститись sudo apt updateпісля видалення сховища.
WinEunuuchs2Unix

другий --- відокремлений розділ, потім.
муру

Тепер, коли ви це згадуєте, це також помилково. Як видно з прикладу yum/ dnfзнову, операція оновлення є автоматичною, тому відключене джерело автоматично видаляється з наступної операції. Знову ж таки, щось цілком можливо.
муру

@muru Також у моїй системі принаймні yumні dnfвстановлено , ні . Встановлення одного з них на заміну apt updateможе збільшити накладні витрати та час на навчання.
WinEunuuchs2Unix

0

Можна запитати, чому завантажувати програму з офіційного сховища Ubuntu, а aptпотім встановлювати її? Яка різниця була б, якщо ви спершу завантажите її, а потім встановите, а не завантажуєте та встановлюєте за одну операцію?

Ну, прочитавши коментарі та поміркувавши над цим, я зрозумів, що це пов’язано з філософією Unix , модульною філософією, яка в основному говорить "Кожна програма робить одне": Спочатку завантажте, а потім встановіть --- кожну дію зі своєю спеціальною програмою .


0

У жодному дистрибутиві не існує однієї речі оновлення команд, якщо вона існує, це не що інше, як попередньо визначені псевдоніми, скільки я припускаю. Ці псевдоніми також можна легко встановити на Ubuntu, відредагувавши ~ / .bashrc.

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

Сподіваюся, це допомагає. Вибачте, будь ласка, неочищений текст як написаний по телефону.


2
yumі dnfавтоматично виконувати еквівалент updateбільшості операцій, якщо кешовані дані досить старі. Дивіться, наприклад, дискусію про зміну такої поведінки в dnf: lwn.net/Articles/750334
muru
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.