如何使用 Windows PowerShell PackageManager (OneGet) 安装 Node.js?

tru*_*ktr 7 windows powershell node.js oneget windows-package-manager

我试过Install-Package nodejs,这似乎做了一些事情:

PS C:\WINDOWS\system32> Install-Package nodejs

The package(s) come(s) from a package source that is not marked as trusted.
Are you sure you want to install software from 'chocolatey'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y

Name                           Version          Source           Summary
----                           -------          ------           -------
nodejs.install                 11.10.0          chocolatey       Node JS - Evented I/O for v8 JavaScript.
nodejs                         11.10.0          chocolatey       Node JS - Evented I/O for v8 JavaScript.
Run Code Online (Sandbox Code Playgroud)

然后当我尝试运行node命令时,它失败了:

PS C:\WINDOWS\system32> node
node : The term 'node' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ node
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (node:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)

我如何正确使用PackageManager,以便该命令可用?

不确定其他问题是否相关:Chocolaty 包未通过 Windows 10 中的 OneGet/PackageManagement 安装?

正如另一个问题所暗示的那样,我尝试了设置Set-ExecutionPolicy Unrestricted、卸载和重新安装nodejs,但结果是一样的。

我确实看到安装后存在以下文件:

C:\Chocolatey\lib\nodejs.11.10.0\nodejs.11.10.0.nupkg
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\legal\LICENSE.txt
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\legal\VERIFICATION.txt
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\tools\chocolateyInstall.ps1
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\tools\node-v11.10.0-x64.msi
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\tools\node-v11.10.0-x86.msi
Run Code Online (Sandbox Code Playgroud)

这让我觉得也许它希望我在之后手动运行安装程序?

我的目标是通过脚本在新的 Windows 机器上简单地安装我需要的任何东西,而不必使用 GUI 手动下载/安装它们。

Ben*_*est 2

我能够重现这个问题,但也能够解决它。问题是node安装后可执行文件不在 PATH 中Install-Package。然而,这确实有一定意义,因为当前的 PowerShell 进程在重新启动之前不会获取环境变量的外部更改。

Chocolatey 的refreshenv命令有时有效,但并非总是有效,并且使用 进行安装后nodejsInstall-Package无法refreshenv刷新 PATH 变量。有效是启动一个新的 PowerShell 会话并运行命令node,该命令成功运行了可执行文件:

> node

Welcome to Node.js v16.7.0.
Type ".help" for more information.
> 
Run Code Online (Sandbox Code Playgroud)

choco.exe有时可以掩盖这一点,但通常Chocolatey 不会为 EXE 或 MSI 安装程序放置的可执行文件生成填充程序(除非包维护者强制创建它们)。

提示:如果您需要从安装包的同一进程调用二进制文件(例如,在运行期间,这chef-client不是refreshenv一个选项),请使用可执行文件的完全限定路径来调用新的-安装的软件。


此外,不要在真正的自动化中使用 Chocolatey OneGet 提供程序;它还不稳定,在撰写本文时看起来已经五年没有任何开发活动了。来自README.md

注意:寻求维护者帮助完成此提供程序。请在问题列表或 Gitter 上询问(请参阅下面的聊天室)。谢谢!

同样列出了一个替代方案README

注意:目前,您可能更感兴趣的是使用 ChocolateyGet 提供程序作为权宜之计,直到该提供程序准备就绪。详情请参见https://github.com/jianyunt/ChocolateyGet

我尝试了这个,它似乎有效,但我仍然建议使用官方choco.exe二进制文件。它易于安装,并且在使用时您将获得最好的支持。它还表明配置管理解决方案(例如 Chef 的chocolatey_package资源)继续使用二进制文件,并且通常将安装客户端列为先决条件,即使从技术上讲该PackageManagement模块可以用作本机解决方案。