Por que esse simples script bash está destruindo meu computador?

Por que esse simples script bash está destruindo meu computador?

Algo estranho está acontecendo com um roteiro aparentemente inofensivo que tenho. Preciso copiar uma série de arquivos para alguns locais do sistema e tenho o seguinte script para fazer isso.

#!/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

O script está obtendo os arquivos e locais do dependencies.txtarquivo cujo conteúdo é:

/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

Se eu comentar a cp ${LIBRARY} ${LIB_PATH}linha, recebo:

Saída de script

Então eu sei que estou obtendo os nomes dos arquivos e caminhos corretamente. É quando eu descomento a cp ${LIBRARY} ${LIB_PATH}linha e executo o script sudoque o script destrói meu sistema(a propósito, isso é inofensivo porque estou testando em uma VM). Ao fazer isso, a tela fica preta e tenho que forçar o fechamento da janela da VM. Então, quando tento executar a VM novamente, recebo isto:

Sistema Morto

E eu tenho que reinstalar completamente o UBUNTU.

Eu me pergunto por que isso está acontecendo, já que posso executar manualmente na cplinha de comando para cada arquivo e nada de ruim acontece, os arquivos apenas são copiados para seus destinos.


EDITAR:

Como apontado em um dos comentários e noProblema XY, o problema que estou tentando resolver é que estou criando um módulo nodejs nativo em minha máquina que tem node v12.18.1e deve ser usado em uma máquina com node v 10.19.0e não consigo atualizar a versão do nó na máquina de destino ou instalar outro pacotes que incluem as dependências.

Quando executo ldd mymodule.noderecebo:

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)

E é por isso que estou tentando fazer o que estou tentando fazer nesta questão. Portanto, a verdadeira questão aqui é;Como posso incluir essas dependências junto com o .nodemódulo para poder implantá-lo sem precisar atualizar nada no destino?

Eu preferiria vincular tudo isso ao módulo e ter apenas um arquivo .node que inclua tudo e não dependa de bibliotecas do sistema, mas não acho que isso seja possível, ou é?

Responder1

Você pode tentar novamente, exceto criar o diretório "mkdir -p /usr/local/lib/nodejs" e definir seu LIBPATH como "export LIBPATH=/usr/local/lib/nodejs/". No entanto, eu recomendo fortemente que você leia como instalar o nodejs no Linux antes de puxar o gatilho. Consulte "https://github.com/nodejs/help/wiki/Installation#how-to-install-nodejs-via-binary-archive-on-linux", por exemplo - que faz a instalação em "/usr/local /lib/nodejs". O único trabalho pesado que você precisa fazer depois de criar o diretório é baixar o binário e extraí-lo para o diretório "/usr/local/lib/nodejs"

informação relacionada