Dist upgrade: 18.04 — Is apt dist-upgrade not necessary anymore
Что такое «dist-upgrade» и почему он обновляется больше, чем «обновление»?
Из apt-get
руководства :
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.
И с новым apt
инструментом, доступным с 14.04 и далее:
full-upgrade
full-upgrade performs the function of upgrade but may also remove
installed packages if that is required in order to resolve a
package conflict.
В вашем конкретном случае я вижу, например, что linux-headers
— это виртуальный пакет, который предоставляется как linux-headers-3.0.0-12
, так и linux-headers-3.0.0-13
, и это звучит как тип установки и удаления пакета, обработанный dist-upgrade
, но не upgrade
.
Принудительное отсутствие запроса в apt-get upgrade или apt-get dist-upgrade
Я использую AWS EC2 14.04 LTS и пытаюсь запустить команду
apt-get -y upgrade
или apt-get -y dist-upgrade
, однако, я всегда получаю подсказку, как это:
я попробовал выполнить следующие команды, но ни одна из них не работает, и я все еще получаю выше приглашение:
apt-get update && apt-get -y -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" dist-upgrade
apt-get update && apt-get -o Dpkg::Options::='--force-confold' --force-yes -fuy dist-upgrade
Я искал в гугле решения, но не мог найти, что на самом деле работает. У кого-нибудь есть какие-нибудь мысли?
Спасибо
linux
ubuntu
package
apt-get
ubuntu-14.04
Поделиться
Источник
Nam Nguyen
24 июля 2014 в 06:57
2 ответа
- apt-get dist-upgrade хочет удалить рабочий стол kde
Я установил тестирование Debian на свой ноутбук. Обычно мне обновить систему следующими командами: sudo apt-get update первый и второй sudo apt-get dist-upgrade . Обычно это работает отлично, но вчера, когда я хотел вызвать команду dist-upgrade, apt заявил, что эта команда удалит следующие пакеты…
- raspberry pi, apt-get обновление в скрипте не работает
Когда я выполняю: sudo apt-get update sudo apt-get upgrade из командной строки это работает. Если я поставлю ту же строку в файл скрипта maintain.script: echo UPDATING SYSTEM SOFTWARE – UPDATE sudo apt-get update echo UPDATING SYSTEM SOFTWARE – UPGRADE sudo apt-get upgrade и работать: sudo…
8
Мне потребовалось некоторое время, чтобы найти простое решение. Я мог бы избежать подсказки, добавив DEBIAN_FRONTEND='noninteractive' apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold'
Итак, вот моя общая функция, которую я использую для обновления всех моих машин Ubuntu:
function runAptGetUpgrade()
{
DEBIAN_FRONTEND='noninteractive' apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' upgrade
DEBIAN_FRONTEND='noninteractive' apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade
apt-get autoremove -y
apt-get clean
apt-get autoclean
}
REF My Lib: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
REF ответ: https://serverfault.com/questions/479571/running-apt-get-upgrade-with-chef-solo
Поделиться
Nam Nguyen
08 апреля 2015 в 19:43
Поделиться
Hackeron
20 февраля 2015 в 01:12
Похожие вопросы:
apt-get update, dist-upgrade, autoremove, autoclean в одной команде sudo
Моя обычная команда для поддержания машины в актуальном состоянии довольно многословна, и она может привести к более чем одному запросу пароля, если какая-либо команда займет много времени: sudo…
Обновление apt-get и apt-get обновление в шеф-повара
Если package nginx в шеф-повар получает в переводе на apt-get install nginx на узле Ubuntu, что может быть написано в рецепте шеф-повара, что бы перевести на: apt-get -y update apt-get -y upgrade Не…
RPM эквивалент pacman-Syu или apt-get обновление && apt-get обновление
Я только недавно установил OpenSUSE Tumbleweed, и я никогда раньше не использовал систему на основе rpm. Я не нашел ни одного подходящего руководства, такого как Archwiki, для таких систем. Какая…
apt-get dist-upgrade хочет удалить рабочий стол kde
Я установил тестирование Debian на свой ноутбук. Обычно мне обновить систему следующими командами: sudo apt-get update первый и второй sudo apt-get dist-upgrade . Обычно это работает отлично, но…
raspberry pi, apt-get обновление в скрипте не работает
Когда я выполняю: sudo apt-get update sudo apt-get upgrade из командной строки это работает. Если я поставлю ту же строку в файл скрипта maintain.script: echo UPDATING SYSTEM SOFTWARE – UPDATE sudo…
Linux, соединяя вместе apt-get обновление и apt-get обновление
Я пытаюсь развернуть небольшое приложение django, созданное мной на удаленном сервере с помощью fabric. Поскольку это свежий сервер, и после того, как я погуглил, я заметил, что мне пришлось…
Состояние «pkg.upgrade», найденное в SLS ‘apt-upgrade’, недоступно
Я пытаюсь создать файл SLS, который выполнял бы вызов apt-get upgrade в системе Ubuntu. Я бегу в режиме без мастера. Вызов его непосредственно из командной строки работает: $ salt-call —local…
Как запретить apt удалять определенный пакет во время dist-upgrade?
Есть ли способ запретить apt (apt-get) удалять определенный пакет во время dist-обновления, но разрешить его upgrade/downgrade?
sudo apt обновление && sudo apt dist-upgrade 7 не обновлено
sudo apt update && sudo apt dist-upgrade Hit:1 http://ports.ubuntu.com/ubuntu-ports xenial InRelease Hit:2 http://ports.ubuntu.com/ubuntu-ports xenial-security InRelease Hit:3…
Как исправить ошибку 400 на apt-get dist-upgrade
Я запускаю большой плейбук ansible на локальном VM для тестирования. Я пробовал это как с помощью VM, подготовленного vagrant (используя https:/ / app.vagrantup.com/geerlingguy/boxes/ubuntu1604 ),…
apt-get update, dist-upgrade, autoremove, autoclean в одной команде sudo
Моя обычная команда для поддержания машины в актуальном состоянии довольно многословна, и она может привести к более чем одному запросу пароля, если какая-либо команда займет много времени:
sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove && sudo apt-get autoclean
Я бы хотел сократить это до одной команды (желательно без использования глобального псевдонима).
Решение основано на ответе @amra’s и еще одном совете :
sudo sh -c 'apt-get update && apt-get upgrade --yes && if [ -f /var/run/reboot-required ]; then echo You should reboot; fi'
ubuntu
apt-get
Поделиться
Источник
l0b0
23 июля 2010 в 08:52
2 ответа
21
Попробуй
sudo sh -c "apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean"
Поделиться
amra
23 июля 2010 в 09:12
1
Оператор ‘&&’ можно использовать для выполнения команды ‘cmd2’ тогда и только тогда, когда ‘cmd1’ был выполнен без ошибок:
(cmd1 && cmd2)
Но это работает только в bash непосредственно, без ‘sudo’ спереди.
Итак, чтобы работать так, как ожидалось, мы можем использовать следующую команду:
sudo /bin/sh -c "apt-get update && apt-get dist-upgrade && apt-get autoremove && apt-get autoclean"
Обратите внимание, что ответ, предложенный Амрой, не совпадает с приведенной выше командой:
Команды, разделенные символом»;», выполняются последовательно без учета кода выхода предыдущей команды.
При использовании «&&» для разделения команд учитывается код выхода.
Таким образом, если у нас есть «cmd1 && cmd2», cmd2 выполняется только в том случае, если код выхода cmd1 был равен 0 (т. е. cmd1 не потерпел неудачу).
Поделиться
Javaguru
23 июля 2010 в 09:13
Похожие вопросы:
apt-get dist-upgrade хочет удалить рабочий стол kde
Я установил тестирование Debian на свой ноутбук. Обычно мне обновить систему следующими командами: sudo apt-get update первый и второй sudo apt-get dist-upgrade . Обычно это работает отлично, но…
Принудительное отсутствие запроса в apt-get upgrade или apt-get dist-upgrade
Я использую AWS EC2 14.04 LTS и пытаюсь запустить команду apt-get -y upgrade или apt-get -y dist-upgrade , однако, я всегда получаю подсказку, как это: я попробовал выполнить следующие команды, но…
Почему ‘Expect’ ждет даже после прихода ожидаемого паттерна на выходе?
Я хочу обновить все мои PCs с помощью автоматической команды удаленно. Это мой код с использованием скрипта ‘expect’: #!/usr/bin/expect -f set pa paswoord set n1 user1 set n2 user2 set timeout 2400…
raspberry pi, apt-get обновление в скрипте не работает
Когда я выполняю: sudo apt-get update sudo apt-get upgrade из командной строки это работает. Если я поставлю ту же строку в файл скрипта maintain.script: echo UPDATING SYSTEM SOFTWARE – UPDATE sudo…
Почему я не могу `sudo apt-get обновить && sudo apt-get установить google-cloud-sdk`?
Я следовал инструкциям в этом url, https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu и когда я набрал команду sudo apt-get update && sudo apt-get install google-cloud-sdk Я получил…
apt-get ошибка разрешения при установке node.js
Я пытаюсь установить node.js 7 на ubuntu. при выполнении команды curl -sL https://deb.nodesource.com/setup_7.x | bash — или sudo curl -sL https://deb.nodesource.com/setup_7.x | bash — я получаю…
не удается установить r-base 3.6.3 в linux mint
Если я запущу это sudo apt-get install r-base R 3.4 устанавливается из репо ubuntu. Поэтому я добавил репозитории CRAN, сделав sudo add-apt-repository ‘deb…
Yes/No shell скрипт, вызывающий цикл «==Yes»?
Я создаю сценарий shell для автоматического выполнения sudo apt update/upgrade/autoremove/autoclean (первый сценарий bash в моей жизни), все работает, кроме раздела да или нет Вот мой код:…
sudo apt обновление && sudo apt dist-upgrade 7 не обновлено
sudo apt update && sudo apt dist-upgrade Hit:1 http://ports.ubuntu.com/ubuntu-ports xenial InRelease Hit:2 http://ports.ubuntu.com/ubuntu-ports xenial-security InRelease Hit:3…
Как повторно использовать часть `apt up` команд `apt update` и `apt upgrade` для последовательного выполнения обеих команд всего в одной строке
Для целей обучения я хочу знать, возможно ли это и если да, то как повторно использовать часть apt up команд apt update и apt upgrade для выполнения обеих последовательно всего в одной строке? т….
Postgres Pro Standard : Документация: 11: E.11. Postgres Pro Standard 11.2.1 : Компания Postgres Professional
Исправлена ошибка при обработке запросов с множеством предложений OR
, приводившая к дублированию результатов и нарушению порядка сортировки.
Устранён дефект, провоцирующий сбой сервера при использовании нестрогих агрегатных функций.
Изменена модель распространения утилиты pg_probackup:
В Linux программа pg_probackup теперь предоставляется в пакете
pg-probackup-std-11
. В системах на базе Debian или ALT Linux для обновления Postgres Pro Standard с версии 11.1.1 выполнитеapt dist-upgrade
(илиapt-get dist-upgrade
), чтобы корректно обработались все новые зависимости пакетов.Для Windows теперь предоставляется отдельный инсталлятор pg_probackup. Прежде чем устанавливать pg_probackup, вы должны установить основные компоненты текущей версии Postgres Pro.
В интерактивном инсталляторе Postgres Pro для Windows появились новые возможности. Теперь вы можете:
Выбрать в качестве провайдера основного правила сортировки
icu
илиlibc
. Ранее в отсутствие такого выбора в Postgres Pro Standard всегда выбирался провайдерicu
.Выбрать пользователя, который будет запускать службу Postgres Pro. По умолчанию служба Postgres Pro запускается от имени пользователя
NT AUTHORITY\NetworkService
.
В SUSE Linux Enterprise Server и системах на базе RHEL несколько утилит перемещены в другие пакеты для согласованности с другими дистрибутивами Linux: pg_receivewal и pg_recvlogical теперь содержатся в пакете postgrespro-std-11-client
, а pg_rewind, pg_waldump и pg_upgrade — в пакете postgrespro-std-11-server
.
Интегрировано исправление, позволяющее избежать условий гонки в процессе dsm_attach()
при повторном использовании указателей DSM; в ванильном PostgreSQL это исправление запланировано только в будущих выпусках. Ожидается, что в результате разрешатся проблемы, при которых сервер выдаёт следующее сообщение об ошибке: ERROR: dsa_area could not attach to segment
(ОШИБКА: dsa_area не может получить доступ к сегменту).
Исправлена работа pg_upgrade с ограничениями доменов, зависящими от правил сортировки. Такие ограничения теперь проверяются в процессе обновления, тогда как в предыдущих версиях Postgres Pro они всегда помечались в новом кластере как непроверенные.
Налажена работа pg_dump с базами данных предыдущей основной версии Postgres Pro.
Исправлен скрипт pg-setup; теперь с ключом -D
он позволяет инициализировать кластер в нестандартном расположении.
Улучшена оценка избирательности для индексов, построенных по логическим столбцам.
Устранено снижение производительности при сканировании только индекса, когда индекс построен по множеству полей.
Ускорено создание индексов и минимизировано нежелательное вытеснение страниц отношений из общих буферов при построении индексов.
Прекращена поддержка систем Альт Линукс СПТ 6.0 и Windows 7 SP1.
Модуль pg_pathman
обновлён до версии 1.5.5. Эта версия по сравнению с 1.5.2, поставляемой в предыдущем выпуске Postgres Pro, включает следующие усовершенствования:
Усовершенствованы скрипты обновления
pg_pathman
во избежание ошибок при миграции с основной версии 1.4 на 1.5 из-за различного числа атрибутовpg_config
в этих версиях.Повышена стабильность
pg_pathman
:Попытки вызова функций
pg_pathman
при отключённом расширении теперь не будут приводить к сбоям сервера; вместо этого будут выдаваться ошибки.К одной и той же таблице могут быть применены различные стратегии секционирования.
Модуль pg_variables
обновлён до версии 1.2:
Добавлена поддержка переменных-массивов.
Повышена стабильность модуля.
Исправлено удаление пустых пакетов. Теперь пустой пакет будет удаляться только после завершения транзакции, в которой он был опустошён.
(См. Раздел F.42.)
16.04 — Dist-upgrade создал проблему
У меня возникла та же проблема после запуска Sudo do-release-upgrade -d
на клонированном разделе Ubuntu 16.04. Цель состояла в том, чтобы проверить наличие ошибок при обновлении до 18.04.1
, но система остановилась с сообщением:
To continue please press [ENTER]
Inhibiting until Ctrl+C is pressed...
Итак, я нажал Ctrl+C и он вернулся в командную строку.
Затем я побежал:
$ Sudo apt update
Hit:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:2 http://ca.archive.ubuntu.com/ubuntu bionic InRelease
Hit:3 http://ca.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:4 http://ca.archive.ubuntu.com/ubuntu bionic-backports InRelease
(appstreamcli:15814): GLib-CRITICAL **: g_strchug: assertion 'string != NULL' failed
(appstreamcli:15814): GLib-CRITICAL **: g_strchomp: assertion 'string != NULL' failed
(appstreamcli:15814): GLib-CRITICAL **: g_strchug: assertion 'string != NULL' failed
(appstreamcli:15814): GLib-CRITICAL **: g_strchomp: assertion 'string != NULL' failed
AppStream cache update completed, but some metadata was ignored due to errors.
Reading package lists... Done
Building dependency tree
Reading state information... Done
1675 packages can be upgraded. Run 'apt list --upgradable' to see them.
Основываясь на комментариях выше плюс этот ответ: Нажмите Ctrl + c во время do-release-upgrade. Я его сломал? Я использовал:
Sudo sed -i -e 's/bionic/xenial/g' /etc/apt/sources.list
Теперь Sudo apt update
завершается нормально.
Проблемы с апгрейдом
Теперь, когда я запускаю do-release-upgrade -d
и обращаю пристальное внимание, я замечаю эти строки посередине:
Get:57 http://ca.archive.ubuntu.com/ubuntu bionic-backports/universe DEP-11 64x64 Icons [1,789 B]
Fetched 44.8 MB in 6s (4,884 kB/s)
(appstreamcli:30117): GLib-CRITICAL **: g_strchug: assertion 'string != NULL' failed
(appstreamcli:30117): GLib-CRITICAL **: g_strchomp: assertion 'string != NULL' failed
(appstreamcli:30117): GLib-CRITICAL **: g_strchug: assertion 'string != NULL' failed
(appstreamcli:30117): GLib-CRITICAL **: g_strchomp: assertion 'string != NULL' failed
AppStream cache update completed, but some metadata was ignored due to errors.
Checking package manager
Reading package lists... Done
Я отменяю обновление, отвечая N подсказать.
Быстрый поиск приводит к этому Вопросу и Ответу: E: Проблема с выполнением сценариев APT Update :: Ошибка Post-Invoke-Success во время обновления apt-get
Я могу проверить ту же ситуацию, используя:
$ Sudo apt update
Hit:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Hit:2 http://ca.archive.ubuntu.com/ubuntu xenial InRelease
Hit:3 http://ca.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:4 http://ca.archive.ubuntu.com/ubuntu xenial-backports InRelease
AppStream cache update completed, but some metadata was ignored due to errors.
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Рекомендуемое решение в ссылке — использовать:
Sudo apt-get purge libappstream3
Выполнение этой мета-ошибки теперь прошло:
$ Sudo apt update
Hit:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Hit:2 http://ca.archive.ubuntu.com/ubuntu xenial InRelease
Hit:3 http://ca.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:4 http://ca.archive.ubuntu.com/ubuntu xenial-backports InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Следующим шагом будет запуск Sudo do-release-upgrade -d
в третий раз и скрестим пальцы.
Вводящее в заблуждение сообщение во время обновления
У другого пользователя была похожая проблема: обновление Ubuntu с 16.04 до 18.04 занимает слишком много времени
Оказывается, сообщение в две строки выходит одновременно:
To continue please press [ENTER]
Inhibiting until Ctrl+C is pressed...
Вы думаете, что обновление запрещено, пока вы не нажмете Ctrl+C но на самом деле это означает, что обновление не начнется, пока вы не нажмете Enter,.
Вздох
История одного обновления.
Так получилось, что на работе один из вспомогательных серверов на базе Ubuntu 12.04 Server LTS нужно было срочно обновить до Ubuntu 14.04 Server LTS, не ожидая, как принято, первой релизной точки 14.04.1. Да-да, я использую на своём предприятии бесплатный Ubuntu Server с пятилетней поддержкой в виртуальных средах, отказываясь потихоньку от FreeBSD. Так совпало, что дома на стареньком ноутбуке жены ASUS X80L была до сих пор Ubuntu 13.10, которую резко, вдруг, захотелось обновить до 14.04 Trusty Tahr прямо в разгар вечеринки с друзьями. И вот хочется поведать об этой истории очередного обновления.
Рекомендованный путь обновления серверов Ubuntu лежит через использование do-release-upgrade. Будучи частью пакета update-manager-core, do-release-upgrade не имеет графического интерфейса и позволяет отслеживать изменения в конфигурациях системы при переходе от релиза на релиз. Круто? Круто! Обновил я всё же сервер с 12.04 до 14.04 по старинке, без рекомендованного do-release-upgrade.
А вот рассказать захотелось про обновление десктопной Ubuntu 13.10. Приглядывая за ноутбуком левой пяткой правой ноги, ибо шла вечеринка, понял, что штатный графический обновлятор, который и предупредил о доступности нового релиза, начал тупить. Мышка двигалась, но с трудом и скачками. Окно информировало, что счас идёт работа над какими-то шрифтами, но слишком уж долго эта надпись торчала на экране и не сменялась другой. Так же пугала строка Out of memory, которая не предвещала ничего хорошо. Замутнённый алкоголем мозг раздумывал, какой memory не хватает — установщик раздул свою деятельность и вытеснил всё в swap или может банально место кончилось на каком-нибудь важном разделе. Дал время ещё чуть-чуть и решил, что нужно прерывать процесс обновления. Прервал и решил, что пора старику dist-upgrade показать молодым как нужно обновлять систему.
Так как система уже была обновлена в рамках релиза 13.10 и даже начала обновление до 14.04, пропускаем этап sudo apt-get update && sudo apt-get upgrade
. Нужно в файле /etc/apt/sources.list (и в /etc/apt/sources.list.d/) заменить все упоминания старого релиза (13.10 была saucy) на новый (14.04 это trusty), но в моём случае зависший обновлятор уже заменил строки. Я лишь отключил все сторонние репозитория, чьи домены отличаются от доменов ubuntu.com или canonical.com, хотя это одно и тоже.
Осталось сделать лишь sudo apt-get update && sudo apt-get dist-upgrade
, но я решил сначала скачать пакеты и лишь потом установить их, когда смогу снова улизнуть на минутку от друзей . Только скачать пакеты — sudo apt-get update && sudo apt-get -d dist-upgrade
. Когда всё скачается, остаётся лишь поставить — sudo apt-get dist-upgrade
Как пишет всёзнающий man, dist-upgrade обладает интеллектуальной возможностью по сравнению с upgrade, благодаря которой лучше разруливаются зависимости новой версии установленного пакета программы. Благодаря такой умной системе, разруливающей конфликты пакетов, dist-upgrade может пожертвовать, если это необходимо, менее важными пакетами, чтобы обновить систему до актуального состояния.
То есть меня опять выручила старая схема, используемая в Debian семействе:
- Обновляемся в рамках своего релиза —
sudo apt-get update && sudo apt-get upgrade
- Правим свои репозитория, попутно отключая сторонние, в файле /etc/apt/sources.list и каталоге /etc/apt/sources.list.d/
- Интеллектуально обновляемся на новый релиз
sudo apt-get update && sudo apt-get dist-upgrade
.
А в чём мораль? Мораль сей басни такова, что в дни выхода нового релиза Убунту, популярными запросами к поисковым системам становятся фразы типа: Как обновить Ubuntu 14.04 до 14.10?, Как обновить Ubuntu 14.10 до 15.04?, Как обновить Ubuntu 15.04 до 15.10? Как, как!? Всего лишь нужно дождаться, когда штатный обновлятор системы предложит это сделать сам, а если он, подлец, не справится, по какой-то не понятной причине, тогда к вам на помощь придёт старый, железно работающий метод apt-get dist-upgrade!
Дополнительные материалы:
Постепенное, оно же фазовое, оно же инкрементальное обновление Ubuntu у пользователей.
Родео с обновлением Убунту 12.04 до альфа Ubuntu 12.10.
Родео с обновлением до альфа Ubuntu 13.04.
Обновление с Ubuntu 13.10 до Ubuntu 14.04 Trusty Tahr, когда Тар был альфой.
13 причин использовать Ubuntu Server. Часть 1.
Безопасность Ubuntu Server.
Дата последней правки: 2014-07-21 13:39:27
18.04 — Больше не требуется обновление apt dist-upgrade
apt-get upgrade
обновляет только приложения, инструменты и служебные программы. Он не устанавливает новое ядро ОС Linux.
apt upgrade
обновляет приложения, инструменты и служебные программы и устанавливает новое ядро ОС Linux. Однако он никогда не удаляет старые пакеты.
apt full-upgrade
обновляет приложения, инструменты и служебные программы и устанавливает новое ядро ОС Linux. Он также удаляет старые пакеты, если это необходимо для обновления.
Мне кажется, apt full-upgrade
делает то же самое, что и apt-get dist-upgrade
. То есть full-upgrade
проверяет и устанавливает новое ядро, если оно доступно, и удаляет старые пакеты, если удаление необходимо для обновления.
Ядра
являются фундаментальной частью ОС. По этой причине старая версия ядра никогда не заменяется новой версией при запуске apt upgrade
или apt full-upgrade
.Устанавливается новая версия ядра, а существующая версия остается как есть. Конфигурация в grub по умолчанию изменяется на загрузку с новой версии во время процесса обновления. Если новое ядро по какой-то причине не работает, можно загрузиться со старым ядром из расширенного меню grub.
Примечание. apt full-upgrade
не удаляет старые версии ядер, поскольку устанавливает новейшую версию. Для их удаления необходимо использовать apt autoremove
.
- Если вы используете
apt-get
, вам необходимо использоватьdist-upgrade
- Если вы используете
apt
, вам необходимо использоватьfull-upgrade
Я думаю, что dist-upgrade
немного сбивает с толку.Например, это не обновление с Ubuntu 16.04 до Ubuntu 18.04. Он обновляет только ядро и другие вещи в Ubuntu 16.04.
Я думаю, что full-upgrade
более интуитивно понятен, чем dist-upgrade
.
См. Что такое «dist-upgrade» и почему оно больше, чем «upgrade»? Больше подробностей.
Полное раскрытие: я просто пользователь Ubuntu, я не принимал решения менять его. Это мои личные взгляды.
Надеюсь, это поможет
Что такое команды Apt-get upgrade и dist-upgrade и как их использовать — Linux Hint
Как обычный пользователь или системный администратор, вы, вероятно, использовали инструменты управления пакетами apt или apt-get в какой-то момент в Linux.Мы можем использовать эти инструменты управления пакетами для управления определенными операциями, такими как поиск доступных пакетов, установка новых пакетов, удаление существующих, обновление и обновление установленных пакетов и т. Д.
Если говорить об обновлении пакетов, операционные системы Linux поставляются с множеством бесплатных обновлений программного обеспечения для каждого пакета. Он постоянно выпускает обновления, патчи и исправления для повышения производительности и исправления ошибок в них. Очень важно регулярно проверять наличие этих обновлений и устанавливать их, чтобы защитить систему от потенциальных угроз и уязвимостей.Для установки этих обновлений выполняется обновление, и есть два способа достичь этого: один — apt-get upgrade, а второй — apt-get dist-upgrade. Между этими двумя способами есть некоторая разница, которая часто сбивает пользователей с толку. Эта статья поможет вам понять и различить apt-get upgrade и apt-get dist-upgrade.
База данных пакетов обновления
Чтобы поддерживать вашу систему в актуальном состоянии, используются команды обновления и обновления. Команда обновления только обновляет список пакетов с последними доступными версиями, однако она не устанавливает и не обновляет пакет.Команда обновления фактически обновляет и устанавливает последние версии уже установленных пакетов. Перед обновлением пакетов проверьте наличие обновлений следующим образом. Это позволит apt-узнать о новых доступных версиях.
Что такое Apt-get upgrade
Для установки последних версий всех ранее установленных пакетов в вашей системе используется apt-get upgrade. Эта команда обновляет только те пакеты, для которых доступна новая версия, как указано в источниках.list в папке «/ etc / apt». Он не пытается установить новый пакет или удалить какой-либо установленный пакет самостоятельно.
Чтобы обновить или установить последние версии, выполните следующую команду от имени sudo, поскольку пользователь с единственными привилегиями может проверять и устанавливать обновления в системе Linux:
Для обновления определенного пакета введите следующую команду:
$ sudo apt-get upgrade <имя_пакета>
Что такое Apt-get dist-upgrade
Подобно команде apt-get upgrade, команда apt-get dist-upgrade также обновляет пакеты.В дополнение к этому, он также обрабатывает изменение зависимостей с последними версиями пакета. Он разумно разрешает конфликт между зависимостями пакетов и пытается обновить наиболее важные пакеты за счет менее значимых, если это необходимо. В отличие от команды apt-get upgrade, команда apt-get dist-upgrade является проактивной и сама устанавливает новые пакеты или удаляет существующие, чтобы завершить обновление.
Чтобы обновить пакеты, запустите команду dist-upgrade с привилегиями sudo:
$ sudo apt-get dist-upgrade
Для обновления определенного пакета введите следующую команду:
$ sudo apt-get dist-upgrade <имя_пакета>
Иногда, когда вы запускаете apt-get upgrade, вы получаете сообщение «Следующие пакеты были сохранены».Эти пакеты сохраняются, потому что для установки их новой версии им нужен какой-то другой пакет, который еще не установлен. И, как мы уже обсуждали, обновление apt-get обновляет только существующие пакеты, но не устанавливает новый пакет и не удаляет существующий. Вот почему он хранит эти пакеты. Иногда пакеты также сохраняются из-за сломанных зависимостей (когда пакет, от которого он зависит, не имеет загружаемой версии).
При использовании apt-get dist-upgrade новый зависимый пакет будет установлен для устранения зависимости.
В заключение, если вы хотите только обновить пакеты, не устанавливая или не удаляя их, перейдите к обновлению apt-get. С другой стороны, если вы хотите выполнить обновление независимо от того, установлен ли какой-либо новый пакет или удален существующий пакет для выполнения зависимостей, используйте apt-get dist-upgrade.
linux — В чем разница между apt dist-upgrade и apt upgrade?
Для справки:
apt upgrade
обновит все пакеты, которые можно обновить, без необходимости установки дополнительных пакетов или удаления любых конфликтующих установленных пакетов.По сути, он будет применять все обновления пакетов, которые не включают измененные зависимости.
apt full-upgrade
(правильный эквивалент для apt-get dist-upgrade
) также применяет обновления пакетов, если они требуют либо установки новых пакетов, либо удаления конфликтующих установленных пакетов. В основном он будет применять все обновления пакетов, в том числе с измененными зависимостями.
В стабильных наборах дистрибутивов, когда не добавляются новые источники APT, можно редко сталкиваться с измененными зависимостями, поэтому обычно apt full-upgrade
не требуется или не применяет никаких дополнительных обновлений по сравнению с apt upgrade
, за исключением пакета образа Linux обновления.Пакеты образов Linux обычно поставляются в виде метапакетов, например linux-image-amd64, который затем зависит от фактического версионного пакета, например Linux-образ-4.19.0-9-amd64. При использовании apt upgrade
метапакет образа Linux обычно не обновляется, так как потребуется установить новый пакет образа Linux с версией. С другой стороны, запуск apt full-upgrade
выполнит обновление, кроме того, он может удалить старый пакет с версией, если в новом определен связанный конфликт (что обычно не относится к пакетам образов Linux, например! ).
Из-за того, что установленные пакеты могут быть удалены с помощью apt full-upgrade
, его нельзя вызывать в неинтерактивном режиме. Я лично сталкивался с ситуациями при тестировании нового пакета тестирования Raspbian, когда из-за неразрешенных зависимостей или конфликтующих обновлений репозитория весь стек веб-серверов был бы удален. Мне нужно было подождать, пока эта несогласованность репозитория не будет устранена, прежде чем я смогу выполнить обновления, не вызывая хаоса. Однако на стабильных наборах я никогда не сталкивался с такой проблемой.
debian — Как я могу apt-get dist-upgrade, не удаляя пакеты?
Это неприятная проблема с менеджерами пакетов Debian. Любой, кто обновил сильно настроенные установки Ubuntu, слишком хорошо знает, что эта недостающая функциональность необходима. Устал от этой проблемы, я придумал обходной путь и просто успешно протестировал его во время обновления Linux Mint с 18 до 19.
Сначала обновите все пакеты, которые вы можете:
sudo apt-get upgrade
Или, если у вас установлено apt-fast
, лучше используйте его:
sudo apt-быстрое обновление
Это поможет вам пройти половину пути обновления за один раз:
1772 обновлено, 0 вновь установлено, 0 удалено и 1111 не обновлено.Необходимо получить 835 Мб архивов.
После этой операции будет использовано 271 МБ дополнительного дискового пространства.
Вы хотите продолжить? [Да / Нет]
Чтобы понять, что будет дальше, эта команда запросит обновление отдельного пакета, но только если это можно решить исключительно путем обновления установленных пакетов и установки новых пакетов. Пакеты удалены не будут. Если пакеты необходимо удалить, команда будет прервана с ошибкой:
apt-get upgrade --no-remove ИМЯ ПАКЕТА
И эта команда выведет список имен всех обновляемых пакетов:
список квартир - обновляемый | хвост +2 | вырезать -d / -f1
Итак, для пакетного обновления / установки всего, что возможно, вы можете использовать эту команду:
список квартир - обновляемый | хвост +2 | вырезать -d / -f1 | sudo xargs -n1 apt-get upgrade --no-remove -y
Это будет продвигать установку до тех пор, пока не возникнет такая ситуация:
Настройка procps (2: 3.3.12-3ubuntu1.2) ...
Файл конфигурации '/etc/sysctl.conf'
==> Изменено (вами или скриптом) с момента установки.
==> Дистрибьютор пакета отправил обновленную версию.
Что бы вы хотели с этим сделать? Возможны следующие варианты:
Д или Я: установить версию сопровождающего пакета
N или O: оставить текущую установленную версию
D: показать различия между версиями
Z: запустить оболочку, чтобы изучить ситуацию
Действие по умолчанию - сохранить текущую версию.*** sysctl.conf (Y / I / N / O / D / Z) [по умолчанию = N]? dpkg: ошибка обработки пакета procps (--configure):
конец файла на стандартном вводе в приглашении conffile
При обработке обнаружены ошибки:
procps
E: подпроцесс / usr / bin / dpkg вернул код ошибки (1)
Вместо ожидания ввода dpkg
умрет. Я не пытался исправить это, чтобы dpkg
действительно задавал вопрос вместо того, чтобы умирать. (что нужно, чтобы dpkg
обнаруживал интерактивную консоль, я не знаю.Возможно, удалив аргумент ‘-y’, но это неприятно.)
Вместо этого я вручную прервал процесс и исправил неработающие пакеты с помощью этой команды:
судо dpkg --configure -a
А затем повторно выполните предыдущую команду, чтобы продолжить установку. Мне пришлось повторить эту рутинную работу пару раз.
После этого вы можете автоматически удалить неиспользуемые пакеты, вручную исправить некоторые задержанные обновления и перезапустить этот процесс сверху.
Обходной путь не идеален, но он намного лучше, чем отсутствие решения.Надеюсь, это поможет людям с обновлением их системы!
kali linux — как решить apt-get dist-upgrade
Это очевидная ошибка пакетов gcc-10 в Debian: они переименовали пакет и удалили переходные пакеты до выпуска Bullseye. Следующие пакеты были переименованы (я думаю, чтобы более точно соответствовать заявленным соглашениям / политике debian):
- libgcc1 -> libgcc-s1
- lib64gcc1 -> lib64gcc-s1 (только на 32-битных архитектурах)
- lib32gcc1 -> lib32gcc-s1 (только на 64-битных архитектурах)
- libx32gcc1 -> libx32gcc-s1 (только на x86_64)
- несколько других на менее распространенных арках
Недавно переименованные пакеты имеют Обеспечивает: libgcc1
(и т. Д.) свойство, но это
похоже, что apt предпочитает реальный (старый) пакет libgcc1 виртуальному
пакет, который только «предоставляет» d более новым пакетом, так как он пытается не
сломать вашу систему. Я не знаком с деталями внутреннего устройства
разрешение зависимостей и порядок установки, но именно так я понимаю
проблема в любом случае.
Способ действительно решить проблему, по крайней мере, до исправления в дистрибутиве, состоит в том, чтобы предоставить «настоящие» (но пустые «переходные») пакеты, названные с использованием старого имени, которое зависит от нового имени пакета.Я сделал это на https://salsa.debian.org/rpavlik/gcc-10-compat (включая репо для добавления с пакетами). Там есть более подробная информация о проблеме и инструкции по обходному пути.
Поскольку я знаю, что ответы, содержащие только ссылки, не одобряются, вот примерно то, что эффективно делает мой обходной путь:
Вы можете использовать пакет Equivs
для создания собственных пустых пакетов. (Возможно, вам придется сделать это в другой системе или отменить изменения репо, чтобы иметь возможность устанавливать эквиваленты!) После установки эквивалентов
вы захотите сделать что-то вроде этого для каждого из переименованных пакетов:
# создать управляющий файл Equivs с именем libgcc1
Equivs-control libgcc1.контроль
# отредактировать файл управления эквивалентами: вам нужно будет установить:
# - Название "пакета" к старому названию
# - "Версия" на что-то большее, чем старая версия: 10.1.0-1 работает
# - «Зависит» от нового имени
нано libgcc1.control
# Создайте пакет - добавьте `--arch i386`, чтобы сделать 32-битную сборку
Equivs-build libgcc1.control
Затем вам нужно будет поместить это в apt repo: не просто установите его напрямую, потому что они заменят существенный, реальный libgcc, что не даст вам запустить apt! Создание репо выходит за рамки здесь, ответьте на другой вопрос или просто используйте репо, которое я уже сделал.
Как только эти новые «переходные» libgcc1 и т. Д. Будут доступны в репозитории apt, и вы обновите свои источники, чтобы выбрать bullseye, apt сможет правильно выполнить dist-upgrade / full-upgrade, и вы сможете удалить переходные пакеты после обновления. сделано.
linux — Debian dist-upgrade удаляет apache2
Я использую компьютер Debian 8.11 (Jessie) с некоторыми веб-приложениями.
Теперь я хотел установить все ожидающие обновления на сервере, используя
.
apt-get-update
apt-get upgrade
На экране отображается:
Чтение списков пакетов... Выполнено
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
Расчет апгрейда ... Готово
Следующие пакеты были сохранены:
apache2 apache2-bin apache2-data apache2-utils certbot libaugeas0 libssl1.1 python-cffi-backend python-cryptography python-openssl python-pbr python-psutil запросы python python-six python-urllib3
0 обновлено, 0 установлено заново, 0 удалено и 15 не обновлено.
Затем я подумал, что могу продолжить использовать
apt-get dist-upgrade
, который сначала произвел:
Чтение списков пакетов... Выполнено
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
Расчет обновления ... Следующий пакет был установлен автоматически и больше не требуется:
apache2-данные
Используйте 'apt-get autoremove', чтобы удалить его.
Выполнено
Следующие пакеты будут УДАЛЕНЫ:
apache2 libapache2-mod-php5 mailman mod-pagespeed-stable python-certbot-apache
Следующие пакеты были сохранены:
certbot python-cffi-backend, python-pbr, python-psutil, python-six, python-urllib3
Следующие пакеты будут обновлены:
Apache2-данные apache2-utils
2 обновленных, 0 вновь установленных, 5 для удаления и 6 не обновленных.Необходимо получить 0 B / 400 kB архивов.
После этой операции будет освобождено 69,2 МБ дискового пространства.
Вы хотите продолжить? [Да / Нет]
, и после выбора «Y» у меня больше не было установленного веб-сервера apache, и я не мог его переустановить.
Мои вопросы сейчас:
— Что здесь происходит?
— Это из-за того, что система уже слишком старая?
— Что я могу сделать, чтобы обновить систему с помощью все еще работающего веб-сервера apache (и всех других служб)
— Если возможно, я бы также хотел обновить систему до самой последней версии debian
Я видел несколько советов о том, как обновить Debian, но все они имели в качестве предварительного условия завершенное dist-upgrade…
Мы будем благодарны за вашу помощь.
Лучшее
Том
Управление пакетами
— полное обновление apt против резервирования при обновлении apt
Это может быть возможная ошибка, но это то, что беспокоит меня уже пару дней.
Разница между apt-get upgrade
и apt-get dist-upgrade
уже хорошо известна и хорошо зарекомендовала себя, то есть upgrade устанавливает / обновляет, а dist-upgrade
поддерживает установку / remove / upgrade , если удаление пакета необходимо для установки или обновления другого пакета.Разницу в пакетах можно легко обнаружить с помощью чего-то вроде
.
(следующий метод является быстрым и грязным, и для вставки копии потребуется ввести пароль sudo уже в терминале. Кроме того, поскольку у меня есть несколько пакетов и драйверов, которые я исправил сам, которые мне нужно сохранить для функциональности, я включил OR в awk
, чтобы извлечь только те, которые должны быть установлены и те, которые будут обновлены, а не те, которые перечислены как подлежащие сохранению, но следующее должно работать, даже если эти строки отсутствуют в ваших выходах apt upgrade
):
$ echo -e 'n' | sudo apt-get dist-upgrade | awk '
/ быть установленным | обновиться / {f = 1; next}; / не обновлено | не обновлено / {f = 0} f '| awk '
НАЧАТЬ {RS = "";} {print $ 0}
'| grep.> apt_get_dist_list
$ echo -e 'n' | sudo apt-get upgrade | awk '
/ быть установленным | обновиться / {f = 1; next}; / не обновлено | не обновлено / {f = 0} f '| awk '
НАЧАТЬ {RS = "";} {print $ 0}
'| grep. > apt_get_upgrade_list
, и когда я сравниваю два выхода с:
$ diff apt_get_dist_list apt_get_upgrade_list | grep -E '<|>'
в моем случае я получаю следующее:
Что делает разницу довольно очевидной, особенно с учетом наличия linux-header- *
и linux-image- *
в apt-get dist-upgrade
Теперь, если я повторю тот же процесс для apt upgrade
и apt full-upgrade
$ echo -e 'n' | sudo apt upgrade | awk '
/ быть установленным | обновиться / {f = 1; next}; / не обновлено | не обновлено / {f = 0} f '| awk '
НАЧАТЬ {RS = "";} {print $ 0}
'| grep.> apt_upgrade_list
$ echo -e 'n' | sudo apt полное обновление | awk '
/ быть установленным | обновиться / {f = 1; next}; / не обновлено | не обновлено / {f = 0} f '| awk '
НАЧАТЬ {RS = "";} {print $ 0}
'| grep. > apt_fullupgrade_list
и сравните:
$ diff apt_get_dist_list apt_fullupgrade_list | grep -E '<|>'
Я ничего не получаю, как и ожидалось, потому что apt full-upgrade
и apt-get dist-upgrade
должны вести себя точно так же, но когда я сравниваю:
$ diff apt_get_upgrade_list apt_upgrade_list | grep -E '<|>'
Я получаю тот же результат, что и при сравнении apt-get upgrade с apt-get dist-upgrade
.
> gir1.2-нм-1.0
> libcpupower2
> Linux-kbuild-5.2
> синий человек
> linux-cpupower
> заголовки linux-amd64
> Linux-изображение-amd64
> pdf-парсер
, и единственный вывод, к которому я могу прийти, заключается в том, что apt upgrade
в точности совпадает с apt full-upgrade
, что также делает его таким же, как apt-get dist-upgrade
, что в конечном итоге означает, что это не только apt upgrade
является избыточным, но еще большее беспокойство вызывает то, что в настоящее время apt
не допускает того же поведения, что и apt-get upgrade
.