与 Chocolatey 包管理器一起安装时,cygwin setup.exe 二进制文件在哪里?

Where is the cygwin setup.exe binary when installed with the Chocolatey package manager?

我正在研究一个系统自动化过程,它将使用 Powershell 安装 Chocolatey 以安装 Cygwin。随后我想安装 apt-cyg 的先决条件,这将允许我以编程方式从 cygwin 安装软件包。但是,我不知道与 Chocolatey 一起安装时 Cygwin 的 setup.exe 二进制文件放在哪里。

这不是您在哪里可以找到 setup.exe 的答案,但您实际上可以使用一些 包管理器 来让 Cygwin 管理包。其中一些是独立的应用程序或脚本,其中一些只是 Cygwin setup.exe 的包装器。查看我对 How do I install cygwin components from the command line? 的回答以获取其中一些列表。

此外,还有 cyg-get in the Chocolatey's repository,它实际上是用 PowerShell 编写的 setup.exe 的包装器。

我下载了 cygwin 包并检查了 chocolateyInstall.ps1。看起来软件包会下载 exe 安装程序并传递目标文件夹。

$binRoot = Get-BinRoot
$cygRoot = join-path $binRoot "cygwin"
$cygPackages = join-path $cygRoot packages

# https://cygwin.com/faq/faq.html#faq.setup.cli
$silentArgs = "-q -R $cygRoot -l $cygPackages -s http://mirrors.kernel.org/sourceware/cygwin/"
$validExitCodes = @(0)

Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" "$url64"  -validExitCodes $validExitCodes

目标文件夹使用 Chocolatey "binroot" 文件夹合并。这就是混乱的地方......这个文件夹有很多旧位置。万无一失的方法是导入Chocolatey helper 模块并执行Get-BinRoot。您还需要找到您的 Chocolatey 安装文件夹。

PS> Import-Module $ENV:CHOCOLATEYINSTALL\chocolateyInstall\helpers\chocolateyInstaller.psm1; Get-BinRoot

这将在我的系统上转储一个文件夹名称(以及大多数具有最新 Chocolatey 并且没有对该路径或任何其他环境变量进行手动更改的系统)

C:\tools

所以,cygwin 二进制文件应该在像

这样的路径下
C:\tools\cygwin

仅供参考,cygwin 包确实建议为这种事情安装 cyg-get 包。