![Cygwin 的最小软件包列表是什么?](https://linux22.com/image/1441271/Cygwin%20%E7%9A%84%E6%9C%80%E5%B0%8F%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%88%97%E8%A1%A8%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
这Cygwin 常见问题解答提到第一次安装时,安装 exe 将下载“所有可用软件包的最小子集”。哪些软件包属于这个子集?
我正在一台没有互联网接入的计算机上安装 Cygwin,所以我需要知道要下载哪些软件包,因为我无法在setup.exe
有互联网的计算机上运行它。
答案1
以下是 Cygwin“基础”安装的最小软件包列表:
_autorebase
_update-info-dir
alternatives
attr
base-cygwin
base-files
bash
bzip2
ca-certificates
coreutils
cygutils
cygwin
dash
editrights
file
findutils
gawk
gcc
gdbm
getent
gettext
gmp
grep
groff
gzip
hostname
ipc-utils
less
libargp
libffi
libiconv
libpipeline
libtasn1
login
lynx
man-db
mintty
mpfr
ncurses
openssl
p11-kit
pcre
popt
readline
rebase
run
sed
tar
texinfo
tzcode
util-linux
vim
which
xz
zlib
总大小约为 1.4 GB。
答案2
我一直在尝试使用 Cygwin 进行“基本”的最小安装。我发现安装 grep、gawk、sed 和类似工具等实用程序依赖于 cygwin、base-Cygwin 以及有时不需要的工具,如 bash、coreutils 等,我还没有尝试完全理解为什么存在这种依赖关系,但这不是我的目标。我只想安装工具及其所需的 dll,并开始检查 Cygwin 包。我发现不使用 Cygwin 提供的 setup.exe 是完成最小 Cygwin 安装的另一种方法。这就是我完成它的方法。
- 使用 Cygwin 提供的 setup.exe 下载所有软件包 - 仅下载而不安装。
- 下载成功完成后,可以在 x86/release 或 x86_64/release 目录下找到 zlib、gawk、grep、libiconv 等单个软件包。
- 每个包都使用工具“xz”或“bzip”进行“tar”和压缩,并存储在相应的目录中。
要安装 sed 或 gawk 等特定工具,只需提取该工具可执行文件及其依赖项(.dll)
在尝试以下操作之前,请确保您拥有 7z.exe、xz.exe、bzip2 或其他能够解压 .xz 或 bzip 档案的工具
安装 gawk 示例如下:
- 使用以下命令从 gawk-4.1.3-1.tar.xz 存档中提取 gawk.exe - 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf -
- 完成后,您应该在 release/gawk 文件夹下的子文件夹中找到 gawk.exe,通常是 usr/bin
- 找到 gawk 的依赖项 - 您可以通过几种方式来完成此操作。
检查 x86 或 x86_64 文件夹中的 Cygwin setup.ini 文件。查找字符串“@ gawk”,在此行之后的行中,您应该会找到列出依赖项的“requires:”行。
我的读法如下 - “需要:bash cygwin libgmp10 libintl8 libmpfr4 libreadline7”
由于我们有 Windows 命令 shell,因此运行 gawk 时,bash 不是必需的。(bash 包含 gawk 所需的其他几个 dll。但是,这会导致安装更多不必要的文件)。其他依赖项包含 gawk 运行所需的文件。使用 7z 或 xz 等工具将上述每个包提取到单独的文件中。
提取所有依赖项后,将您需要的工具(grep / sed / gawk)复制到一个文件夹以及所有依赖的.dll。现在您应该能够使用基本 cygwin 安装中所需的最少的.dll 集来运行您的工具。
注意:仅提取 setup.ini 中列出的每个工具的依赖项可能还不够。有时,您可能需要执行/运行该工具才能发现需要更多 dll。
还有其他方法可以找出 exe 所需的 dll - 你可以使用 MS 的 dumpbin 或 dependency walker、ndepends 或类似工具来查找依赖 dll 的列表
咨询 -https://stackoverflow.com/questions/362560/how-do-i-detect-the-dlls-required-by-an-application https://stackoverflow.com/questions/475148/how-do-i-find-out-which-dlls-an-executable-will-load
我还通过运行该工具并从所需的包中提取逐一列出的缺失的 dll 来强制获取依赖的 dll 信息。
当你运行 exe 时,如果出现缺少 .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 重新定位,这里我就不多说了。
答案3
为什么不直接将其安装到 USB 驱动器,然后将文件从那里复制到您想要安装它的计算机上呢?此常见问题解答表示只需要设置文件的安全权限,以便计算机上的每个人都可以访问这些文件。如果您将其安装到其他位置,然后将整个目录复制到新计算机上,则应该工作正常。(注意:我自己还没有测试过。)