Can I script a Cygwin install to include certain packages?
我安装 cygwin 的频率足够高,这样可以很方便地自动化该过程。具体来说,我希望能够提前指定要安装的软件包,这样我就不必在安装时记住它们。有没有办法做到这一点?
是的,你可以。假设你还没有安装 Cygwin,bash 不可用,所以你必须使用 CMD 脚本。这是一个例子:
1 2 3 4 5 6 7 8 9
| setup-x86.exe ^
--quiet-mode ^
--packages ^
aria2,^
atool,^
autoconf,^
...
xmlstarlet,^
zip |
并将其他包添加到列表中。每行末尾的插入符号 (^) 字符是 CMD 脚本中的行继续符。包名称列表以逗号分隔,这是 --packages 选项所期望的,尽管没有记录。
您可以运行 setup-x86.exe --help,或查看 Cygwin 常见问题解答,以了解可用的安装命令行选项。
如果您将此脚本命名为 setup.bat 或 setup.cmd,并将其与 setup-x86.exe 放在同一目录中,则可以运行它以一键安装 Cygwin,其中包含所有你想要的包。
还要注意,您必须为全新安装指定 --site 和 --root 选项,否则它将退出"安静模式"并提示用户。
-
工作就像一个梦想会添加,这个oneliner,它保存了cygwin安装恢复/复制脚本:{ echo -e"setup.exe ^\\
--安静模式^\\
--packages ^" ; cygcheck -c | awk '{ print $1",^"; }' ; } | u2d >cygwin_restore.bat;
-
这是如何选择镜子的?它还在哪里安装cygwin?
-
太好了,谢谢。有没有办法指定我想安装哪个版本的软件包,例如 rsync 3.1.0-1 而不是 rsync 3.0.9-1?
-
不是我能说的。您可以尝试将包指定为例如rsync=3.1.0-1,或者在 Cygwin 列表中询问。
-
这不再起作用(2015-05-23 版本 2.870)。干净的 Windows 安装,下载了 .exe,提供了上面的命令行。短暂的闪光,没有下载,没有安装。
-
@Anthon:它适用于我的安装版本。在新安装中,您可能应该在第一次删除 --quiet-mode 以选择镜像。如果您要安装到您的个人文件空间,添加 --no-admin 也将避免 UAC 提示。
-
我认为 --packages 的参数可能需要用逗号分隔而不是空格分隔,例如--packages foo,bar,baz,quz 不是 --packages foo, bar, baz, qux 或 --packages foo bar baz qux
-
是的,逗号,没有空格。这里的解决方案可以做到这一点,但使用续行使其更易于阅读。
apt-cyg 与我正在寻找的类似,尽管它需要预先存在的 cygwin 安装和一些非默认软件包。
-
github.com/kou1okada/apt-cyg/issues 是 apt-cyg 在 2017-2020 年支持的分支。
我不知道您是否可以编写脚本,但我找到了有关制作自定义包目录和安装程序的"操作方法"。这样,您可以拥有所需的所有软件包并预先选择安装程序。
你可以在这里找到那篇文章。
- 不完全是我想要的,但这会起作用。我可以将它与 apt-cyg 结合使用。
-
由于链接已断开,因此此答案不是很有用