2013-04-08 176 views
1

我想将特定的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安装+ Perl + Gcc

+0

我很确定Cygwin安装写入Windows注册表。如果是这样,我不认为一个zip文件存档将会正常工作。 – 2013-04-08 13:00:47

+0

@Mike - 如果在另一台Windows PC上将c:\ cygwin复制到c:\ cygwin,则所有cygwin平台都能正常工作。唯一需要的是将c:\ cygwin \ bin添加到PATH环境 – Sergey 2013-04-14 08:06:49

回答

0

对于Cygwin的依赖系统,您只需要进行新的安装,取消选择每个软件包,然后选择Perl,make和gcc,它将只安装所需的软件包。我认为一些相关的软件包只是推荐的,并不是必需的,但Cygwin安装程序可方便地将它们标记为推荐的。

+0

我尝试了标准设置。我需要猜测我应该选择什么的问题。我还没有在互联网上找到任何可能的安装设置的明确说明 – Sergey 2013-04-14 08:09:09

1

我一直在试验Cygwin试图获得“最基本的安装”。我发现安装像grep,gawk,sed和类似工具的工具对cygwin,base-Cygwin和有时候不需要的工具(如bash,coreutils等)有依赖性,

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

这就是我如何完成它。

  1. 只从Cygwin镜像 下载所需的软件包使用ftp或http的网站。或者,您可以使用Cygwin提供的setup.exe 下载所有软件包 - 仅下载和 不安装。
  2. 一旦下载成功完成后,个别 包zlib的一样,GAWK,grep的,libiconv的是在 的x86 /释放或x86_64/release目录下找到每个包“tar'red和 使用工具压缩‘XZ’或bzip并存储在相应的 目录中。
  3. 要安装像sed一个特定的工具或呆子,那 需求都做,是提取工具可执行文件及其 依赖文件(.dll)

在尝试下面,请确保您有像7z.exe,xz.exe,bzip2的或其它的能够解压缩的.xz或存档的bZIP

下面安装GAWK示例的工具:从GAWK-4.1

  1. 提取gawk.exe。 3-1.tar.xz档案e使用命令 - 7z.exe e -so gawk-4.1.3-1.tar.xz |焦油xvf命令 -
  2. 一旦做到这一点,你应该在一个子文件夹中找到gawk.exe通常,释放/ GAWK文件夹
  3. 下USR/bin中查找gawk的依赖关系 - 你可以在一对夫妇的方式做到这一点。

检查在x86或x86_64文件夹中找到的Cygwin setup.ini文件。 查看字符串'@ gawk',并在该行后面的行中找到列出依赖关系的“requires:”行。 我读到这样的 - “要求:打击cygwin libgmp10 libintl8 libmpfr4 libreadline7”

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

使用诸如7z或xz之类的工具将上述每个软件包提取到单个文件中。

所有的依赖提取完成后,你需要的工具(S)(的grep/SED/GAWK)复制到文件夹和所有相关的.dll

您现在应该能够用最小的运行工具一套赤裸裸的cygwin安装中需要的.dll文件。

注意:这可能是不够的,只是提取的setup.ini每个工具中列出的依赖关系。有时,您可能需要执行/运行该工具以发现需要更多的dll。

有找出由一个.exe所需的dll文件的其他方式 - 您可以使用DUMPBIN从MS或依赖学步车,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安装程序也会重新建立基础,我不会冒险进入这里。