【问题标题】:How do I override the Ruby and Ruby DevKit installdir with Chocolatey?如何使用 Chocolatey 覆盖 Ruby 和 Ruby DevKit installdir?
【发布时间】:2023-03-22 07:49:01
【问题描述】:

我对 Chocolatey 有点陌生,过去曾在 Windows 8 上安装过一些软件包,现在我喜欢上了它。

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

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

  • 如何确保安装 x64 版本的 Ruby 和使用巧克力的 Ruby DevKit?
  • 如何设置来自 Chocolatey 的自定义安装目录?

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

【问题讨论】:

    标签: ruby installation chocolatey ruby-development-kit


    【解决方案1】:

    预警

    来自 *nix 的部分 Ruby 不喜欢空格。宝石就是其中之一。这不是巧克力的东西,只是一个仅供参考,以防万一您将其放入程序文件后遇到问题。它可能不会在那里工作,所以如果你遇到问题,把它移到其他地方。

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

    保证 x64?

    如果您在 64 位系统上并且软件包中包含 x64 网址,您将获得该软件的 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 - 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​​ 安装,否则设置它并运行 devkit 文件夹中的ruby dk.rb install(您可能需要强制)将其安装到 ruby​​ 中。欲了解更多信息,请参阅DevKit
    • 如果在 cmd.exe refreshenv 中,则关闭并重新打开 shell。
    • 现在我想说你可以安装 gems,但你仍然需要处理更新ssl certificate for rubygems.org。我在vagrant-windows-puppet 上有一个例子。
    • 完成。

    【讨论】:

    • 哇!感谢您的彻底回答,它提供了很多学习和消化的东西,所以我不太确定在哪里编辑 ChocolateyBinRoot env 变量。可以使用 installArgs 参数设置这样的变量吗?
    • 那是一个Windows环境变量。要设置它,有关于它的 GUI 方法。大多数控制台方式在会话之后不会持续存在。如果您在 google 中搜索 Set Environment Variable command line persist 它应该可以帮助您。
    • @j4v1如果你觉得这个答案足够好,请继续将其标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多