/usr/sbin/mariadbd: /usr/local/lib/libstdc++.so.6: версия `GLIBCXX_3.4.30′ не найдена

Вопрос или проблема

Запись

Я изучил другие сообщения об этой ошибке, но они мне не помогли. Поэтому я собираюсь описать свою проблему здесь.

Запуск MariaDB

Согласно этому руководству по установке WordPress на сервере Ubuntu 22.04.5 LTS я установил MariaDB и запустил его:

sudo systemctl restart mariadb.service

Выдает ошибку сбоев. Затем sudo journalctl -xeu mariadb.service показывает:

/usr/sbin/mariadbd: /usr/local/lib/libstdc++.so.6: версия `GLIBCXX_3.4.30′ не найдена

Но GLIBCXX_3.4.30 доступен

Вдохновившись этой записью:

https://askubuntu.com/a/1458100/507217

Я запустил strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX и получил:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_DEBUG_MESSAGE_LENGTH

Так что GLIBCXX_3.4.30 на самом деле доступен.

Я запустил ls -la /usr/lib/x86_64-linux-gnu/libstdc++.so.6 и получил:

/usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.30

Вопрос

Все выглядит нормально. Так в чем проблема?

Я ожидал, что установка и запуск MariaDB будут намного легче 🙁

Расследование

Получив некоторые подсказки от AI-чат-ботов, я заметил, что MariaDL загружает /usr/local/lib/libstdc++.so.6, поэтому я сделал:

ls -lh /usr/local/lib/libstdc++.so.6

И я получил эту символическую ссылку на более старую версию:

/usr/local/lib/libstdc++.so.6 -> libstdc++.so.6.0.29

Решение

Мне пришлось форсировать обновление символической ссылки на более новую версию:

sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/lib/libstdc++.so.6

Я не уверен, приведет ли это форсированное обновление к сбоям в чем-то еще на сервере 🙁

Ответ или решение

Проблема с запуском MariaDB: версия GLIBCXX_3.4.30 не найдена

Введение

Вы столкнулись с проблемой при запуске MariaDB на сервере с Ubuntu 22.04.5 LTS. Ошибка, указывающая на то, что версия GLIBCXX_3.4.30 не найдена в библиотеке libstdc++.so.6, приводит к необходимости глубже изучить взаимодействие между установленными библиотеками. Данная статья поможет вам понять проблему и предложить подходящее решение.

Что происходит?

При попытке перезапустить службу MariaDB с помощью команды:

sudo systemctl restart mariadb.service

вы получаете сообщение об ошибке, указывающее на отсутствие нужной версии библиотеки:

/usr/sbin/mariadbd: /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found

Это указывает на то, что программа mariadbd пытается загрузить библиотеку libstdc++.so.6 из директории /usr/local/lib, и именно эта версия не содержит нужной для работы MariaDB версии GLIBCXX_3.4.30.

Почему возникает ошибка?

  1. Конфликт библиотек: У вас установлено две различные версии libstdc++.so.6 – одна в системной директории (/usr/lib/x86_64-linux-gnu/), которая соответствует необходимым требованиям, и другая в локальной директории (/usr/local/lib/), которая ссылается на более старую версию (libstdc++.so.6.0.29).

  2. Приоритет загрузки: При запуске MariaDB система сначала ищет библиотеку в директорий /usr/local/lib, которая имеет приоритет. Если там находится устаревшая версия, это и становится причиной ошибки.

Решение проблемы

Вы правильно заметили, что необходимо обновить символическую ссылку на библиотеку в локальной директории. Ваше решение с использованием команды:

sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/lib/libstdc++.so.6

позволит указать правильную версию библиотеки, что решит проблему с GLIBCXX_3.4.30.

Но стоит ли это делать?

Несмотря на то, что ваш подход с обновлением символической ссылки является временным решением, стоит учесть несколько моментов:

  • Совместимость: Проверяйте, что другие приложения, используемые на сервере, также совместимы с новой версией libstdc++. Некоторые приложения могут зависеть от старых версий библиотек, и изменение символической ссылки может привести к их нестабильной работе.

  • Проверка зависимостей: Регулярно проверяйте установленные библиотеки и их зависимости. Часто использование графических интерфейсов для управления библиотеками может помочь избежать подобных проблем в будущем.

  • Бэкапы: Перед внесением изменений в системные файлы, всегда полезно создавать резервные копии. Это поможет в случае, если что-то пойдет не так.

Заключение

Проблема, с которой вы столкнулись, связана с конфликтом между версиями библиотек. Обновление символической ссылки на более новую версию libstdc++ является адекватным решением на текущий момент. Однако стоит учитывать возможность возникновения конфликтов с другими программами. Регулярная проверка совместимости и зависимостей приложений поможет избежать таких ситуаций в дальнейшем.

Оцените материал
Добавить комментарий

Капча загружается...