通过Cygwin命令行升级和安装软件包?


113

我是使用Cygwin的盲人计算机用户。

安装程序不是很容易访问:升级,安装和删除特定的软件包非常困难,因为您必须使用模拟的鼠标按键来单击和滚动。

有没有办法手动安装/升级软件包或通过命令行安装/升级软件包?

Answers:


121

安装apt-cyg

lynx -source https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

之后,您可以通过运行以下命令安装包“ lynx”,包括依赖项:

apt-cyg install lynx

4
信息库尚未移动:再次通过transcode-open / apt-cyg 发出了DMCA投诉。顺带一提,Github用户svnpenn同时创建了一个名为“ sage”的叉子,声称是其继承者
Lucas Cimon


我必须使用chmod + x apt-cyg使其可执行(以防万一,它可以帮助某人)
Pedro A

23

由于某些人正确地指出apt-cyg自身需要wget并为了获得apt-cyg您的需要wget,因此存在仅bash解决方案以wget纯bash 进行引导。

在薄荷bash外壳中创建如下函数:

function __wget() {
    : ${DEBUG:=0}
    local URL=$1
    local tag="Connection: close"
    local mark=0

    if [ -z "${URL}" ]; then
        printf "Usage: %s \"URL\" [e.g.: %s http://www.google.com/]" \
               "${FUNCNAME[0]}" "${FUNCNAME[0]}"
        return 1;
    fi
    read proto server path <<<$(echo ${URL//// })
    DOC=/${path// //}
    HOST=${server//:*}
    PORT=${server//*:}
    [[ x"${HOST}" == x"${PORT}" ]] && PORT=80
    [[ $DEBUG -eq 1 ]] && echo "HOST=$HOST"
    [[ $DEBUG -eq 1 ]] && echo "PORT=$PORT"
    [[ $DEBUG -eq 1 ]] && echo "DOC =$DOC"

    exec 3<>/dev/tcp/${HOST}/$PORT
    echo -en "GET ${DOC} HTTP/1.1\r\nHost: ${HOST}\r\n${tag}\r\n\r\n" >&3
    while read line; do
        [[ $mark -eq 1 ]] && echo $line
        if [[ "${line}" =~ "${tag}" ]]; then
            mark=1
        fi
    done <&3
    exec 3>&-
}

现在,您几乎可以像wget一样使用它:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg

打扰了,@ moreaki,但是我从apt-cyg中看不到一件事:在经典的CygWin Windows安装程序中,我可能/必须指定存储库/软件包的位置,是否是(许多)ftp / http下载中的一个网站或本地驱动器(在我的计算机中)。我在官方googlecode网站上看不到这种选项。从哪里apt-cyg下载软件包?
Sopalajo de Arrierez 2014年

请原谅我迟来的答复。我只是在官方googlecode网站上浏览了apt-cyg的代码,在我看来,当您未使用命令行选项指定镜像时http://mirrors.kernel.org/sourceware/cygwin,所选择的下载网站似乎是如中findworkspace()所指定的-m。如果指定命令行,则将镜像服务器信息写入/etc/setup/last-mirror
Moreaki 2014年

apt-cyg安装不再依赖于wget,所以这可能不再重要了吗?他们在网站上使用lynx(似乎内置在cygwin中?)。
akauppi 2015年

@steven进行大规模修改的原因是什么?本身几乎是一个单独的答案
随机

1
然后投票并提供竞争性答案。如果您是apt-cyg的维护者,则您的个人资料或编辑摘要中或任何可见的地方都没有指示,暗示着这种权威或背景会随着这些类型的编辑而大量涌入
随机

21

官方的apt-CYG安装方法是:

lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

两步比三步好。然后:

apt-cyg install nano

顺便说一句,要使其工作,您将需要安装wgettargawkbzip2才能使用apt-cyg。除wget外,其他均带有默认的Cygwin安装。


2
对于64位的Cygwin,svn并且apt-cyg可以是破碎的。所以,你可能需要使用three stepwget的方法来安装apt-cyg,然后替换$mirror/setup...$mirror/x86_64/setup...的线98和apt-CYG文件105。
sagunms

17

老问题了,但对于谷歌到这里的其他人:官方设置有命令行参数,使我可以准备简单的* .bat脚本-只需将以下行放入“ install-pkg.bat”中,然后将该文件放入您的根目录(例如C:\ cygwin):

setup-x86.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode --root "%cd%" --packages %*

您需要下载并将http://www.cygwin.com/setup-x86.exe(32位)或http://www.cygwin.com/setup-x86_64.exe(64位)放入同一目录。现在您要做的就是安装软件包:

install-pkg packagename

积极:正式安装,对于任何包装,应始终有效。负面:当前(六月/ 2015)官方设置需要管理员权限,即使实际上并不需要(例如系统文件夹之外的根目录)。


1
很好的答案,因为它是任何Cygwin安装中已经拥有的工具;但是,似乎无法阻止它更新所有已安装的软件包?如果您只想安装一个新软件包,这将很烦人。换句话说,没有等效于图形setup.exe的“保持”选项的命令行
golimar 2012年

1
注意setup.exe现在称为setup-x86.exe-或取决于CPU位的变体。
ErichBSchulz 2014年

链接已断开,现在是:cygwin.com/faq/faq.html#faq.setup.cli您可以在答案中对其进行编辑吗?谢谢
Benj 2015年

如果使用--no-admin开关(与相同-B),则不需要管理员权限。
cdlvcdlv

13

Cygwin的setup.exe(至少在1.7“ beta”版本中)具有内置的“无人值守”模式。将您的setup.exe快捷方式拖放到命令窗口中(或准备使用开关运行它),并添加-q无人参与模式,后跟-P逗号分隔的程序包名称。因此,对我来说,这安装了lynx:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx

嘿,它可以工作,但是如果我想在安装时添加一些软件包,该怎么办?
约翰尼德普(Johnydep)2012年

1
注意setup.exe现在称为setup-x86.exe-或取决于CPU位的变体。
ErichBSchulz 2014年

7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

要么

setup-x86 -nq -s http://box-soft.com -P curl -P git -P make

这将安装cURL,git和make,在安静模式下没有快捷方式。



0

有一个鸡<=>鸡蛋问题,答案被接受。如果没有安装wgetlynx在初始安装期间,则不能使用apt-cyg。这是我的安装方式,wget以便可以使用apt-cyg。(它使用cygwin安装程序exeCLI功能。)

# check to see if you are running 64 bit cygwin
$ uname -a
CYGWIN_NT-10.0 WINDOWS-ABMESEI 2.6.0(0.304/5/3) 2016-08-31 14:32 x86_64 Cygwin

# if you are not using 64 bit, get http://www.cygwin.com/setup-x86.exe instead of...
$ curl -o cygwin-setup.exe http://www.cygwin.com/setup-x86_64.exe
$ chmod +x cygwin-setup.exe

# now you are ready to use it according to: https://cygwin.com/faq/faq.html#faq.setup.cli
$ cygwin-setup.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode --packages wget

-1

对于至少不需要安装后配置的软件包,我只是从cygwin根目录'/'取消了它们的保护。我需要一个较旧的Subversion版本(1.7.14),它已经超出了安装程序处理的两个版本。

另一个优点是,该程序包不在cygwin程序包管理领域之内,因此,如果保留默认值,则在某种特定的黑名单中不会自动使用最新的程序包进行更新。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.