【问题标题】:Minimal Cygwin installation + Perl + Gcc最小的 Cygwin 安装 + Perl + Gcc
【发布时间】:2013-04-08 11:18:22
【问题描述】:

我希望将特定的 Cygwin 安装作为一个 zip 文件存档,以便随后部署在不同的 Windows PC 上。调查问题后,建议的执行方法是“试错”Cygwin 安装和软件包选择 (What packages should I install with Cygwin to make it not bloated but also have everything I would need as a developer?) 可能更具体的要求会有所帮助:我需要最少的 Cygwin 安装 + Perl + 著名的 Perl 库(Win32::API 等)+ GNU make + Gcc 编译工具。安装 Cygwin 时应该选择哪些软件包?

【问题讨论】:

  • 我很确定 Cygwin 安装了写入 Windows 注册表。如果是这样,我认为 zip 文件存档不一定能正常工作。
  • @Mike - 如果在另一台 Windows PC 上简单地从 c:\cygwin 复制到 c:\cygwin,所有 cygwin 平台都可以工作。唯一需要的是将 c:\cygwin\bin 添加到 PATH 环境

标签: cygwin


【解决方案1】:

我一直在尝试使用 Cygwin,试图获得一个“简单的”,最小的安装。我确实发现安装 grep、gawk、sed 和类似工具等实用程序依赖于 cygwin、base-Cygwin,有时还依赖于不需要的工具,如 bash、coreutils 等,

我只想安装工具及其所需的 dll 并开始检查 Cygwin 包。我发现不使用 Cygwin 提供的 setup.exe 是完成最小 Cygwin 安装的另一种方法。

我就是这样完成的。

  1. 仅从任何 Cygwin 镜像下载所需的包 使用 ftp 或 http 的站点。或者,您可以使用 setup.exe 由 Cygwin 提供以下载所有软件包 - 仅下载和 没有安装。
  2. 下载成功后,个人 zlib、gawk、grep、libiconv 等软件包位于 x86/release 或 x86_64/release 目录 每个包都是 'tar'red 和 使用工具“xz”或 bzip 压缩并存储在相应的 目录。
  3. 要安装特定工具,如 sed 或 gawk,所有这些 需要做的是提取工具可执行文件及其 依赖项 (.dll)

在您尝试以下操作之前,请确保您拥有 7z.exe、xz.exe、bzip2 或其他能够解压缩 .xz 或 bzip 存档的工具

安装 gawk 示例如下:

  1. 使用以下命令从 gawk-4.1.3-1.tar.xz 存档中提取 gawk.exe - 7z.exe e -so gawk-4.1.3-1.tar.xz |焦油 xvf -
  2. 完成后,您应该可以在子文件夹中找到 gawk.exe,通常是 release/gawk 文件夹下的 usr/bin
  3. 查找 gawk 的依赖项 - 您可以通过多种方式做到这一点。

检查 x86 或 x86_64 文件夹中的 Cygwin setup.ini 文件。 查看字符串'@ gawk',在此行之后的行中,您应该找到一个列出依赖项的“requires:”行。 我的读起来像这样-“需要:bash cygwin libgmp10 libintl8 libmpfr4 libreadline7”

要运行 gawk,bash 不是必须的,因为我们有 windows 命令 shell。 (包含 bash 以获取 gawk 所需的其他一些 dll。但是,这会导致安装更多不必要的文件)。其他依赖项包含 gawk 需要运行的文件。

使用 7z 或 xz 等工具将上述每个包提取到单独的文件中。

提取所有依赖项后,将所需的工具 (grep/sed/gawk) 复制到一个文件夹和所有依赖的 .dll 中

您现在应该能够使用准系统 cygwin 安装所需的最少 .dll 集来运行您的工具。

警告:仅提取 setup.ini 中列出的每个工具的依赖项可能还不够。有时,您可能需要执行/运行该工具才能发现需要更多 dll。

还有其他方法可以找出 .exe 所需的 dll - 您可以使用 MS 中的 dumpbin 或 dependency walker、ndepends 或类似工具来查找依赖 dll 的列表

咨询 - How do I detect the DLLs required by an application? How do I find out which dlls an executable will load?

我还通过仅运行该工具并通过从所需的包中提取来一一安装缺少的 dll 来强制使用此 dll 信息。

当您运行某个工具并出现错误并显示缺少 .dll 消息时,请在此处搜索包含该 dll 的包 - https://cygwin.com/cgi-bin2/package-grep.cgi。输入缺失dll的全名/部分名称,查找包含该dll的包名。

最终,我完成了一个简单的 cygwin 安装,其中只有我需要的工具和 dll。

示例:gawk - gawk.exe 和以下 dll - cygwin1.dll、cyggmp-10.dll、cygiconv-2.dll、cygintl-8.dll、cygmpfr-4.dll、cyggcc_s-seh-1.dll , cygncursesw-10.dll, cygreadline7.dll sed - sed.exe 和 dll - cygwin1.dll、cygintl-8.dll

希望这对您有用。 Cywin 安装程序也做了 dll re-basing,我不会在这里冒险。

【讨论】:

    【解决方案2】:

    使用 Cygwin 的依赖系统,你应该重新安装,取消选择每个包,然后选择 Perl、make 和 gcc,它只会安装所需的包。我认为一些依赖包只是推荐而不是必需的,但是 Cygwin 安装程序方便地将它们标记为推荐。

    【讨论】:

    • 我尝试了标准设置。我需要猜测我应该选择什么的问题。我在互联网上没有找到任何可能的安装集的明确描述
    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多