如何从命令行安装cygwin组件?

vy3*_*y32 166 command-line cygwin

在Cygwin包中是否有类似于apt-getDebian或yumredhat的工具允许我从命令行安装组件?

sag*_*nms 131

对于更方便的安装程序,您可能希望 apt-cyg用作包管理器.它的语法类似 apt-get,这是一个加号.为此,请按照上述步骤操作,然后使用Cygwin Bash执行以下步骤

wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

现在apt-cyg已经安装了.以下是安装某些软件包的几个示例

apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
Run Code Online (Sandbox Code Playgroud)

  • 显然使用setup-x86_64.exe -q -P wget,tar,qawk,bzip2,subversion,vim为64位窗口. (15认同)
  • 需要在wget命令中添加--no-check-certificate.否则,精湛. (2认同)
  • 默认情况下,cygwin 不安装 wget,这意味着这需要通过手动和非编程安装进行引导。 (2认同)

jtu*_*ney 130

Cygwin的安装程序接受命令行参数以从命令行安装软件包.

例如,setup-x86.exe -q -P packagename1,packagename2在没有任何GUI交互的情况下安装软件包('无人参与安装模式').

(请注意,您需要使用setup-x86.exesetup-x86_64.exe酌情使用.)

有关包列表,请参见http://cygwin.com/packages/.

  • 太好了!setup.exe现在称为setup-x86.exe - 或者取决于cpu位的变体.另请参阅此处的软件包列表http://cygwin.com/packages/ (5认同)
  • 另外,要指定多个包,请用逗号分隔它们.例如在DOS中,输入`setup-x86_64 --packages ="openssh,python"` (2认同)

小智 97

'setup.exe'安装程序中没有专门提供apt-get功能的工具.但是,Cygwin的命令行软件包安装程序可以单独下载,但它并不完全稳定,并且依赖于变通方法.

apt-cyg:http://github.com/transcode-open/apt-cyg

查看项目的"问题"选项卡以查看已知问题.

  • 从另一个答案:`setup-x86.exe -q -P packagename1,packagename2`.不像"apt-get"甚至"apt-cyg"那样花哨,但在大多数情况下它都可以解决问题.你也可以从`cmd.exe`(关闭Cygwin之后)运行它. (8认同)
  • @ vy32:因为你没有帮助他们成熟?:)他们不能写自己.有人必须对它们进行研究.而且由于它们的可用性非常有限(要覆盖当前在Windows上使用的文件,你必须先关闭Cygwin,所以不可能在封闭的Cygwin中执行任何包管理器:),没有多少人感兴趣. (4认同)
  • 由于原始项目已死,因此建议您查看此(截至本文发表时)活动的fork:https://github.com/kou1okada/apt-cyg (3认同)
  • @Steve,Dawid的回答说它转向了"圣人".http://stackoverflow.com/a/23143997/80772 (2认同)

Daw*_*žan 48

存在一些脚本,可以用作Cygwin的简单包管理器.但重要的是要知道,他们总是会非常有限,因为......呃...... Windows.

安装或删除软件包很好,Cygwin的每个软件包管理器都可以做到这一点.但更新很痛苦,因为Windows不允许您覆盖当前正在运行的可执行文件.所以你不能更新例如Cygwin DLL或任何包含Cygwin本身正在运行的可执行文件的包.Cygwin安装页面上还有这个注释:

"没有更全功能的包管理器的基本原因是这样的程序需要完全访问Cygwin的所有POSIX功能.但是,在Cygwin免费环境中很难提供,例如首先存在此外,Windows不容易允许覆盖正在使用的可执行文件,因此在程序包管理器使用DLL时安装新版本的Cygwin DLL是有问题的."

Cygwin的设置使用Windows注册表覆盖正在使用的可执行文件,此方法需要重新启动Windows.因此,最好在更新软件包之前关闭所有Cygwin进程,这样您就不必重新启动计算机来实际应用更改.安装新包装应该完全没有任何麻烦.我不认为除了Cygwin之外的任何包管理器都会setup.exe实现覆盖正在使用的文件的任何方法,所以如果它不能覆盖它们就会失败.


Cygwin的一些包管理器:

的apt-CYG

更新:由于版权问题(DMCA删除),最近禁用了存储库.它看起来像仓库的所有者发行的DMCA删除自己的信息库,并创建了一个名为新项目贤者(参见下文).

对我来说最好的一个.仅仅因为它是最近的一个.它不使用Cygwin setup.exe,而是重新实现,是什么setup.exe.它适用于两个平台 - x86x86_64.有很多叉子具有或多或少的附加功能.例如,kou1okada fork是改进版本之一,非常棒.

apt-cyg只是一个shell脚本,没有安装.只需下载它(或克隆存储库),使其可执行并将其复制到PATH:

chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim
Run Code Online (Sandbox Code Playgroud)

还有一堆具有不同功能的叉子.


智者

另一个包管理器实现为shell脚本.我没试过,但实际上看起来不错.

它可以搜索存储库中的包,列出类别中的包,检查依赖项,列出包文件等.它具有其他包管理器没有的功能.


CYG-容易

被放弃的原始叉子 CYG-容易有改进和错误修正.它有很多功能,并在Python中实现.使用安装make.


Chocolatey的cyg-get

如果你使用Chocolatey来安装Cygwin,你可以安装cyg-get包,它实际上是围绕setup.exe用PowerShell编写的Cygwin的简单包装器.


Cygwin的setup.exe

它还有一个命令行模式.此外,它允许您一次升级所有已安装的软件包(与apt-get upgrade基于Debian的Linux一样).

使用示例:

setup-x86_64.exe -q --packages=bash,vim
Run Code Online (Sandbox Code Playgroud)

您可以创建别名以便于使用,例如:

alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"

然后,您可以使用以下命令安装Vim包:

cyg-get vim

  • 在过去的一两年里,"sage"是其最活跃的贡献者的"apt-cyg"的一个分支(Steven Penny).看来今年早些时候,他与最初的"apt-cyg"作者(Stephen Jungels)有一些分歧,并在分配项目时发布了DMCA删除.由于Jungels(又名Transcode)可验证地是该项目的原始作者,GitHub很快就恢复了原始项目.目前,这两个项目都可用 - 尽管原始项目自拆分以来没有任何新的代码更新.这真是一个混乱的局面. (3认同)

Jas*_*son 6

首先,从以下位置下载安装程序:https : //cygwin.com/setup-x86_64.exe(Windows 64位),然后:

# move installer to cygwin folder
mv C:/Users/<you>/Downloads/setup-x86_64.exe C:/cygwin64/

# add alias to bash_aliases
echo "alias cygwin='C:/cygwin64/setup-x86_64.exe -q -P'" >> ~/.bash_aliases
source ~/.bash_aliases

# add bash_aliases to bashrc if missing
echo "source ~/.bash_aliases" >> ~/.profile
Run Code Online (Sandbox Code Playgroud)

例如

# install vim
cygwin vim

# see other options
cygwin --help
Run Code Online (Sandbox Code Playgroud)