如何使用 Chocolatey 覆盖 Ruby 和 Ruby DevKit 安装目录?

How do I override the Ruby and Ruby DevKit installdir with Chocolatey?

我对chocolatey有点陌生,以前在Windows8安装过几个包,现在已经喜欢上了。

我注意到 chocolatey 将软件包安装在默认的 Windows 程序目录中(即 "Program Files x86" 左右)。也许还有更多我想念的东西。

对于 Ruby 2.1.5 和 Ruby DevKit 的具体情况,我有几个问题:

我知道有一些关于更改安装目录的信息,但参数语法取决于正在安装的特定软件包使用的安装系统(如果有的话),在本例中,Ruby & Ruby 开发工具包。我还没有在 windows 上找到 ruby 和 ruby devkit 的 CLI 安装字符串。任何帮助是极大的赞赏。谢谢

预警

来自 *nix 的 Ruby 部分不喜欢空格。宝石就是其中之一。这不是 Chocolatey 的东西,只是一个 FYI,以防你在将它放入 Program Files 后 运行 遇到问题。它可能在那里不起作用,所以如果您 运行 遇到问题,请将它移到其他地方。

如果我没记错的话,安装程序也不会真正更新权限,所以你要自己确保你的权限是好的,这样你就可以 运行 例如Program Files 仅管理员可写,除非您 运行 设置管理提示(这是 UAC,它会将您从非提升进程中的 Administrators 组中删除)。

保证 x64?

如果您使用的是 64 位系统并且软件包中包含 x64 urls,您将获得该软件的 64 位版本,除非您特别使用 -x86 强制32 位版本。

  • 查看 Ruby 2.1.5 package files - 我们看到 chocolateyInstall。ps1 有这一行(注意 $url64,所以我们很好):

Install-ChocolateyPackage "$packageId" 'exe' "$silentArgs" "$url" "$url64" -checksum $checksum -checksum64 $checksum64

  • 查看 Ruby2.DevKit package files - wee the chocolateyInstall.ps1 有这一行(再次使用 x64 url):

Get-ChocolateyWebFile 'ruby2.devkit' "$file" -url "$url" -url64bit "$url64" -checksum "$checksum" -checksum64 "$checksum64" -checksumType "$checksumType"

自定义安装文件夹

通常您会通过 installargs 传递用于更改目录的本机开关。然而,由于上述已知问题,这些软件包使用 Chocolatey 的 Get-BinRoot 来确定安装它们自己的位置。

Chocolatey 的 Get-BinRoot

Get-BinRoot 使用名为 ChocolateyBinRoot 的环境变量(默认设置为 $env:SystemDrive\tools)来确定将某些不真正符合 Program Files 条件的软件放在哪里。您可以将其设置在任何您想要的位置,包括 Program Files 文件夹,它将使用该位置。

正在为 v2 安装 Ruby 和 DevKit

  • choco install ruby -version 2.1.5
  • 如果在 cmd.exe refreshenv 否则关闭并重新打开 shell.
  • choco install ruby2.devkit(注意ruby2
  • 检查DevKit文件夹中的config.yml是否捡到ruby安装,否则设置它和运行ruby dk.rb install(可能需要强制)在 devkit 文件夹中将其安装到 ruby。更多信息,请参阅DevKit
  • 如果在 cmd.exe refreshenv 否则关闭并重新打开 shell.
  • 现在我想说你可以安装 gems,但你仍然需要处理更新 ssl certificate for rubygems.org. I have an example on vagrant-windows-puppet
  • 完成。