我可以编写Cygwin安装脚本来包含某些软件包吗?

Gab*_*art 30 installation cygwin

我经常安装cygwin,让进程自动化会很方便.具体来说,我希望能够提前指定我要安装的软件包,这样我就不必在安装时记住它们.有没有办法做到这一点?

And*_*man 45

是的你可以.假设您尚未安装Cygwin,则bash不可用,因此您必须使用CMD脚本.这是一个例子:

setup-x86.exe ^
--quiet-mode ^
--packages ^
aria2,^
atool,^
autoconf,^
...
xmlstarlet,^
zip
Run Code Online (Sandbox Code Playgroud)

并将其他包添加到列表中.^每行末尾的caret()字符是CMD脚本中的行继续符.软件包名称列表以逗号分隔,这是该--packages选项所期望的,尽管没有记录.

您可以运行setup-x86.exe --help或查看Cygwin常见问题解答,以了解有关安装的可用命令行选项.

如果您将此脚本命名为setup.bat或setup.cmd,并将其放在与setup-x86.exe相同的目录中,那么您可以运行它来一键安装Cygwin并包含所有软件包想.

另请注意,您必须指定全新安装的选项--site--root选项,否则它将退出"安静模式"并提示用户.

  • 作为一个梦想工作,这个oneliner,保存cygwin安装恢复/复制脚本:{echo -e"setup.exe ^ \n - quiet-mode ^ \n - packages ^"; cygcheck -c | awk'{print $ 1",^"; }'; } | u2d> cygwin_restore.bat; (10认同)
  • @Anthon:它适用于我的安装版本.在新的安装中,你应该第一次删除`--quiet-mode`,以便选择一个镜像.如果要安装到个人文件空间,添加`--no-admin`也会避免UAC提示. (3认同)
  • 我认为`--packages`*的参数可能*需要*逗号分隔*不是空格分隔的,例如`--packages foo,bar,baz,quz`*not*`--packages foo,bar,baz ,qux`或`--packages foo bar baz qux` (3认同)

Gab*_*art 7

apt-cyg与我想要的类似,虽然它需要预先存在的cygwin安装以及一些非默认包.