[devel] Переход на libmysqlclient21 (MySQL8.0)

Anton Farygin rider на basealt.ru
Вт Фев 5 21:23:31 MSK 2019


05.02.2019 21:00, Dmitry V. Levin пишет:
> On Tue, Feb 05, 2019 at 08:55:14PM +0300, Anton Farygin wrote:
>> 05.02.2019 20:24, Dmitry V. Levin пишет:
>>> On Tue, Feb 05, 2019 at 06:50:50PM +0300, Nikolai Kostrigin wrote:
>>>> Уважаемые коллеги, здравствуйте!
>>>>
>>>> Для полноценного перехода на MySQL 8.0 в Сизифе необходимо пересобрать
>>>> ряд пакетов с libmysqlclient21.
>>> Уточните, пожалуйста, почему в Сизифе нужно переходить
>>> на libmysqlclient.so.21, а не на libmariadb.so.3?
>> А почему в сизифе нужно переходить на gcc8, а не, например, icc 19 ?
>>
>> Наверное, ответ очевиден - это две разные библиотеки.
> Не совсем очевидно, поскольку у них был общий предок.
> Если клиентам всё равно, с чем линковаться, то что им рекомендовать,
> -lmariadb или -lmysqlclient?

Ну выбор очевиден - если всё-таки тебе нужен mysqlclient, то выбирай 
его. mariadb это не чистая замена для mysqlclient.

Т.к. mariadb продолжает пытаться притворяться mysql, то разведены они 
совсем фигово. Но у меня были случаи, когда приложение не собиралось с 
mariadb, но при этом собиралось с mysqlclient:
https://bugzilla.altlinux.org/show_bug.cgi?id=35004 - тут есть некоторые 
подробности, если интересно.

Ещё можно посмотреть сюда: 
https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/ - тут 
есть некоторый список несовместимостей между этими базами - mariadb и mysql


> По той же причине не очевидно, достаточно ли хорошо они разведены?
> Если libmariadb и libmysqlclient прямо или косвенно окажутся загруженными
> в память одного приложения, не приведёт ли механизм elf symbol interposition
> к тому, что эти библиотеки помешают друг другу?
> ]]

Они разведены плохо (точнее никак), поэтому лучше оставить кого-то 
одного в devel части. Библиотеки мешают друг другу так же как и раньше 
мешал libmysqlclient19 вместе с libmysqlclient20 - мы не знаем об 
известных случаях падений приложений, загружающих сразу две версии 
libmysqlclient.

Что касается совместимости, то приложения, слинкованные с mysqlclient - 
пока нормально подключаются туда и туда, надеюсь это поведение так и 
останется.
Честно говоря, мне не очень хочется повторять историю с ffmpeg, когда мы 
долгое время жили с его форком (libav), при этом страдали все, кроме 
ментейнера ;)




Подробная информация о списке рассылки Devel