Os requisitos de build do Deno são de 16GB de RAM, mas quero construí-lo com 8GB de RAM à força
Olá, sou um inútil.
Quando tentei mexer e construir por conta própria, apareceu isso:
error: linking with `cc` failed: exit status: 1
e a compilação não passou.
Normalmente, parece ser um erro que ocorre quando o linker está fazendo algo, mas não encontrei nada ao pesquisar.
A resposta está no syslog
Bem, eu estava conectado via SSH à minha máquina Devuan de servidor doméstico e tentando construir, mas isso também não funcionou.
E por acaso, eu estava com a tela da máquina Devuan conectada a um monitor, e a saída de erro era, por algum motivo... OOM Killer?
$ sudo cat /var/log/syslog | grep "Out of memory"
Oct 13 11:50:16 localhost kernel: [227399.170721] Out of memory: Killed process 8309 (ld) total-vm:2711000kB, anon-rss:2682476kB, file-rss:1608kB, shmem-rss:0kB, UID:1000 pgtables:5352kB oom_score_adj:0
Oct 13 12:38:52 localhost kernel: [230315.610776] Out of memory: Killed process 9472 (ld) total-vm:2883664kB, anon-rss:2872404kB, file-rss:1468kB, shmem-rss:0kB, UID:1000 pgtables:5704kB oom_score_adj:0
Oct 13 16:34:15 localhost kernel: [244437.896036] Out of memory: Killed process 9979 (ld) total-vm:2195452kB, anon-rss:2187944kB, file-rss:1604kB, shmem-rss:0kB, UID:1000 pgtables:4348kB oom_score_adj:0
$ date
2024年 10月 13日 日曜日 16:48:12 JST
Parece que a memória é insuficiente e o processo iniciado para a compilação é encerrado, impedindo que ela seja concluída.
Eu já havia aberto uma issue, mas
cargo test -vv faild on Arch/Artix Linux #26191
Embora não estivesse escrito nos requisitos para construir a partir do código-fonte oficial, parece que o requisito mínimo para a construção é de 16GB de RAM...
Tentei construir em um PC que montei com quase 40GB de RAM e funcionou...
Quero compilar o Deno em um ambiente com 8GB de RAM, não importa como!!
No final, se você quiser apenas que o binário deno seja compilado, como me disseram nas issues, basta usar:
cargo build -p deno --bin deno
parece que isso é suficiente, mas mesmo assim, muitas vezes não funciona.
Então, procurei maneiras de reduzir o uso de memória...
CARGO_BUILD_JOBS=1 cargo build -p deno --bin deno -j 1
Provavelmente é lento, mas se você tentar construir normalmente uma vez e, depois que o OOM Killer ocorrer, usar o comando acima, ele usará o cache para construir, terminando relativamente mais rápido.
O trabalho de build em si é limitado a um, e um thread da CPU é usado para a compilação, então o impacto em outras coisas em execução enquanto compila é mínimo. Acho que é uma boa variável de ambiente/opção, mesmo que seja um pouco simples. É mais lento, mas...
Até a próxima.
Por favor, cuidem-se.