Проблема миграции с SMF2 на Discourse

Я следовал инструкциям и дошёл до этого момента, но не могу продвинуться дальше. Я даже создал нового пользователя на сервере MySQL с нативным паролем и попытался, но безрезультатно.

su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
Загрузка существующих групп...
Загрузка существующих пользователей...
Загрузка существующих категорий...
Загрузка существующих постов...
Загрузка существующих тем...
Traceback (most recent call last):
        7: from script/import_scripts/smf2.rb:701:in `<main>'
        6: from script/import_scripts/smf2.rb:28:in `run'
        5: from script/import_scripts/smf2.rb:28:in `new'
        4: from script/import_scripts/smf2.rb:62:in `initialize'
        3: from script/import_scripts/smf2.rb:274:in `create_db_connection'
        2: from script/import_scripts/smf2.rb:274:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': RSA Encryption not supported - caching_sha2_password plugin was built with GnuTLS support (Mysql2::Error)

Похоже, это проблема со скриптом, так как я могу установить клиент MySQL в контейнер и получить доступ к базе данных в контейнере MySQL через командную строку.

Хорошо. Для тех, кто наткнулся на это: мне пришлось немало потрудиться, чтобы заставить этот скрипт импорта работать.

Контейнер MySQL Docker — версия 8.

Это означает, что по какой-то причине библиотека mariadb, которую подтягивает шаблон MySQL, не работает.

Что я сделал иначе, чем в https://meta.discourse.org/t/smf2-to-discourse-the-ultimate-guide/90314:

Я не включал файл шаблона MySQL в конфигурационный файл контейнера импорта.

Я собрал контейнер импорта, зашёл в него с помощью ./launcher enter import.

Затем:

echo "gem 'mysql2'" >> Gemfile
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
dpkg -i mysql-apt-config_0.8.17-1_all.deb

Это вызывает интерактивный запрос, где можно выбрать настройки по умолчанию (MySQL 8 с инструментами).

Затем я установил обычную библиотеку MySQL 8 и продолжил сборку:

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmysqlclient-dev
su discourse -c 'bundle config unset deployment'
su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'

После этого всё остальное осталось прежним, и импорт теперь выполняется.

Разработчикам Discourse, возможно, стоит скорректировать скрипты импорта с учётом этого. По крайней мере, теперь это есть на форуме, чтобы другие могли увидеть решение, если столкнутся с той же проблемой, что и я.