Bug 29415

Summary: Конфликт с MySQL-server
Product: Sisyphus Reporter: serpiph <serpiph>
Component: mariadb-commonAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, anubix, mike, shaba, zerg
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 29414    

Description serpiph 2013-10-01 11:30:03 MSK
Пакет mariadb-common заменяет MySQL-server, но конфликтует по файлам с MySQL-server и не обсолетит его. В результате dist-upgrade не проходит.
Comment 1 Zerg 2013-10-01 13:02:34 MSK
Не!
Вместо строки для %package common
Obsoletes: %name-server < 5.5.33a
надо строку в %package server
Requires: %name-common = %version-%release
, т.к. несколько data-файлов по смыслу не должны заменять целый сервер целиком.
Comment 2 Zerg 2013-10-01 13:06:50 MSK
Т.е. текущая реализация при dist-upgrade предполагает автоудаление пакета mariadb-server в некоторых ситуациях и неизвестно, как просчитает apt и не удалит ли все подряд по цепочке или не захолдит ли всю цепочку. Мой вариант точно правильный для текущего spec-файла.
Comment 3 Zerg 2013-10-01 13:13:26 MSK
(В ответ на комментарий №2)
> предполагает автоудаление пакета mariadb-server
и заодно MySQL-server, т.к. конфликтует с ним. Т.е., если он не установлен, то его установка будет блокирована конфликтом, несмотря на какие-либо зависимости других пакетов.

Эту ситуацию на текущем сизифе вряд ли просто получится воспроизвести, но дерево зависимостей получается кривое и какому-то пользователю рано или поздно аукнется.

Дополнительные проблемы при dist-upgrade с бранча на бранч -- самое первое из реальной жизни.
Comment 4 Slava Dubrovskiy 2013-10-01 13:22:24 MSK
(In reply to comment #1)
> Не!
> Вместо строки для %package common
> Obsoletes: %name-server < 5.5.33a
> надо строку в %package server
> Requires: %name-common = %version-%release
> , т.к. несколько data-файлов по смыслу не должны заменять целый сервер целиком.
Так так и сделано. только через клиента.
%package server
Requires: lib%name = %version-%release %name-client = %version-%release

А клиент уже 
%package client
Requires: lib%name = %version-%release %name-common = %version-%release
Comment 5 Repository Robot 2013-10-01 13:59:47 MSK
mariadb-5.5.33a-alt2 -> sisyphus:

* Tue Oct 01 2013 Slava Dubrovskiy <dubrsl@altlinux> 5.5.33a-alt2
- Fix (ALT#29415)
Comment 6 Sergey V Turchin 2013-10-01 14:06:27 MSK
(В ответ на комментарий №4)
> Так так и сделано. только через клиента.
Через какого клиента это сделано для пакета libmariadbembedded?
Он зависит от пакета с конфликтующими файлами.

Я же указал ясно -- обсолет кривой. Не надо такое делать.
Comment 7 Slava Dubrovskiy 2013-10-01 14:49:54 MSK
(In reply to comment #6)
> (В ответ на комментарий №4)
> > Так так и сделано. только через клиента.
> Через какого клиента это сделано для пакета libmariadbembedded?

Для libmariadbembedded есть прямая зависимость:
%package -n libmariadbembedded
Requires: %name-common = %version-%release

> Он зависит от пакета с конфликтующими файлами.
> 
> Я же указал ясно -- обсолет кривой. Не надо такое делать.
я не понимаю о чем Вы говорите Сергей :(
Можете привести лог обновления mariadb-5.5.33a-alt2 где воспроизведена ошибка?
Comment 8 serpiph 2013-10-01 15:01:03 MSK
# apt-get dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following packages will be upgraded
  libmariadbembedded libmysqlclient-devel libmysqlclient18
The following NEW packages will be installed:
  mariadb-common
3 upgraded, 1 newly installed, 0 removed and 0 not upgraded.
Need to get 0B/4749kB of archives.
After unpacking 2561kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Committing changes...
Preparing...                                                                                           ################################################################################################### [100%]
file /usr/share/mysql/charsets/Index.xml from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/czech/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/danish/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/dutch/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/english/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/errmsg-utf8.txt from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/estonian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/fill_help_tables.sql from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/french/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/german/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/greek/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/hungarian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/italian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/japanese/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/korean/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/my-huge.cnf from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/my-innodb-heavy-4G.cnf from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/my-large.cnf from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/my-medium.cnf from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/my-small.cnf from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/mysql_system_tables.sql from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/mysql_system_tables_data.sql from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1
file /usr/share/mysql/norwegian-ny/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                               
file /usr/share/mysql/norwegian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                  
file /usr/share/mysql/polish/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                     
file /usr/share/mysql/portuguese/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                 
file /usr/share/mysql/romanian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                   
file /usr/share/mysql/russian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                    
file /usr/share/mysql/serbian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                    
file /usr/share/mysql/slovak/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                     
file /usr/share/mysql/spanish/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                    
file /usr/share/mysql/swedish/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                    
file /usr/share/mysql/ukrainian/errmsg.sys from install of mariadb-common-5.5.33a-alt1 conflicts with file from package MySQL-server-5.5.32-alt1                                                                  
E: Error while running transaction                                                                                                                                                                                
#
Comment 9 serpiph 2013-10-01 15:03:41 MSK
Прошу прощения, это обновление от -alt1. :(
Comment 10 Michael Shigorin 2013-10-01 16:10:43 MSK
(In reply to comment #0)
> Пакет mariadb-common заменяет MySQL-server, но конфликтует по файлам с
> MySQL-server и не обсолетит его. В результате dist-upgrade не проходит.
Вот не надо таких "подсказок".

Конфликт между содержащими идентичные пути файлы субпакетами должен быть, а Obsoletes: там ни к чему, по крайней мере на данный момент.  И если когда будет, то между серверными субпакетами, а не mariadb-common и MySQL-server.

Сейчас надо оставить Conflicts: и убрать Obsoletes:.
Comment 11 Slava Dubrovskiy 2013-10-01 16:24:42 MSK
(In reply to comment #10)
> (In reply to comment #0)
> > Пакет mariadb-common заменяет MySQL-server, но конфликтует по файлам с
> > MySQL-server и не обсолетит его. В результате dist-upgrade не проходит.
> Вот не надо таких "подсказок".
> 
> Конфликт между содержащими идентичные пути файлы субпакетами должен быть, а
> Obsoletes: там ни к чему, по крайней мере на данный момент.  И если когда
> будет, то между серверными субпакетами, а не mariadb-common и MySQL-server.
> 
> Сейчас надо оставить Conflicts: и убрать Obsoletes:.

Сейчас в 5.5.33a-alt2 вот так:
%package common
Conflicts: MySQL-server
Obsoletes: %name-server < 5.5.33a

мне кажется этого вполне достаточно
Comment 12 Sergey V Turchin 2013-10-01 17:21:44 MSK
(В ответ на комментарий №10)
> Сейчас надо оставить Conflicts: и убрать Obsoletes:.
+1
Comment 13 Sergey V Turchin 2013-10-01 17:29:23 MSK
И добавьте, пожалуйста, в %package server
Requires: %name-common = %version-%release
, как я написал в коментарии #1 .
Я не нашел _никаких_ зависимостей на common у server.
Comment 14 Zerg 2013-10-01 20:35:44 MSK
(В ответ на комментарий №13)
> Я не нашел _никаких_ зависимостей на common у server.
Проглядел. Есть зависимость.
Значит, только обсолет убрать.
Comment 15 Zerg 2013-10-01 20:37:29 MSK
*** Bug 29414 has been marked as a duplicate of this bug. ***
Comment 16 Zerg 2013-10-01 20:39:35 MSK
(В ответ на комментарий №14)
> Проглядел. Есть зависимость.
Хотя зачем через Копенгаген, когда она прямая.
Comment 17 Zerg 2013-10-05 20:11:18 MSK
Я пока воздержусь от обновления kde4-amarok в p7
Comment 18 Sergey V Turchin 2013-10-08 16:40:45 MSK
Никто не против сделать изменения из коментария #1?
А то я могу.
Comment 19 Slava Dubrovskiy 2013-10-08 19:54:58 MSK
(В ответ на комментарий №18)
> Никто не против сделать изменения из коментария #1?
> А то я могу.

И что это изменит?
Сейчас все работает:
[root@alt-sisyphus-1 ~]# rpm -qa | grep -i 'mysql\|maria'
MySQL-server-5.5.32-alt1
libmysqlclient18-5.5.33a-alt2
MySQL-client-5.5.32-alt1
[root@alt-sisyphus-1 ~]# apt-get install mariadb-server
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие дополнительные пакеты будут установлены:
  libjemalloc mariadb-client mariadb-common perl-CGI perl-Term-ReadKey
Следующие пакеты будут УДАЛЕНЫ:
  MySQL-client MySQL-server
Следующие НОВЫЕ пакеты будут установлены:
  libjemalloc mariadb-client mariadb-common mariadb-server perl-CGI perl-Term-ReadKey
0 будет обновлено, 6 новых установлено, 2 пакетов будет удалено и 58 не будет обновлено.
Необходимо получить 6996kB архивов.
После распаковки потребуется дополнительно 16,9MB дискового пространства.
Продолжить? [Y/n] 
Получено: 1 http://ftp.altlinux.org x86_64/classic libjemalloc 3.4.0-alt1 [156kB]
Получено: 2 http://ftp.altlinux.org noarch/classic mariadb-common 5.5.33a-alt2 [317kB]
Получено: 3 http://ftp.altlinux.org noarch/classic perl-CGI 3.63-alt1 [133kB]
Получено: 4 http://ftp.altlinux.org x86_64/classic perl-Term-ReadKey 2.30-alt4 [18,7kB]
Получено: 5 http://ftp.altlinux.org x86_64/classic mariadb-client 5.5.33a-alt2 [1133kB]
Получено: 6 http://ftp.altlinux.org x86_64/classic mariadb-server 5.5.33a-alt2 [5239kB]
Получено 6996kB за 1s (4625kB/s).        
Совершаем изменения...
Preparing...                 ########################################################################## [100%]
1: perl-Term-ReadKey         ########################################################################## [ 16%]
2: perl-CGI                  ########################################################################## [ 33%]
3: mariadb-common            ########################################################################## [ 50%]
4: mariadb-client            ########################################################################## [ 66%]
5: libjemalloc               ########################################################################## [ 83%]
6: mariadb-server            ########################################################################## [100%]
warning: /var/lib/mysql/my.cnf saved as /var/lib/mysql/my.cnf.rpmsave
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.
Comment 20 Zerg 2013-10-08 21:21:13 MSK
(В ответ на комментарий №19)
> И что это изменит?
Некоторые ошибки исчезнут.
Некоторые ошибки не появятся.

> Сейчас все работает:
А надо, чтоб и потом работало и в spec-е не было лишних заморочек, ведущих к ошибкам.
Comment 21 Zerg 2013-10-08 21:24:20 MSK
Если хотите попробовать, соберите новую mariadb и kde4-amarok тестовым заданием в p6, p7 и проверьте в нескольких самых различных вариантах установок, будет ли эта ошибка проявляться или нет.

P.S.
Я сам-то попробую, только после исправления этого бага.
Comment 22 Zerg 2013-10-16 15:15:34 MSK
У меня появилась необходимость обновить kde4-amarok в p7.
Comment 23 Slava Dubrovskiy 2013-10-16 15:23:04 MSK
(In reply to comment #22)
> У меня появилась необходимость обновить kde4-amarok в p7.
Сергей, делайте все что считаете нужным. Т.к. не видя "Некоторые" ошибки я не могу представить необходимые исправления.
Comment 24 Zerg 2013-10-16 15:25:46 MSK
Уже ушло на сборку.
Меня интересует, что лучше?
Отправить 5.5.33a в p7 или поправить тот mariadb, что в p7 сейчас?
Comment 25 Zerg 2013-10-16 15:31:58 MSK
Если без разницы, то меня с точки зрения обновлябельности интересует лишь более высокая версия, чем MySQL, которая и так выше.
Comment 26 Repository Robot 2013-10-16 16:38:01 MSK
mariadb-5.5.33a-alt3 -> sisyphus:

* Wed Oct 16 2013 Sergey V Turchin <zerg at altlinux> 5.5.33a-alt3
- fix depends (ALT#29415)
Comment 27 Zerg 2013-10-16 17:52:14 MSK
В RHEL6 5.5.33a http://pkgs.fedoraproject.org/cgit/mariadb.git/log/?h=el6
Если никто не подскажет каких-нибудь специфичных нам граблей, то я соберу 5.5.33a в p7.
Comment 28 Zerg 2013-10-17 12:24:19 MSK
(В ответ на комментарий №23)
> не видя "Некоторые" ошибки я не могу представить необходимые исправления.
Просто, любая неточность в зависимостях для меня критична, т.к. и сейчас пришлось поизголяться с akonadi, еще и поставив прямую зависимость на mariadb, чтобы он не становился неработоспособным после dist-upgrade.