Может ли Chocolatey распознать ручную установку nodejs?

Выполненная команда node -v дает следующее значение: v0.10.33. Я знаю, что сейчас Node.js находится в версии 0.12. Тем не менее, при запуске choco update nodejs в подсказке говорится: «Нечего обновлять». То же самое происходит с npm после "choco update npm".

Я установил Node.js из установочного пакета на их веб-сайте nodejs.org. Через некоторое время я также установил Chocolatey и время от времени начал использовать этот инструмент для установки пакетов.

Возможно ли, чтобы Chocolatey распознал существующую установку Node.js и выбрал оттуда обновление choco?

Я также хотел бы получить обновление npm от Chocolatey таким же образом.


У меня нет последней версии Chocolatey.

> choco list --local-only nodejs 
Opción desconocida: '--local-only' 

nodejs.commandline 0.12.2 
npm 1.4.9.20150213 
EthanBrown.DevTools.Web 0.3.1 
ghost 0.5.5.1 
io.js 1.7.1 
livestreamer-twitch-gui 0.7.1 
nodejs 0.12.2 
nodejs.install 0.12.2 
node-webkit-0.9.2 0.9.2 
node-webkit 0.6.2 
Brackets.Theseus 0.2.8 
Yeoman 1.1.2 

После обновления Chocolatey до v0.9.9.4

> choco list --local-only
Chocolatey v0.9.9.4 [nl] 0 packages installed.

Я обновил Node.js с помощью npm.

> node -v
v0.12.2

Однако после переустановки Node.js в версии 0.10.33,

> choco install nodejs -version 0.10.33

Я не могу использовать npm:

Не удается найти файл в 'npm.cmd' (C: \ ProgramData \ chocolatey \ lib \ npm \ tools \ npm.cmd). Обычно это указывает на отсутствие или перемещение файла.

Я оставлю это пока, пока не устраню неполадки.


person j4v1    schedule 17.04.2015    source источник


Ответы (2)


Другой вариант, предполагающий, что у вас уже установлен Node.js через MSI, - это запустить:

choco install nodejs -version 0.12.2 -y -n

Параметр -n, как описано здесь:

https://github.com/chocolatey/choco/wiki/CommandsInstall#options-and-switches

Пропускает сценарий PowerShell, связанный с пакетом Chocolatey. По сути, это добавляет версию пакета в репозиторий Chocolatey, но не запускает связанный сценарий установки.

Это то, что я «думаю» вам нужно.

ПРИМЕЧАНИЕ. Не все пакеты содержат файлы chocolateyinstall.ps1, и вместо этого полагаются на поведение установки по умолчанию Chocolatey, т. е. создание прокладок для содержащихся файлов EXE и т. д. Флаг skippowershell не будет, к лучшему из моих знания, не позволяйте этому случиться.

person Gary Ewan Park    schedule 17.04.2015
comment
Здравствуйте, я уже обновился до последней версии. После обновления моего nodejs до v.0.12.2 я использовал предоставленную команду для установки предыдущей версии nodejs (0.10.33). Теперь мне нужно устранить неполадки, почему npm не распознается и ссылается на шоколадный путь установки. (См. Мой третий комментарий к stackoverflow.com/a/29704118/1960071 в этой теме). Спасибо. - person j4v1; 18.04.2015
comment
Вы хотите сказать, что хотите, чтобы на вашем компьютере были одновременно установлены 2 разные версии узлов или просто пытаетесь установить старую версию вместо новой? - person Gary Ewan Park; 19.04.2015
comment
Моей целью было установить одну версию nodejs, будь она старше или новее. Но теперь, когда вы упомянули, можно ли установить две или более версии nodejs через шоколадный? - person j4v1; 21.04.2015
comment
В Chocolatey ‹0.9.8.33« из коробки »ответ был положительным. В Chocolatey ›0.9.9.0 это несколько изменилось. Это все еще возможно, но есть дополнительный флаг для установки, задокументированный здесь: choco install crashplan -version 3.7.1 (-sxs), который позволяет это сделать. Без этого флага, я думаю, вы могли бы видеть странные вещи, происходящие с сгенерированными прокладками и т. Д., Перезаписывая то, что уже было на месте, но это только предположение. - person Gary Ewan Park; 21.04.2015
comment
Что я обнаружил после установки нового nodejs через шоколадку - поверх существующей установки - так это то, что путь env нового npm cmd был скопирован поверх существующей установки. Я удалил choco npm после, но путь env от такой установки был сохранен, но указывал на удаленную установку, размещенную шоколадом. Я просмотрел переменную env PATH, но в системе не было никаких следов виновной строки. Пришлось снова установить и удалить, тогда оставленная строка была удалена. Это было странно. - person j4v1; 22.04.2015

В настоящее время Chocolatey не может обнаруживать и включать уже установленные приложения в свою собственную библиотеку. Теперь, если вы установили Node.js MSI вручную, а затем использовали Chocolatey для установки той же или более новой версии, все может просто работать. Система MSI, хотя и непонятна, но довольно надежна, и большинство новых MSI заменяют старые.

Можете ли вы запустить команду Chocolatey, чтобы показать нам, какой именно Node.js у вас установлен?

PS> choco list --local-only nodejs
Chocolatey v0.9.9.2
nodejs 0.10.33
nodejs.install 0.10.33
2 packages installed.

У меня установлена ​​такая же версия. Я только что запустил обновление. Я обрезал логи, но вы видите, что он обновляется.

PS> choco upgrade nodejs
Chocolatey v0.9.9.2

nodejs.install v0.12.2
nodejs v0.12.2

Chocolatey upgraded 2/2 package(s). 0 package(s) failed.

И Node.js обновлен.

PS> node -v
v0.12.2

И приложение в апплете Программы и компоненты Панели управления также обновляется. Итак, MSI Node.js здесь поступает правильно.

Введите описание изображения здесь

Я думаю, нам нужно увидеть более буквальный вывод команды из вашей системы, чтобы убедиться, что у вас установлены все нужные версии.

person Anthony Mastrean    schedule 17.04.2015
comment
Спасибо за ответ. Я заметил, что вы использовали обновление choco вместо обновления choco. Команда choco list --local-only nodejs дает следующий результат: E: \ ›choco list --local-only nodejs Opción desconocida: '--local-only' nodejs.commandline 0.12.2 npm 1.4.9.20150213 EthanBrown.DevTools .Web 0.3.1 ghost 0.5.5.1 io.js 1.7.1 livestreamer-twitch-gui 0.7.1 nodejs 0.12.2 nodejs.install 0.12.2 node-webkit-0.9.2 0.9.2 node-webkit 0.6.2 Скобки .Theseus 0.2.8 Yeoman 1.1.2 Хейвен не заметил, что, возможно, у меня шоколадная версия еще не обновлена. - person j4v1; 18.04.2015
comment
О, форматирование строки не применялось к предыдущему ответу. - person j4v1; 18.04.2015
comment
После обновления Chocolatey до версии 0.9.9.4 команда choco list --local-only возвращает следующее: Chocolatey v0.9.9.4 [nl] Установлено 0 пакетов. Однако, если я запустил node -v, он отобразит версию 0.12.2, что правильно, поскольку я обновил nodejs с помощью пакета npm nuw. Однако после переустановки nodejs в v.0.10.33 с помощью choco install nodejs -version 0.10.33 теперь нельзя использовать npm, что вызывает ошибку Не удается найти файл в 'npm.cmd' (C: \ ProgramData \ chocolatey \ lib \ npm \ инструменты \ npm.cmd). Обычно это указывает на отсутствие или перемещение файла. Я оставлю это пока, пока не устраню неполадки. - person j4v1; 18.04.2015
comment
Chocolatey может взять на себя существующие установки, но есть предостережение - пакеты установщика, которые он берет на себя при обновлении. Если он попал в систему другим способом, он не сможет перенять существующую установку. На текущий момент в Chocolatey for Business есть choco sync, который очень быстро переносит все, что уже установлено в программах и компонентах, под управлением Chocolatey. chocolatey.org/docs/features-synchronize#sync-command - person ferventcoder; 23.07.2017
comment
@ferventcoder, этому ответу 2 года, конечно, Шоколадки теперь может все! ???? - person Anthony Mastrean; 23.07.2017
comment
Я видел это. Однако StackExchange не существует вовремя, поэтому устаревшие ответы должны время от времени обновляться. :) - person ferventcoder; 24.07.2017
comment
@ferventcoder, есть ли смысл опубликовать последний ответ? Или обновить эту? Так что в комментариях это не потеряно. - person Anthony Mastrean; 24.07.2017