¿Por qué este simple script bash destruye mi computadora?

¿Por qué este simple script bash destruye mi computadora?

Algo extraño está pasando con un guión aparentemente inofensivo que tengo. Necesito copiar una serie de archivos a algunas ubicaciones del sistema y tengo el siguiente script para hacerlo.

#!/bin/bash

# Get all the files from the file
LINES=$(cat Release-Nodejs/dependencies.txt)

# Copy each file to its location as indicated in the file
for LINE in ${LINES}
do
    LIBRARY=$(basename ${LINE})
    LIBRARY=Release-Nodejs/${LIBRARY}
    LIB_PATH=$(dirname ${LINE})
    echo -e "Copying \e[38;5;10m${LIBRARY}\e[0m to \e[38;5;11m${LIB_PATH}\e[0m"
    cp ${LIBRARY} ${LIB_PATH}
done

El script obtiene los archivos y ubicaciones del dependencies.txtarchivo cuyo contenido es:

/usr/lib/x86_64-linux-gnu/libnode.so.72
/lib/x86_64-linux-gnu/libgcc_s.so.1
/lib/x86_64-linux-gnu/libpthread.so.0
/lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libz.so.1
/usr/lib/x86_64-linux-gnu/libbrotlidec.so.1
/usr/lib/x86_64-linux-gnu/libbrotlienc.so.1
/usr/lib/x86_64-linux-gnu/libcares.so.2
/usr/lib/x86_64-linux-gnu/libnghttp2.so.14
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
/usr/lib/x86_64-linux-gnu/libssl.so.1.1
/usr/lib/x86_64-linux-gnu/libicui18n.so.67
/usr/lib/x86_64-linux-gnu/libicuuc.so.67
/lib/x86_64-linux-gnu/libdl.so.2
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/lib/x86_64-linux-gnu/libm.so.6
/usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1
/usr/lib/x86_64-linux-gnu/libicudata.so.67

Si comento la cp ${LIBRARY} ${LIB_PATH}línea obtengo:

Salida del guión

Entonces sé que estoy obteniendo los nombres de archivos y las rutas correctamente. Es cuando descomento la cp ${LIBRARY} ${LIB_PATH}línea y ejecuto el script sudoque el script destruye mi sistema.(por cierto, esto es inofensivo porque lo estoy probando en una máquina virtual). Al hacer esto, la pantalla simplemente se vuelve negra y tengo que forzar el cierre de la ventana de VM. Luego, cuando intento ejecutar la VM nuevamente, aparece esto:

Sistema muerto

Y tengo que reinstalar UBUNTU por completo.

Me pregunto por qué sucede esto, ya que puedo ejecutar manualmente cpen la línea de comando para cada archivo y no sucede nada malo, los archivos simplemente se copian a sus destinos.


EDITAR:

Como se señala en uno de los comentarios y en elProblema XY, el problema que estoy tratando de resolver es que estoy creando un módulo nodejs nativo en mi máquina que tiene node v12.18.1y que se usará en una máquina node v 10.19.0y no puedo actualizar la versión del nodo en la máquina de destino ni instalar otros. paquetes que incluyen las dependencias.

Cuando ejecuto ldd mymodule.nodeobtengo:

linux-vdso.so.1 (0x00007ffe878c6000)
libnode.so.72 => /usr/lib/x86_64-linux-gnu/libnode.so.72 (0x00007f9bd34fb000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9bd34e0000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9bd34be000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9bd32d4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9bd5b1e000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9bd32b7000)
libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f9bd32a9000)
libbrotlienc.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlienc.so.1 (0x00007f9bd3215000)
libcares.so.2 => /usr/lib/x86_64-linux-gnu/libcares.so.2 (0x00007f9bd31fe000)
libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f9bd31d2000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f9bd2ef5000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f9bd2e61000)
libicui18n.so.67 => /usr/lib/x86_64-linux-gnu/libicui18n.so.67 (0x00007f9bd2b4f000)
libicuuc.so.67 => /usr/lib/x86_64-linux-gnu/libicuuc.so.67 (0x00007f9bd2961000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9bd295b000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9bd277a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9bd262b000)
libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f9bd2608000)
libicudata.so.67 => /usr/lib/x86_64-linux-gnu/libicudata.so.67 (0x00007f9bd0aed000)

Y es por eso que estoy tratando de hacer lo que intento hacer en esta pregunta. Entonces la verdadera pregunta aquí es;¿Cómo puedo incluir estas dependencias junto con el .nodemódulo para poder implementarlo sin tener que actualizar nada en el destino?

Preferiría vincular todos estos al módulo y tener solo un archivo .node que incluya todo y no dependa de las bibliotecas del sistema, pero no creo que eso sea posible, ¿o no?

Respuesta1

Puede intentarlo de nuevo, excepto crear el directorio "mkdir -p /usr/local/lib/nodejs" y configurar su LIBPATH en "exportar LIBPATH=/usr/local/lib/nodejs/". Sin embargo, le recomiendo encarecidamente que lea cómo instalar nodejs en Linux antes de apretar el gatillo. Consulte "https://github.com/nodejs/help/wiki/Installation#how-to-install-nodejs-via-binary-archive-on-linux", por ejemplo, que realiza la instalación en "/usr/local /lib/nodejs". El único trabajo pesado que debe hacer después de crear el directorio es descargar el binario y extraerlo en el directorio "/usr/local/lib/nodejs".

información relacionada