在Cygwin软件包中是否有类似于Debian上的apt-get
或RedHat上的yum
的工具,允许我通过命令行安装组件?
在Cygwin软件包中是否有类似于Debian上的apt-get
或RedHat上的yum
的工具,允许我通过命令行安装组件?
Cygwin的安装程序接受命令行参数以从命令行安装软件包。
例如,使用setup-x86.exe -q -P packagename1,packagename2
来进行无需GUI交互的软件包安装(“无人值守安装模式”)。
(需要根据情况选择使用setup-x86.exe
或setup-x86_64.exe
。)
请参阅https://cygwin.com/packages/获取软件包列表。
为了获得更便捷的安装程序,您可能想要使用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
现在apt-cyg
已安装。以下是安装某些软件包的几个示例。apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget,lynx,setup-x86.exe,setup-x86_64.exe
未被识别为内部或外部命令。现在怎么办?安装了 cygwin
后,我应该做什么第一件事?我对所有这些步骤感到非常困惑。有什么建议吗? - AIon在“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
那么花哨,但在大多数情况下可以解决问题。你也可以在关闭Cygwin后从 cmd.exe
运行此命令。 - the更新:由于版权问题(DMCA下架),该软件库最近已被禁用。 看起来 软件库的所有者在自己的软件库上发布了DMCA下架申请,并创建了一个名为Sage的新项目(见下文)。
对我来说,这是最好的选择。因为它是最近的其中之一。它不使用Cygwin的 setup.exe
,而是重新实现了setup.exe
的功能。它可以正确地在两个平台上运行- x86和x86_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
还有各种不同功能的分支。
另一个以shell脚本实现的软件包管理器。我没有尝试过,但它看起来确实不错。
它可以在存储库中搜索软件包,列出类别中的软件包,检查依赖关系,列出软件包文件等。它具有其他软件包管理器所没有的功能。
这是原始cyg-apt的分支版本,改进和修复了一些bug。它具有相当多的功能,并且是用Python实现的。安装使用make
完成。
如果您使用Chocolatey安装Cygwin,您可以安装包cyg-get,它实际上是一个简单的PowerShell包装器,围绕Cygwin的setup.exe
构建而成。
它还有一个命令行模式。此外,它允许您一次性升级所有已安装的软件包(就像Debian基于Linux的apt-get upgrade
一样)。
使用示例:
setup-x86_64.exe -q --packages=bash,vim
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
然后你就可以使用以下命令安装Vim软件包:
cyg-get vim
首先,下载安装程序: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
例如。
# install vim
cygwin vim
# see other options
cygwin --help
我需要一个类似于apt-get --print-uris
的解决方案,但是很遗憾,apt-cyg无法实现此功能。下面是一个解决方案,它让我只下载我需要的软件包及其依赖项,并将它们复制到目标位置以进行安装。以下是一个bash脚本,用于将apt-cyg
的输出解析为URI列表:
#!/usr/bin/bash
package=$1
depends=$( \
apt-cyg depends $package \
| perl -ne 'while ($x = /> ([^>\s]+)/g) { print "$1\n"; }' \
| sort \
| uniq)
depends=$(echo -e "$depends\n$package")
for curpkg in $depends; do
if ! grep -q "^$curpkg " /etc/setup/installed.db; then
apt-cyg show $curpkg \
| perl -ne '
if ($x = /install: ([^\s]+)/) {
print "$1\n";
}
if (/\[prev\]/) {
exit;
}'
fi
done
以上代码将输出需要下载的软件包路径,相对于cygwin镜像的根目录,省略已安装的任何软件包。要下载这些软件包,我将输出写入一个名为cygwin-packages-list
的文件,然后使用wget下载:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
setup.ini
复制到已下载文件的目录中(否则安装程序不知道哪个是哪个)。这个问题虽然老,但仍然很有关联性。以下是我今天(6/26/16)实现的方法。
从Bash Shell中:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
或curl
可能是更好的工具。 (而且个人建议将其安装在$PATH
中的其他目录中,而不是/bin
中。) - Keith Thompsonwget
,步骤如下:choco install cyg-get
然后:
cyg-get wget
# define a string to search
export to_srch=perl
# get html output of search and pick only the cygwin package names
wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64" | \
perl -l -ne 'm!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2'
# and install
# install multiple packages at once, note the
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "<<chosen_package_name>>"
-P packagename=version
是一个新功能。只有-P packagename
已经被接受了很长时间(而且仍然是这样)... - jturney