Intentando actualizar Discourse mediante el procedimiento manual
git pull
./launcher rebuild app
...
./discourse-doctor muestra un error
I, [2023-06-16T11:39:43.530890 #1] INFO -- : > cd /var/www/discourse & su discourse -c 'yarn install --frozen-lockfile & yarn cache clean'
error An unexpected error occurred: "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz: ESOCKETTIMEDOUT".
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'yarn install --frozen-lockfile & yarn cache clean' failed with return #<Process::Status: pid 281 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'yarn install --frozen-lockfile & yarn cache clean'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
f485460571ab9e30e0d6917b05c9a8fe1772df13d8cae9fe67108961fae71039
==================== END REBUILD LOG ====================
El mismo problema cuando intenté ejecutar ./launcher rebuild app
Intenté descargar date-fns-2.29.3.tgz en un host Linux y funciona.
wget https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz
Connecting to registry.yarnpkg.com (104.16.26.35:443)
saving to 'date-fns-2.29.3.tgz'
date-fns-2.29.3.tgz 100% |*************************************************************************************************************| 712k 0:00:00 ETA
'date-fns-2.29.3.tgz' saved
Sin embargo, mientras esperaba que se completara el Paso 9 (después de ejecutar ./discourse-setup) y que todo se compilara, fallaba con un error ESOCKETTIMEDOUT relacionado con yarn. El último mensaje que intenta ejecutar es [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production \u0026\u0026 yarn cache clean'.
La Solución
Necesitas instalar un editor; prefiero nano, así que apt-get install nano hace el truco. Luego ve a /var/discourse/templates y ejecuta: nano web.template.yml. A modo de comparación, aquí tienes el archivo que clonaste de github y el área de interés está alrededor de la línea 159. ¿Te resulta familiar? Es el mismo comando mencionado anteriormente antes de que fallara. Necesitamos agregar una nueva sección encima de esta línea para aumentar el tiempo de espera.
Guarda este cambio y luego vuelve a ejecutar ./discourse-setup y ¡listo, completado! Definitivamente tomará un tiempo, especialmente el paso de compresión brotli, pero terminará.
Tuve el mismo tiempo de espera, pero tuve problemas para implementar la solución sugerida, así que me gustaría añadir algunos detalles.
Primero, tuve algunos problemas para encontrar /var/discourse/templates, porque mi instalación de Discourse está en una ubicación no estándar. Estaba buscando dentro de Docker, lo que por supuesto no tiene sentido.
Segundo, el número de línea 159 ya no es correcto. Supongo que te refieres a esta sección de template.yml:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
Tercero, no estoy muy familiarizado con yaml, pups y yarn o cómo se usan en Discourse, y no quería adivinar. En cambio, probé este cambio en la sección original:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'
Esto funciona para mí. ./launcher rebuild app ahora tarda mucho tiempo (más de 2 horas para mí), pero al menos se completa y el foro vuelve a funcionar.
Finalmente, me gustaría añadir que este problema (para mí) ciertamente no fue por falta de memoria: estoy usando un VPS con 32 GB instalados, de los cuales 24 GB estaban libres cuando ocurrió el problema.