Исполнимая проблема Node.js

Я установил node.js из репозиториев (v0.10.25, Ubuntu 14.04.3, nodejs-legacy пакет).

Мне нужна определенная версия (v0.10.35) для проекта.

Я установил n (sudo npm install -g n) и установленный необходимое node.js версия с помощью него (sudo n 0.10.35).

Теперь эта вещь происходит:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

$ which node
/usr/local/bin/node

$ node --version
v0.10.25

$ /usr/local/bin/node --version
v0.10.35

Вопросы:

  1. Что продолжается здесь? Разве тот же исполняемый файл не должен быть используется в обоих случаях с той же версией, о которой сообщают?

  2. Я могу попытаться удалить node.js установленный из репозиториев, но действительно ли это безопасно?

0
задан 28 October 2015 в 19:15
2 ответа

у вас установлены 2 разные версии узла, и только что установленная версия:

   /usr/local/bin/node

. однако, если вы отметите узел в:

/usr/bin or /bin (check with locate or whereis)

Тогда вы увидите, где он связан, все, что вам нужно, это изменить путь символической ссылки на желаемую версию узла.

Этот способ изменения версии не рекомендуется, если вы не являетесь опытный.

надеюсь, что это поможет

0
ответ дан 5 December 2019 в 11:46

bash кэширует пути к командам:

$ help hash
hash: hash [-lr] [-p pathname] [-dt] [name ...]
    Remember or display program locations.

    Determine and remember the full pathname of each command NAME.  If
    no arguments are given, information about remembered commands is displayed.

    Options:
      -d                forget the remembered location of each NAME
      -l                display in a format that may be reused as input
      -p pathname       use PATHNAME as the full pathname of NAME
      -r                forget all remembered locations
      -t                print the remembered location of each NAME, preceding
                each location with the corresponding NAME if multiple
                NAMEs are given
    Arguments:
      NAME              Each NAME is searched for in $PATH and added to the list
                of remembered commands.

    Exit Status:
    Returns success unless NAME is not found or an invalid option is given.

Итак, проблема заключалась в том, что я сначала запустил узел , который был найден в / usr / bin . Затем я установил другую версию узла в / usr / local / bin , который должен иметь приоритет согласно $ PATH , но путь был кэширован с помощью bash. Таким образом, при запуске узла использовался старый путь, в то время как узел не использовал кеш bash.

Чтобы решить эту проблему, я должен был выйти из системы, а затем полностью очистить ее. cache:

$ hash -r
0
ответ дан 5 December 2019 в 11:46

Теги

Похожие вопросы