Bug 30867

Summary: apt-get upgrade мешает
Product: Sisyphus Reporter: Sergey V Turchin <zerg>
Component: aptAssignee: darktemplar <darktemplar>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P3 CC: aen, boyarsh, cas, darktemplaralt, ekorneechev, evg, glebfm, imz, ldv, placeholder, rider, sotor, vseleznv
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Скриншот обновлённой по upgrade системы none

Description Sergey V Turchin 2015-03-26 17:03:33 MSK
Предлагаю upgrade уравлять с dist-upgrade, т.к. у пользователей из-за этого только проблемы.

Нередко встречаю использование имеенно upgrade. Или в других системах так привыкли или начитались какой-то документации.
Comment 1 Sergey V Turchin 2015-03-26 17:04:04 MSK
(В ответ на комментарий №0)
> уравлять
уравнять
Comment 2 Sergey V Turchin 2015-03-26 17:58:11 MSK
Или как вариант -- сделать upgrade рабочим. Может пригодиться для автоматических обновлений.
Comment 3 Evgenii Terechkov 2015-03-29 06:24:50 MSK
По моему наоборот удобно - upgrade обновляет пакеты только если они не тянут новых зависимостей, dist-upgrade обновляет всё.

А что не работает в upgrade?
Comment 4 Sergey V Turchin 2015-03-30 14:35:41 MSK
Если есть ответственное лицо, ручающееся за то, что уровень работоспособности upgrade не хуже, чем dist-upgrade, закрывайте.

> По моему наоборот удобно
Согласен.
Comment 5 Anton Farygin 2018-10-18 16:46:26 MSK
(В ответ на комментарий №3)
> По моему наоборот удобно - upgrade обновляет пакеты только если они не тянут
> новых зависимостей, dist-upgrade обновляет всё.
> 
> А что не работает в upgrade?

upgrade не проверяет что при этом ничего не сломается.
Comment 6 Dmitry V. Levin 2018-10-18 16:53:22 MSK
У меня upgrade работает нормально, наверное, я что-то делаю не так.
Comment 7 Anton Farygin 2018-10-18 16:53:56 MSK
Ты не пользователь. Поставь себе Workstation 8.2 и сделай upgrade.
Comment 8 Sergey V Turchin 2018-10-18 16:56:33 MSK
Надо сделать, чтоб upgrade не работал без опции --i-am-hacker. ;-)
Comment 9 Anton Farygin 2018-10-18 17:04:34 MSK
Ладно, я сделал за ldv.

Весьма консервативно. После такого обновления сказать что система обновилась - невозможно, как и гарантировать то, что она будет работать.

# apt-get upgrade 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие пакеты будут ОБНОВЛЕНЫ:
  ModemManager NetworkManager NetworkManager-adsl NetworkManager-bluetooth NetworkManager-daemon NetworkManager-ppp NetworkManager-wifi NetworkManager-wwan
  agetty alterator alterator-auth alterator-datetime alterator-grub alterator-l10n alterator-net-openvpn alterator-net-pppoe alterator-service-functions
  altlinux-freedesktop-menu-common altlinux-freedesktop-menu-mate altlinux-freedesktop-menu-shallow-menu altlinux-mime-defaults autofs avahi-autoipd
  avahi-daemon avahi-tools bash-completion cpu-x curl dbus dbus-tools dbus-tools-gui dia dm-tool docs-alt-workstation eepm etcnet etcnet-defaults-server
  fdisk firefox-esr firefox-esr-ru firmware-intel-ucode firmware-linux foomatic-db fuse getopt glibc-core glibc-gconv-modules glibc-locales glibc-nss
  glibc-preinstall glibc-pthread glibc-timezones glibc-utils glxgears glxinfo grub-common grub-efi grub-pc hplip hplip-PPDs hplip-common hplip-gui
  hplip-hpcups hplip-hpcups-PPDs hplip-hpijs hplip-hpijs-PPDs hplip-ps-PPDs hplip-sane hwclock i586-glibc-core.32bit i586-glibc-pthread.32bit
  i586-libudev1.32bit iconv java-1.8.0-openjdk java-1.8.0-openjdk-headless krb5-kinit libEGL libGL libGLES libXi libassuan libattr libaudit1 libavahi
  libavahi-glib libblkid libcurl libdbus libdrm libfdisk libfluidsynth libfuse libgbm libgcrypt20 libgnutls30 libgpg-error libidn2 libkrb5 libldap libldb
  liblightdm-gobject libmateweather libmateweather-data libmbim-glib libmm-glib libmount libmysqlclient18 libnetapi libnm libnm-glib-vpn1 libnm-glib4
  libnm-util2 libnspr libnss libnss-role libopensc libpasswdqc libpci libpq5.10 libpython libpython3 librpm librpmbuild librtpkcs11ecp libsane libsmartcols
  libsmbclient libsndfile libsoup libsoup-gnome libsss_certmap libsss_idmap libsss_nss_idmap libsystemd libtbb libtdb libudev1 libunistring2 libuuid libvlc
  libwayland-egl libwbclient libxatracker lightdm losetup lsblk make-initrd make-initrd-devmapper make-initrd-luks make-initrd-lvm make-initrd-mdadm
  make-initrd-plymouth make-initrd-ucode mate-default mate-minimal mc mint-translations mintmenu mount nscd nss-utils openldap openldap-clients opensc
  openssh openssh-askpass-common openssh-clients openssh-common openssh-server openssh-server-control pam0_passwdqc passwdqc-control passwdqc-utils pciids
  pciutils poppler-data python python-base python-dev python-module-Reportlab python-module-backports python-module-backports.ssl_match_hostname
  python-module-ipaddress python-modules python-modules-bsddb python-modules-compiler python-modules-ctypes python-modules-curses python-modules-email
  python-modules-encodings python-modules-hotshot python-modules-json python-modules-logging python-modules-multiprocessing python-modules-unittest
  python-modules-xml python-strict python-tools-2to3 python3 python3-base qt5-translations rpm rpm-build-python3 rpm-macros-alterator samba samba-client
  samba-client-libs samba-common samba-common-libs samba-common-tools samba-libs sane schedutils setarch sfdisk smtube sssd sssd-ad sssd-client
  sssd-krb5-common sssd-pac strace task-auth-ad-sssd thunderbird thunderbird-ru util-linux util-linux-control vim-common vim-console vim-minimal
  virtualbox-common virtualbox-guest-additions virtualbox-guest-utils vlc vlc-interface-qt4 vlc-mini vlc-plugin-ass vlc-plugin-bluray vlc-plugin-dbus
  vlc-plugin-dvdnav vlc-plugin-dvdread vlc-plugin-ffmpeg vlc-plugin-freetype vlc-plugin-globalhotkeys vlc-plugin-live555 vlc-plugin-matroska
  vlc-plugin-mpeg2 vlc-plugin-ogg vlc-plugin-pulseaudio vlc-plugin-taglib vlc-plugin-v4l vlc-plugin-xcb vlc-plugin-xml wget xdg-utils xorg-dri-intel
  xorg-dri-nouveau xorg-dri-radeon xorg-dri-swrast xorg-drv-intel xorg-drv-vboxvideo xsane xxd
Следующие пакеты будут СОХРАНЕНЫ:
  LibreOffice-common LibreOffice-gnome LibreOffice-integrated LibreOffice-langpack-ru alterator-browser-qt5 apt-indicator bash-completion-systemd
  card-actions cups-filters cups-filters-libs gnupg2 gutenprint krb5-ticket-watcher libgutenprint libjavascriptcoregtk4 libmate-menus libnss-myhostname
  libpoppler4-qt4 libpoppler62 libpoppler8-glib libqt5-core libqt5-dbus libqt5-eglfskmssupport libqt5-gui libqt5-network libqt5-widgets libqt5-x11extras
  libqt5-xcbqpa libqt5-xml libtalloc libtevent libvulkan1 libwebkit2gtk mate-menus pam_pkcs11 pam_systemd pinentry-common pinentry-qt5
  pkcs11-profiles-rutokenecp poppler printer-drivers-base python3-module-cupshelpers qt5-base-common qt5-x11extras-common system-config-printer
  system-config-printer-udev systemd systemd-analyze systemd-services systemd-sysvinit systemd-utils udev udev-extras udev-hwdb udev-rule-generator-net
  udev-rules
263 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 56 не будет обновлено.
Необходимо получить 0B/376MB архивов.
После распаковки потребуется дополнительно 151MB дискового пространства.
Продолжить? [Y/n]
Comment 10 Dmitry V. Levin 2018-10-18 17:07:23 MSK
А что не так?  Ни одного пакета не удаляется.  Не хочешь же ты сказать, что мы не поддерживаем точечные обновления?
Comment 11 Anton Farygin 2018-10-18 17:07:33 MSK
Created attachment 7820 [details]
Скриншот обновлённой по upgrade системы

Вот что остаётся после перезагрузки
Comment 12 Anton Farygin 2018-10-18 17:09:36 MSK
Дима, если у тебя есть желание поискать причину, то я могу выдать тебе виртуалку на которой ты можешь поэкспериментировать что там реально происходит.

У меня никогда не было ни времени ни желания посмотреть подробности, но как мне кажется - upgrade слишком много оставляет как "Сохранено".

Наверное что-то не так с точечными обновлениями.
Comment 13 Dmitry V. Levin 2018-10-18 17:11:03 MSK
(In reply to comment #11)
> Created an attachment (id=7820) [details]
> Скриншот обновлённой по upgrade системы
> 
> Вот что остаётся после перезагрузки

Значит, в каком-то пакете не хватает зависимостей.
Мне все эти пару десятков лет просто сказочно везло, upgrade проходил нормально.
Comment 14 Anton Farygin 2018-10-18 17:13:44 MSK
upgrade не устанавливает новых пакетов ни при каких условиях.

Что делает твой apt при upgrade, когда у установленной библиотеки появляется новая зависимость ?

И что делаешь после этого ты ?
Comment 15 Sergey V Turchin 2018-10-19 10:58:01 MSK
Со вчера на сегодня попробуйте apt-get upgrade. Наверняка будет весело.
Comment 16 Anton Farygin 2018-10-19 10:58:31 MSK
Ты забыл добавить - на рабочей станции с 3D.
Comment 17 Dmitry V. Levin 2018-10-19 11:11:38 MSK
(In reply to comment #15)
> Со вчера на сегодня попробуйте apt-get upgrade. Наверняка будет весело.

Обновление с "позавчера" на "вчера" было сломано настолько, что тому, кто смог обновиться до "вчера", уже ничего не страшно.
Comment 18 Sergey V Turchin 2018-10-19 14:41:03 MSK
(В ответ на комментарий №17)
> Обновление с "позавчера" на "вчера" было сломано
Я вчера вообще ничего не заметил. Может, потому что dist-upgrade? ;-)
Comment 19 Anton Farygin 2019-04-26 16:18:51 MSK
пользователь p8 в очередной раз напомнил мне про проблему apt-get upgrade, когда сказал что дистрибутив после установки и обновления через upgrade становится колом.


Предлагаю вернуться к вопросу, что надо dist-upgrade и upgrade слить в одно, добавив отдельную опцию dist-upgrade (например --only-installed).

=
Comment 20 Anton Farygin 2019-04-26 16:23:58 MSK
Второй вариант - мы можем начать тестировать вместо dist-upgrade - upgrade и не пропускать пакеты, ломающие дистрибутивы при таком виде обновления.

Нужно решить, какой способ обновления у нас является официально рекомендуемым и сделать второй способ неподдерживаемым.
Comment 21 Aleksei Nikiforov 2019-06-06 10:23:57 MSK
Сделал задание #231585 с заменой у apt-get и apt-shell действия upgrade на dist-upgrade если не указан параметр --only-installed или не выставлена настройка "APT::Get::UpgradeOnlyInstalled" в значение "true". Прошу посмотреть и зааппрувить.
Comment 22 Dmitry V. Levin 2019-06-06 10:26:20 MSK
(In reply to comment #21)
> Сделал задание #231585 с заменой у apt-get и apt-shell действия upgrade на
> dist-upgrade

Нет, так нельзя, это существенное нарушение обратной совместимости.
Comment 23 Aleksei Nikiforov 2019-06-06 11:06:42 MSK
(В ответ на комментарий №22)
> Нет, так нельзя, это существенное нарушение обратной совместимости.

Эта "обратная совместимость" существенно ломает систему при обновлении, см:

https://bugzilla.altlinux.org/show_bug.cgi?id=30867#c9
https://bugzilla.altlinux.org/show_bug.cgi?id=30867#c11

Если же очень хочется отстреливать себе ноги при обновлениях, можно выставить уже указанную опцию "APT::Get::UpgradeOnlyInstalled" в true в /etc/apt/apt.conf или /etc/apt/apt.conf.d/$something.conf, для всех остальных же по-умолчанию будет upgrade не ломающий систему.
Comment 24 Dmitry V. Levin 2019-06-06 11:29:00 MSK
Придумайте, пожалуйста, такое решение, чтобы у тех, кто раньше использовал "apt-get upgrade", после обновления не начал вдруг происходить "apt-get dist-upgrade".

В крайнем случае можно просто по умолчанию выключить "apt-get upgrade" с выводом сообщения о том, как сделать традиционный upgrade и dist-upgrade.
Comment 25 Anton Farygin 2019-06-06 11:41:49 MSK
Можно ещё по умолчанию выставить APT::Get::UpgradeOnlyInstalled в true (в apt-get).
А нужная нам настройка будет доступна разряботчикам дистрибутивов.

При этом если APT::Get::UpgradeOnlyInstalled стоит в true, то выводить предупреждение о том, что в нашей системе штатным средством обновления является apt-get dist-upgrade, а последствия обновления через apt-get upgrade не предсказуемы.

Но я знаю трёх пользователей apt-get upgrade и они все работают у нас. Можно персонально каждому рассказать про эту опцию.

Ещё вариант - выставить в false, но добавить предупреждение о том что в этой версии данная команда выполняет dist-upgrade и если вам это не нужно - используйте --only-installed
Comment 26 Aleksei Nikiforov 2019-06-06 11:49:23 MSK
(В ответ на комментарий №24)
> В крайнем случае можно просто по умолчанию выключить "apt-get upgrade" с
> выводом сообщения о том, как сделать традиционный upgrade и dist-upgrade.

Вместо вызова dist-upgrade вывести соответствующее сообщение, если не указана опция --only-installed или не выставлено "APT::Get::UpgradeOnlyInstalled" в true при вызове upgrade? Хорошо, могу сделать и так.
Comment 27 Dmitry V. Levin 2019-06-06 11:53:59 MSK
(In reply to comment #26)
> (В ответ на комментарий №24)
> > В крайнем случае можно просто по умолчанию выключить "apt-get upgrade" с
> > выводом сообщения о том, как сделать традиционный upgrade и dist-upgrade.
> 
> Вместо вызова dist-upgrade вывести соответствующее сообщение, если не указана
> опция --only-installed или не выставлено "APT::Get::UpgradeOnlyInstalled" в
> true при вызове upgrade? Хорошо, могу сделать и так.

Да, так лучше.
Comment 28 Aleksei Nikiforov 2019-06-06 14:29:11 MSK
Сделал новую версию задания #231585, но заменил --only-installed на --enable-upgrade и APT::Get::UpgradeOnlyInstalled на APT::Get::EnableUpgrade, поскольку прошлые названия к новому поведению плохо подходили.
Comment 29 Dmitry V. Levin 2019-06-06 17:01:00 MSK
(In reply to comment #28)
> Сделал новую версию задания #231585, но заменил --only-installed на
> --enable-upgrade и APT::Get::UpgradeOnlyInstalled на APT::Get::EnableUpgrade,
> поскольку прошлые названия к новому поведению плохо подходили.

Меня в целом устраивает.
Пожелания к текстам предупреждений:
s/in broken state/in a broken state/
s/despite this/despite of this/
s/you can use option '--enable-upgrade'/use '--enable-upgrade' option/
s/or set in apt configuration files.*/or enable APT::Get::EnableUpgrade configuration setting/
Comment 30 Aleksei Nikiforov 2019-06-06 17:44:05 MSK
(В ответ на комментарий №29)
> Меня в целом устраивает.
> Пожелания к текстам предупреждений:
> s/in broken state/in a broken state/
> s/despite this/despite of this/
> s/you can use option '--enable-upgrade'/use '--enable-upgrade' option/
> s/or set in apt configuration files.*/or enable APT::Get::EnableUpgrade
> configuration setting/

Спасибо. Поправил. Так действительно выглядит лучше.

Перезапустил задание #231585
Comment 31 Dmitry V. Levin 2019-06-06 21:47:19 MSK
(In reply to comment #30)
> (В ответ на комментарий №29)
> > Меня в целом устраивает.
> > Пожелания к текстам предупреждений:
> > s/in broken state/in a broken state/
> > s/despite this/despite of this/
> > s/you can use option '--enable-upgrade'/use '--enable-upgrade' option/
> > s/or set in apt configuration files.*/or enable APT::Get::EnableUpgrade
> > configuration setting/
> 
> Спасибо. Поправил. Так действительно выглядит лучше.
> 
> Перезапустил задание #231585

Меня устраивает.

2imz@: в задании #231427 есть apt с таким же релизом; какой из них будем коммитить первым?
Comment 32 Ivan Zakharyaschev 2019-06-06 22:00:32 MSK
(In reply to comment #31)
> (In reply to comment #30)
> > (В ответ на комментарий №29)
> > > Меня в целом устраивает.
> > > Пожелания к текстам предупреждений:
> > > s/in broken state/in a broken state/
> > > s/despite this/despite of this/
> > > s/you can use option '--enable-upgrade'/use '--enable-upgrade' option/
> > > s/or set in apt configuration files.*/or enable APT::Get::EnableUpgrade
> > > configuration setting/
> > 
> > Спасибо. Поправил. Так действительно выглядит лучше.
> > 
> > Перезапустил задание #231585
> 
> Меня устраивает.
> 
> 2imz@: в задании #231427 есть apt с таким же релизом; какой из них будем
> коммитить первым?

Я готов свой перенести.

Не знаю: нет ли у vseleznv@ про upgrade замечаний? Володя что-то похожее тоже хотел реализовать, у него могли остаться ещё мысли.
Comment 33 Vladimir D. Seleznev 2019-06-07 02:05:47 MSK
(In reply to comment #32)
> (In reply to comment #31)
> > (In reply to comment #30)
> > > (В ответ на комментарий №29)
> > > > Меня в целом устраивает.
> > > > Пожелания к текстам предупреждений:
> > > > s/in broken state/in a broken state/
> > > > s/despite this/despite of this/
> > > > s/you can use option '--enable-upgrade'/use '--enable-upgrade' option/
> > > > s/or set in apt configuration files.*/or enable APT::Get::EnableUpgrade
> > > > configuration setting/
> > > 
> > > Спасибо. Поправил. Так действительно выглядит лучше.
> > > 
> > > Перезапустил задание #231585
> > 
> > Меня устраивает.
> > 
> > 2imz@: в задании #231427 есть apt с таким же релизом; какой из них будем
> > коммитить первым?
> 
> Я готов свой перенести.
> 
> Не знаю: нет ли у vseleznv@ про upgrade замечаний? Володя что-то похожее тоже
> хотел реализовать, у него могли остаться ещё мысли.

У меня нет замечаний, моя реализация практически такая же, только эта удачнее в том, что наличествует опция --enable-upgrade. Я за пропустить.
Comment 34 Repository Robot 2019-06-07 02:36:27 MSK
apt-0.5.15lorg2-alt67 -> sisyphus:

Wed Jun 05 2019 Aleksei Nikiforov <darktemplar@altlinux> 0.5.15lorg2-alt67
- Print error and disable 'upgrade' by default.
  Using 'dist-upgrade' instead of 'upgrade' is advised.
  Allow enabling 'upgrade' via '--enable-upgrade' option or
  via 'APT::Get::EnableUpgrade' configuration setting (Closes: #30867).