最小的Cygwin安装+ Perl + Gcc

时间:2013-04-08 11:18:22

标签: cygwin

我希望将特定的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时应该选择哪些软件包?

2 个答案:

答案 0 :(得分: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'和 使用工具'xz'或bzip压缩并存储在各自的 目录。
  3. 安装像sed或gawk这样的特定工具 需要做的,就是提取工具可执行文件及其 依赖项(.dll)
  4. 在尝试以下操作之前,请确保您拥有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 | tar xvf -
    2. 一旦完成,你应该在子文件夹中找到gawk.exe,通常在release / gawk文件夹下找到usr / bin
    3. 找到gawk的依赖关系 - 你可以通过几种方式实现这一点。
    4. 检查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或依赖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的包的名称。

      最终,我最终只使用了我需要的工具和dll进行了简单的cygwin安装。

      示例: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重新编译,我不会冒险进入这里。

答案 1 :(得分:0)

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