При разработке на js в linux возможно появление ошибки типа "version `GLIBC_2.28' not found". Причина в том, что Node должен быть согласован с версией linux (точнее с версией glibc). Ниже описано диагностирование и варианты исправление этой проблемы.
Для начала, определить версию ядра linux:
$ uname -a Linux vasi-note 5.4.0-150-generic 167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
или:
$ ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1.6) 2.27 ...
Версию ядра нужно нужно учитывать при установке окружения.
Далее будут использованы команды:
- nvm - Node Version Manager (исполняющая система)
- npm - Node Package Manager. Утилита установки пакетов, устанавливается по умолчанию вместе с node.
- yarn - улучшеный Node Package Manager (утилита. Устанавливается отдельно от node).
Неплохая статья на эту тему https://habr.com/ru/articles/726096/
Есть еще package manage PNPN, НО!!! Please note that pnpm is currently blocking all traffic from Russia and Belarus https://twitter.com/pnpmjs/status/1498306992577957890
Установка версии node 16.15.1
$ nvm install 16.15.1
(НЕ SUDO)
Проверка:
$ /home/vasi/.nvm/versions/node/v16.15.1/bin/node --version v16.15.1
Установить пути в .bashrc. Для этого добавить строку в .bashrc:
$ export PATH=/home/vasi/.nvm/versions/node/v16.15.1/bin:$PATH
Проверка:
$ node --version v16.15.1
Установка версии node 17.9.1
$ nvm install 17.9.1
В .bashrc добавить строку:
export PATH=/home/vasi/.nvm/versions/node/v17.9.1/bin:$PATH
Проверка:
$ node --version v17.9.1
версия v20.0.0 выдает ОШИБКУ (см. версию linux):
$ /home/vasi/.nvm/versions/node/v20.0.0/bin/node --version >/home/vasi/.nvm/versions/node/v20.0.0/bin/node: > /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found ( > required by /home/vasi/.nvm/versions/node/v20.0.0/bin/node > )
yarn
Проверка версии yarn:
$ /usr/share/yarn/bin/yarn --version 1.22.5
npm
Проверка версии npm:
$ npm --version 8.11.0
или более подробно (без --)
$ npm version { npm: '8.11.0', node: '17.9.1', v8: '9.6.180.15-node.16', ...
Очистка кеша npm:
$ npm cache clean -f
Выбор версии nvm:
$ nvm use v16.0.0
Опыты на notebook:
vasi@vasi-note:~$ ls /home/vasi/.nvm/versions/node/ v16.10.0 v16.15.1 v16.20.2 v17.9.1 v18.20.2 v20.0.0 vasi@vasi-note:~$ /home/vasi/.nvm/versions/node/v16.20.2/bin/node --version v16.20.2 vasi@vasi-note:~$ /home/vasi/.nvm/versions/node/v17.9.1/bin/node --version v17.9.1 vasi@vasi-note:~$ /home/vasi/.nvm/versions/node/v20.0.0/bin/node --version /home/vasi/.nvm/versions/node/v20.0.0/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /home/vasi/.nvm/versions/node/v20.0.0/bin/node) vasi@vasi-note:~$ /home/vasi/.nvm/versions/node/v18.20.2/bin/node --version /home/vasi/.nvm/versions/node/v18.20.2/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /home/vasi/.nvm/versions/node/v18.20.2/bin/node)
Опыты на v.perm.ru:
vasi@v ~ $ whereis node node: /usr/bin/node /usr/local/bin/node.bad /usr/local/bin/node /usr/share/man/man1/node.1.gz vasi@v ~ $ /usr/local/bin/node --version v8.10.0