Problema de migración de SMF2 a Discourse

He seguido las guías y he llegado hasta aquí, pero no logro avanzar más allá de este punto. Incluso he creado un nuevo usuario en el servidor MySQL con una contraseña nativa y lo he intentado, pero sin éxito.

su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
Cargando grupos existentes...
Cargando usuarios existentes...
Cargando categorías existentes...
Cargando publicaciones existentes...
Cargando temas existentes...
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': Cifrado RSA no soportado - el plugin caching_sha2_password se compiló con soporte GnuTLS (Mysql2::Error)

Parece ser un problema con el script, ya que puedo instalar el cliente de MySQL en el contenedor y acceder a la base de datos en el contenedor de MySQL mediante la línea de comandos.

OK. Así que para aquellos de ustedes que se encuentren con esto, tuve que hacer bastante trabajo para ajustar este script de importación y que funcionara.

El contenedor Docker de MySQL es de la versión 8.

Esto significa que, por alguna razón, la biblioteca de MariaDB que incluye la plantilla de MySQL no funciona.

Lo que hice de manera diferente a https://meta.discourse.org/t/smf2-to-discourse-the-ultimate-guide/90314:

No incluí el archivo de plantilla de MySQL en el archivo de configuración del contenedor Docker de importación.

Construí el contenedor de importación, entré en él con ./launcher enter import.

Luego:

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

Esto muestra un mensaje interactivo y puedes seleccionar los valores predeterminados (MySQL 8 con herramientas).

Luego instalé la biblioteca normal de MySQL 8 y continué la construcción:

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'

Una vez que todo esto se completó, el resto fue igual; la importación ahora se está ejecutando.

Los desarrolladores de Discourse podrían querer ajustar los scripts de importación para tener esto en cuenta; al menos ahora está en los foros para que otros lo vean si se atascan como yo.

3 Me gusta