Command line 如何从命令行安装cygwin组件?
Cygwin软件包中是否有类似于Debian上的Command line 如何从命令行安装cygwin组件?,command-line,cygwin,Command Line,Cygwin,Cygwin软件包中是否有类似于Debian上的apt get或redhat上的yum的工具,允许我从命令行安装组件?在“setup.exe”安装程序中没有专门提供 apt-get的功能。但是,有一个命令行包安装程序 对于Cygwin来说,它可以单独下载,但它并不完全稳定 依赖于变通办法 apt cyg: 查看项目的“问题”选项卡以查看已知问题。Cygwin的安装程序接受从命令行安装软件包 e、 g.setup-x86.exe-q-p packagename1、packagename2在没有任何
apt get
或redhat上的yum
的工具,允许我从命令行安装组件?在“setup.exe”安装程序中没有专门提供
apt-get的功能。但是,有一个命令行包安装程序
对于Cygwin来说,它可以单独下载,但它并不完全稳定
依赖于变通办法
apt cyg:
查看项目的“问题”选项卡以查看已知问题。Cygwin的安装程序接受从命令行安装软件包
e、 g.setup-x86.exe-q-p packagename1、packagename2
在没有任何GUI交互的情况下安装软件包(“无人值守安装模式”)
(请注意,您需要根据需要使用setup-x86.exe
或setup-x86_64.exe
)
有关软件包列表,请参阅。有关更方便的安装程序,您可能需要使用
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
存在一些脚本,可以用作Cygwin的简单包管理器。但重要的是要知道,由于……嗯……Windows,它们总是相当有限的 安装或删除软件包很好,Cygwin的每个软件包管理器都可以这样做。但是更新是一件痛苦的事情,因为Windows不允许覆盖当前正在运行的可执行文件。因此,您无法更新Cygwin DLL或任何包含Cygwin自身当前运行的可执行文件的包。页面上还有此注释: “没有功能更全面的软件包管理器的基本原因是 这样的程序需要完全访问Cygwin的所有POSIX功能。 然而,这在一个没有Cygwin的环境中很难提供,例如 第一次安装时存在。此外,Windows不容易允许 覆盖正在使用的可执行文件,以便安装新版本的Cygwin 当程序包管理器使用DLL时出现问题。“ Cygwin的安装程序使用Windows注册表覆盖正在使用的可执行文件 此方法需要重新启动Windows。因此,最好是关闭 更新软件包之前,所有Cygwin进程都将启动,因此您无需重新启动 您的计算机将实际应用更改。安装新软件包 应该完全没有任何麻烦。我不认为任何包经理 除了Cygwin的
setup.exe
实现了覆盖正在使用的文件的任何方法之外,
因此,如果它不能覆盖它们,那么它就会失败
Cygwin的一些包管理器: 更新:由于版权问题,存储库最近被禁用()。它是存储库的所有者在他自己的存储库上发布了DMCA,并创建了一个名为Sage的新项目(见下文) 最适合我的。只是因为这是最近的一次。它没有使用Cygwin的
setup.exe
,而是重新实现了setup.exe
的功能。它在x86和x86_64这两种平台上都能正常工作。有很多叉子或多或少都有附加功能。例如,是改进版之一,这真的很棒
apt cyg只是一个shell脚本,没有安装。只需下载(或克隆存储库),使其可执行并将其复制到路径的某个位置:
chmod+x apt cyg#设置可执行位
mv apt cyg/usr/local/bin#移动到路径的某处
#…并使用它:
apt cyg安装vim
也有不同的功能
另一个作为shell脚本实现的包管理器。我没有试过,但实际上看起来不错 它可以在存储库中搜索包,在类别中列出包,检查依赖项,列出包文件,等等。它具有其他包管理器所不具备的功能
放弃原来的叉与改进和错误修复。它有很多特性,并且是用Python实现的。使用
make
进行安装
如果使用Chocolate安装Cygwin,则可以安装cyg get软件包,该软件包实际上是Cygwin在PowerShell中编写的
setup.exe
的简单包装
Cygwin的setup.exe 它也有一个。此外,它允许您一次升级所有已安装的软件包(正如
apt get upgrade
在基于Debian的Linux上所做的那样)
示例用法:
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
通常在安装软件包之前,必须知道其确切名称:
# 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>>"
#定义要搜索的字符串
导出到_srch=perl
#获取搜索的html输出并仅选择cygwin包名称
wget-qO-https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64英寸\
perl-l-ne'm!(.*?\s+\-(.*?\:(.*?)!;打印$2'
#安装
#一次安装多个软件包,请注意
setup-x86_64.exe-q-shttp://cygwin.mirror.constant.com -P“
我想要一个类似于apt-get--print-uri的解决方案,但不幸的是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 m的路径
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
choco install cyg-get
cyg-get wget
# 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