Bug 35562

Summary: Не обновляет при наличии установленных старых библиотек с зависимостями на них в установленных пакетах
Product: Sisyphus Reporter: Sergey V Turchin <zerg>
Component: aptAssignee: Ivan Zakharyaschev <imz>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, aris, boyarsh, evg, glebfm, imz, iv, lav, ldv, placeholder, rider, viy, vseleznv
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
10-dist-upgrade.txt
none
20-remove-libavformat57.txt
none
30-dist-upgrade.txt none

Description Sergey V Turchin 2018-10-30 17:47:19 MSK
Если в системе остались старые пакеты(больше нет в репозитории), которые конфликтуют с новыми сборками, то обновление не происходит.
Comment 1 Sergey V Turchin 2018-10-30 17:48:24 MSK
Created attachment 7832 [details]
10-dist-upgrade.txt
Comment 2 Sergey V Turchin 2018-10-30 17:48:54 MSK
Created attachment 7833 [details]
20-remove-libavformat57.txt
Comment 3 Sergey V Turchin 2018-10-30 17:49:17 MSK
Created attachment 7834 [details]
30-dist-upgrade.txt
Comment 4 Sergey V Turchin 2018-10-31 11:19:04 MSK
Это наверняка хорошенько всплывёт при обновлении с p8 до p9.
Comment 5 Anton Farygin 2018-10-31 11:22:19 MSK
если в репозиторий положить те самые старые библиотеки, собранные в новом окружении - то apt'у в значительной степени полегчает.
Comment 6 Dmitry V. Levin 2018-10-31 11:25:27 MSK
А если поднять приоритет целевому репозиторию?
Comment 7 Sergey V Turchin 2018-10-31 11:31:13 MSK
А я всё мечтаю оторвать http://git.altlinux.org/gears/a/apt.git?p=apt.git;a=commit;h=e2184306b28908f208869b791d1bb0550c659674 ;-)
Comment 8 Anton Farygin 2018-10-31 11:32:49 MSK
Попробуй apt/preferences настроить как здесь описано:

https://bugzilla.altlinux.org/show_bug.cgi?id=35529
Comment 9 Sergey V Turchin 2018-10-31 14:56:19 MSK
(В ответ на комментарий №8)
> Попробуй apt/preferences
С Pin 1001 стало ещё хуже.
Comment 10 Sergey V Turchin 2018-10-31 14:58:31 MSK
Если без apt/preferences было как 10-dist-upgrade.txt, то с Pin 1100 стало так же, плюс предлагает даунгрейдить 4 пакета.
Comment 11 Anton Farygin 2018-10-31 15:06:58 MSK
Я похоже тоже нарвался на эту же проблему на своём ноутбуке на свежем Sisyphus:

apt/preferences не помогают

# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Подсчет обновлений... Starting
Starting 2
Investigating libavformat57
Package libavformat57 has broken dep on librtmp.so.0()(64bit)
  Considering librtmp 0 as a solution to libavformat57 4
  Re-Instated librtmp
  Added librtmp to the remove list
  Fixing libavformat57 via keep of librtmp
Investigating librtmp-debuginfo
Package librtmp-debuginfo has broken dep on .sisyphus.215767.100.1.1-librtmp-2.4-alt2
  Considering librtmp 0 as a solution to librtmp-debuginfo 0
  Holding Back librtmp-debuginfo rather than change .sisyphus.215767.100.1.1-librtmp-2.4-alt2
 Try to Re-Instate librtmp
Investigating gst-plugins-bad1.0
Package gst-plugins-bad1.0 has broken dep on librtmp.so.1()(64bit)
  Considering librtmp 0 as a solution to gst-plugins-bad1.0 8
  Holding Back gst-plugins-bad1.0 rather than change librtmp.so.1()(64bit)
Investigating gst-plugins-bad1.0-debuginfo
Package gst-plugins-bad1.0-debuginfo has broken dep on .sisyphus.215767.200.1.1-gst-plugins-bad1.0-1.14.4-alt2
  Considering gst-plugins-bad1.0 8 as a solution to gst-plugins-bad1.0-debuginfo 0
  Holding Back gst-plugins-bad1.0-debuginfo rather than change .sisyphus.215767.200.1.1-gst-plugins-bad1.0-1.14.4-alt2
 Try to Re-Instate librtmp-debuginfo
 Try to Re-Instate gst-plugins-bad1.0
 Try to Re-Instate gst-plugins-bad1.0-debuginfo
Done
Завершено
Следующие пакеты будут СОХРАНЕНЫ:
  gst-plugins-bad1.0 gst-plugins-bad1.0-debuginfo librtmp librtmp-debuginfo
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 4 не будет обновлено.
Comment 12 Anton Farygin 2018-10-31 15:07:42 MSK
Помогает вот это:
# apt-get install librtmp
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие дополнительные пакеты будут установлены:
  gst-plugins-bad1.0 gst-plugins-bad1.0-debuginfo librtmp-debuginfo
Следующие пакеты будут ОБНОВЛЕНЫ:
  gst-plugins-bad1.0 gst-plugins-bad1.0-debuginfo librtmp librtmp-debuginfo
Следующие пакеты будут УДАЛЕНЫ:
  libavdevice57 libavfilter6 libavformat57 libavformat57-debuginfo
4 будет обновлено, 0 новых установлено, 4 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B/9862kB архивов.
После распаковки будет освобождено 26,5MB дискового пространства.
Comment 13 Anton Farygin 2018-10-31 15:09:34 MSK
Могу попробовать apt без патча от Глеба, если его кто-то соберёт потестировать.
Comment 14 Dmitry V. Levin 2018-10-31 15:11:26 MSK
(In reply to comment #7)
> А я всё мечтаю оторвать
> http://git.altlinux.org/gears/a/apt.git?p=apt.git;a=commit;h=e2184306b28908f208869b791d1bb0550c659674
> ;-)

Ты думаешь, этот коммит там просто так, от нечего делать появился, что ли?
Comment 15 Sergey V Turchin 2018-10-31 15:28:23 MSK
(В ответ на комментарий №14)
> Ты думаешь, этот коммит там просто так, от нечего делать появился, что ли?
Ты думаешь, я методом научного тыка выбрал этот коммит?
К сожалению кроме решения некоторых проблем он порождает новые.

P.S.
Вместо внесения костылей(не в обиду Глебу) для решения этой проблемы достаточно одного распоряжения _одному_ сотруднику. Всё.
Comment 16 Anton Farygin 2018-10-31 15:30:47 MSK
Серёг, не только Аристарх не следует Shared Libs Policy.
Comment 17 Anton Farygin 2018-10-31 15:31:50 MSK
Конечно, имя Аристарх вымышленное и я его указал случайно.
Comment 18 Sergey V Turchin 2018-10-31 15:46:22 MSK
(В ответ на комментарий №16)
> не следует Shared Libs Policy.
Да. ldv тоже был подписан и на Шрековские(имя вымышленное) недавние пляски с пакетами.

Возможно, надежда на этот коммит, но он не решает проблему, а лишь изменяет ее.
Comment 19 Gleb F-Malinovskiy 2018-10-31 15:47:45 MSK
(In reply to comment #7)
> А я всё мечтаю оторвать
> http://git.altlinux.org/gears/a/apt.git?p=apt.git;a=commit;h=e2184306b28908f208869b791d1bb0550c659674
> ;-)
(In reply to comment #15)
> (В ответ на комментарий №14)
> > Ты думаешь, этот коммит там просто так, от нечего делать появился, что ли?
> Ты думаешь, я методом научного тыка выбрал этот коммит?
> К сожалению кроме решения некоторых проблем он порождает новые.

Какие?  Я много лет слышу от тебя предположения о том, что этот коммит что-то
ломает, но не припомню доказательств.
Я ничего не имею против его откатывания, но только если он создаёт проблем
больше, чем решает.
Comment 20 Anton Farygin 2018-10-31 15:48:58 MSK
Глеб, ну вот эта проблема явно может быть создана твоим коммитом. Нет ?
Comment 21 Yuri N. Sedunov 2018-10-31 15:49:35 MSK
(В ответ на комментарий №15)
> P.S.
> Вместо внесения костылей(не в обиду Глебу) для решения этой проблемы достаточно
> одного распоряжения _одному_ сотруднику. Всё.

Серега, ты  так пристально следишь за этим не названным сотрудником, что не заметил, что  в приведенном выше примере сонейм сменился у librtmp.
Comment 22 Anton Farygin 2018-10-31 15:50:21 MSK
(В ответ на комментарий №20)
> Глеб, ну вот эта проблема явно может быть создана твоим коммитом. Нет ?

Я про комментарий №11
Comment 23 Anton Farygin 2018-10-31 15:53:12 MSK
Кстати, Юра, спасибо - может быть следование librtmp shared libs policy и помогло бы решению этой конкретно проблемы.
Comment 24 Sergey V Turchin 2018-10-31 15:56:12 MSK
(В ответ на комментарий №16)
> не следует Shared Libs Policy.
Не-не-не! Тут не "неследование Shared Libs Policy", а "намеренное введение apt в ступор".

С xorg там в этом плане всё нормально было, кстати.
Comment 25 Gleb F-Malinovskiy 2018-10-31 15:58:31 MSK
(In reply to comment #20)
> Глеб, ну вот эта проблема явно может быть создана твоим коммитом. Нет ?

Я считаю, что не может.
Comment 26 Anton Farygin 2018-10-31 16:01:29 MSK
ну это мо(В ответ на комментарий №25)
> (In reply to comment #20)
> > Глеб, ну вот эта проблема явно может быть создана твоим коммитом. Нет ?
> 
> Я считаю, что не может.

ну это можно легко проверить, достаточно кому-то заинтересованному собрать apt без этого патча в task, я его установлю и скажу что получилось. Систему не обновляю, готов помочь чем смогу.

Но наверное эту ситуацию можно воспроизвести на стендах, если обновить дистрибутив с gst-plugins-bad0 до не очень свежего Sisyphus.
Comment 27 Sergey V Turchin 2018-10-31 16:05:57 MSK
(В ответ на комментарий №21)
> Серега, ты  так пристально следишь за этим не названным сотрудником, что не
> заметил, что  в приведенном выше примере сонейм сменился у librtmp.
Я тебе больше скажу. Тот неназванный сотрудник фигурирует в _каждом_ dist-upgrade благодаря e2184306b28908f208869b791d1bb0550c659674. ;-)
Comment 28 Sergey V Turchin 2018-10-31 16:07:38 MSK
(В ответ на комментарий №25)
> > Глеб, ну вот эта проблема явно может быть создана твоим коммитом. Нет ?
> Я считаю, что не может.
Там может быть другое. Возможно, более раннее.
apt с какого-то момента перестал стремиться произвести обновление. Это я уже не смогу найти.
Comment 29 Sergey V Turchin 2018-10-31 16:18:17 MSK
(В ответ на комментарий №20)
> Глеб, ну вот эта проблема явно может быть создана твоим коммитом. Нет ?
Я проверил. e2184306b28908f208869b791d1bb0550c659674 на эту ситуацию не влияет.
Comment 30 Anton Farygin 2018-11-06 08:09:10 MSK
По состоянию на 6.11 изменений в лучшую сторону нет:
# apt-get dist-upgrade      
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Подсчет обновлений... Завершено
Следующие пакеты будут ОБНОВЛЕНЫ:
  ffmpeg ffplay ffprobe firmware-linux jq kernel-doc-un kernel-headers-un-def libavcodec58 libavcodec58-debuginfo libavdevice58 libavfilter7 libavformat58
  libavformat58-debuginfo libavresample4 libavutil56 libavutil56-debuginfo libgc libgit2 libgit2-debuginfo libjq libpostproc55 libswresample3
  libswresample3-debuginfo libswscale5 libswscale5-debuginfo libwacom libwacom-data libwacom-debuginfo libwine p7zip pciids python-module-pycparser
  python-sphinx-objects.inv python3-module-pycparser
Следующие пакеты будут СОХРАНЕНЫ:
  gst-plugins-bad1.0 gst-plugins-bad1.0-debuginfo librtmp librtmp-debuginfo
34 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 4 не будет обновлено.
Необходимо получить 0B/159MB архивов.
После распаковки потребуется дополнительно 20,4MB дискового пространства.
Продолжить? [Y/n

Кто-то собирается это исправлять ?
Comment 31 Anton Farygin 2018-12-18 07:49:30 MSK
На 18.12:

# apt-get -o Debug::pkgProblemResolver="true" dist-upgrade 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Подсчет обновлений... Starting
Starting 2
Investigating libavformat57
Package libavformat57 has broken dep on librtmp.so.0()(64bit)
  Considering librtmp 0 as a solution to libavformat57 2
  Re-Instated librtmp
  Added librtmp to the remove list
  Fixing libavformat57 via keep of librtmp
Investigating librtmp-debuginfo
Package librtmp-debuginfo has broken dep on .sisyphus.215767.100.1.1-librtmp-2.4-alt2
  Considering librtmp 0 as a solution to librtmp-debuginfo 0
  Holding Back librtmp-debuginfo rather than change .sisyphus.215767.100.1.1-librtmp-2.4-alt2
 Try to Re-Instate librtmp
Investigating gst-plugins-bad1.0
Package gst-plugins-bad1.0 has broken dep on librtmp.so.1()(64bit)
  Considering librtmp 0 as a solution to gst-plugins-bad1.0 8
  Holding Back gst-plugins-bad1.0 rather than change librtmp.so.1()(64bit)
Investigating gst-plugins-bad1.0-debuginfo
Package gst-plugins-bad1.0-debuginfo has broken dep on .sisyphus.215767.200.1.1-gst-plugins-bad1.0-1.14.4-alt2
  Considering gst-plugins-bad1.0 8 as a solution to gst-plugins-bad1.0-debuginfo 0
  Holding Back gst-plugins-bad1.0-debuginfo rather than change .sisyphus.215767.200.1.1-gst-plugins-bad1.0-1.14.4-alt2
 Try to Re-Instate librtmp-debuginfo
 Try to Re-Instate gst-plugins-bad1.0
 Try to Re-Instate gst-plugins-bad1.0-debuginfo
Done
Завершено
Следующие пакеты будут СОХРАНЕНЫ:
  gst-plugins-bad1.0 gst-plugins-bad1.0-debuginfo librtmp librtmp-debuginfo
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 4 не будет обновлено.
Comment 32 Anton Farygin 2018-12-18 07:59:44 MSK
Не обновляет при наличии установленных старых библиотек с зависимостями на них в установленных пакетах. При чём apt не учитывает, что в новых версиях  этих пакетов старая библиотека уже не нужна.

Вот librtmp
Provides: 
2.4-alt2 - librtmp .sisyphus.215767.100.1.1-librtmp-2.4-alt2 librtmp.so.1()(64bit) 
2.4-alt1.1 - librtmp librtmp.so.0()(64bit)

Вот новый gst-plugins-bad1.0:
# rpm -qpR gst-plugins-bad1.0-1.14.4-alt2.x86_64.rpm |grep librtmp
librtmp.so.1()(64bit) >= set:kfdMMZLCM0GdXfYc6r7qfP2L5ScBKYxnrWGOdBng

# rpm -qR gst-plugins-bad|grep librtmp
пакет gst-plugins-bad не установлен
[root@riderbook ~]# rpm -qR gst-plugins-bad1.0|grep librtmp
librtmp.so.0()(64bit) >= set:kfdMMZLCM0GdXfYc6r7qfP2L5ScBKYxnrWGOdBng

А держат его:
# rpm -e librtmp
ошибка: Неудовлетворенные зависимости:
       librtmp.so.0()(64bit) >= set:kgdMUZDzCStc1WZDUPoItoXpmUpxdjFVtj нужен для (установлен) libavformat57-2:3.3.6-alt4.x86_64
        librtmp.so.0()(64bit) >= set:kfdMMZLCM0GdXfYc6r7qfP2L5ScBKYxnrWGOdBng нужен для (установлен) gst-plugins-bad1.0-1.14.4-alt1.x86_64
        librtmp = 2.4-alt1.1 нужен для (установлен) librtmp-debuginfo-2.4-alt1.1.x86_64

apt каким-то образом должен догадаться что нужно снести libavformat57 и тогда всё будет обновляться по идее.

Либо в репозитории должен быть librtmp.so.0
Comment 33 Sergey V Turchin 2018-12-18 10:48:21 MSK
(В ответ на комментарий №32)
> Либо в репозитории должен быть librtmp.so.0
На это завязываться точно неправильно.

> apt каким-то образом должен догадаться что нужно снести libavformat57 и тогда
> всё будет обновляться по идее.
Он вообще с какого-то времени(давно) перестал стремиться делать именно это. Т.е. перестал стремиться обновить с выносом пакетов.

Возможно, есть смысл снижать вес пакета, если его нет в репозитории.
Comment 34 Anton Farygin 2018-12-18 11:04:40 MSK
Данную ошибку я попробую исправить обновлением (выкладыванием в репозиторий) libavformat57, собрав его без librtmp.

Но вообще, конечно, снижение веса у пакетов, отсутствующих в репозитории должно облегчить обновление в данном конкретном случае.
Вероятно, такое изменение весов может привести к каким-то другим проблемам.
Comment 35 Sergey V Turchin 2018-12-18 11:08:56 MSK
(В ответ на комментарий №34)
> Вероятно, такое изменение весов может привести к каким-то другим проблемам.
К выносу сторонних и самосборных пакетов, если какой-то конфликт возник. Но, может, это и хорошо.
Comment 36 Vitaly Lipatov 2020-10-30 20:18:46 MSK
> apt-get dist-upgrade -V
...
Построение дерева зависимостей...
Следующие пакеты будут ОБНОВЛЕНЫ:
   phpMyAdmin (p9+231933.100.3.2@1560463901 => p9+260652.100.1.1@1604010795)
Следующие пакеты будут УДАЛЕНЫ:
   phpMyAdmin-apache2-php7 (4.8.5-alt2:p9+231933.100.3.2@1560463901)
Следующие НОВЫЕ пакеты будут установлены:
   libzip5 (p9+257224.100.3.1@1599247578)
   php7-mysqlnd (p9+259362.100.4.1@1602277606)
   php7-zip (p9+259362.4000.4.1@1602279187)
1 будет обновлено, 3 новых установлено, 1 пакетов будет удалено и 0 не будет обновлено.
...
# apt-get install phpMyAdmin-apache2-php7
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие дополнительные пакеты будут установлены:
  php7-mysqlnd-mysqli
Следующие пакеты будут УДАЛЕНЫ:
  php7-mysqli
Следующие НОВЫЕ пакеты будут установлены:
  php7-mysqlnd-mysqli phpMyAdmin-apache2-php7
Comment 37 Anton Farygin 2020-10-31 10:32:02 MSK
с php-mysqlnd-mysqli не очень удачный пример, т.к. php-mysqli есть в репозитории и зависимости на него в системе будут отсутствовать после транзакции.
Comment 38 Vitaly Lipatov 2020-10-31 11:08:21 MSK
(Ответ для Anton Farygin на комментарий #37)
> с php-mysqlnd-mysqli не очень удачный пример, т.к. php-mysqli есть в
> репозитории и зависимости на него в системе будут отсутствовать после
> транзакции.
Будут отсутствовать после. Мне показалось, что корень проблемы тот же. Завести новую багу про смену конфликтующих библиотек при обновлении?
Comment 39 Anton Farygin 2020-10-31 12:41:50 MSK
(Ответ для Vitaly Lipatov на комментарий #38)
> (Ответ для Anton Farygin на комментарий #37)
> > с php-mysqlnd-mysqli не очень удачный пример, т.к. php-mysqli есть в
> > репозитории и зависимости на него в системе будут отсутствовать после
> > транзакции.
> Будут отсутствовать после. Мне показалось, что корень проблемы тот же.
> Завести новую багу про смену конфликтующих библиотек при обновлении?

Нет, возможно это исправится после исправления этой ошибки.
Comment 40 Vladimir D. Seleznev 2020-10-31 17:37:25 MSK
Я бы не хотел, чтобы отсутствующие пакеты в репозитории удалялись при обновлении в случае конфликта. Должен быть способ это предотвратить.
Comment 41 Anton Farygin 2020-11-01 09:40:18 MSK
(Ответ для Vladimir D. Seleznev на комментарий #40)
> Я бы не хотел, чтобы отсутствующие пакеты в репозитории удалялись при
> обновлении в случае конфликта. Должен быть способ это предотвратить.

я вижу только один вариант - вынести в настройку возможность управлять этим поведением.