Atualizando e instalando pacotes através da linha de comando Cygwin?


113

Sou um usuário de computador cego que usa Cygwin.

O programa de instalação não é muito acessível: atualizar, instalar e remover pacotes específicos é bastante difícil, pois é necessário usar as teclas simuladas do mouse para clicar e rolar.

Existe uma maneira de instalar / atualizar manualmente pacotes ou instalá-los / atualizá-los através da linha de comando?

Respostas:


121

Instale o apt-cyg :

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

Depois disso, você poderá instalar o pacote "lynx", incluindo as dependências, executando:

apt-cyg install lynx

4
O repositório não foi movido : uma reclamação DMCA foi emitida contra transcode-open / apt-cyg. Aliás, Github svnpenn usuário criou um fork chamado "sábio", ao mesmo tempo, afirmando ser seu sucessor
Lucas Cimon


Eu tive que chmod + x apt-Cyg para que seja executável (apenas no caso de ajuda de alguém)
Pedro A

23

Como algumas pessoas afirmaram corretamente que apt-cygprecisam do wget e, para que apt-cygvocê precise do wget, existe uma solução apenas do bash para inicializar wgetno bash puro.

Crie uma função como esta no seu shell de hortelã:

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>&-
}

Agora você pode usá-lo quase como o wget:

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

Com licença, @moreaki, mas há algo que não consigo entender no apt-cyg: no instalador clássico do CygWin para Windows, posso / devo especificar a localização dos repositórios / pacotes, seja um dos (muitos) downloads de ftp / http sites ou unidade local (no meu computador). Não vejo essa opção no site oficial do googlecode. De onde apt-cygos pacotes são baixados?
Sopalajo de Arrierez

Perdoe minha resposta tardia. Acabei de ler o código do apt-cyg no site oficial do googlecode e, para mim, parece que o site de download selecionado parece ser http://mirrors.kernel.org/sourceware/cygwin, conforme especificado em findworkspace(), quando você não especificou o espelho usando a opção de linha de comando -m. Se você especificar a linha de comando, as informações do servidor espelho serão gravadas /etc/setup/last-mirror.
Moreaki 19/06/2014

A instalação do apt-cyg não depende mais do wget, então nada disso provavelmente importa mais? Eles usam o lynx (que parece estar embutido no cygwin?) Em seu site.
akauppi

@steven Qual é o motivo da edição por atacado que muda mais do que uma parte substancial? É praticamente uma resposta separada
aleatória

1
Em seguida, faça voto negativo e forneça uma resposta competitiva. Se você é o mantenedor do apt-cyg, não há indicação no seu perfil ou no seu resumo de edições ou em qualquer lugar visível que sugira esse tipo de autoridade ou plano de fundo para se envolver com faixas desse tipo de edição
aleatoriamente

21

O método oficial de instalação do apt-cyg é:

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

Dois passos é melhor que três. Então:

apt-cyg install nano

A propósito, para fazê-lo funcionar, você precisará instalar o wget , tar , gawk e bzip2 para usar o apt-cyg. Além do wget, os outros vêm com a instalação padrão do Cygwin.


2
Para 64 bits Cygwin, svne apt-cygpode ser quebrado. Então você pode ter que usar a three stepabordagem wget para instalar apt-cyge, em seguida, substituir $mirror/setup...com $mirror/x86_64/setup...em linhas 98 e 105 do arquivo apt-Cyg.
sagunms

17

Pergunta antiga, mas para outros que o google chegou aqui: A instalação oficial possui argumentos de linha de comando que me permitiram preparar um script * .bat simples - basta colocar a linha a seguir em, por exemplo, "install-pkg.bat" e colocar esse arquivo no diretório raiz (por exemplo, C: \ cygwin):

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

Você precisa fazer o download e colocar http://www.cygwin.com/setup-x86.exe (32 bits) ou http://www.cygwin.com/setup-x86_64.exe (64 bits) no mesmo diretório. Agora tudo o que você precisa fazer para instalar o pacote é:

install-pkg packagename

Positivo: configuração oficial, sempre deve funcionar, para qualquer pacote. Negativo: a configuração oficial atual (junho / 2015) requer direitos de administrador, mesmo que na verdade não seja necessário (por exemplo, diretório raiz fora das pastas do sistema).


1
boa resposta, pois é uma ferramenta que você já possui em qualquer instalação do Cygwin; no entanto, parece que você não pode impedir a atualização de todos os pacotes já instalados? é muito chato se você quiser apenas instalar um novo pacote; em outras palavras, não há linha de comando equivalente à opção "Manter" do setup.exe gráfico
golimar

1
note que o setup.exe agora é chamado de setup-x86.exe - ou uma variante, dependendo dos bits da CPU.
precisa saber é o seguinte

O link está quebrado, agora é: cygwin.com/faq/faq.html#faq.setup.cli Você pode editar isso na sua resposta? Obrigado
Benj

Você não precisa de direitos de administrador se usar a --no-adminopção (igual a -B).
cdlvcdlv 23/07

13

O setup.exe do Cygwin, pelo menos na versão 1.7 "beta", possui um modo "autônomo" embutido. Arraste e solte o atalho setup.exe em uma janela de comando (ou prepare-se para executá-lo com opções) e adicione o -qmodo autônomo seguido por -Pnomes de pacotes separados por vírgula. Então, para mim, este lince instalado:

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

Ei, funciona, mas e se eu quiser adicionar alguns pacotes no momento da instalação, como fazer isso?
Johnydep 22/05

1
note que o setup.exe agora é chamado de setup-x86.exe - ou uma variante, dependendo dos bits da CPU.
precisa saber é o seguinte

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

ou

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

Isso instalará cURL, git e make, sem atalhos no modo silencioso.



0

Há um problema de ovo de galinha com a resposta aceita . Se você não recebeu wgetou lynxdurante a instalação inicial, não poderá usá-lo apt-cyg. Aqui está como eu instalei wgetpara que eu pudesse usar apt-cyg. (Ele usa os recursos da CLI do cygwin setup exe .)

# 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

Para pelo menos pacotes que não exigem configuração pós-instalação, eu simplesmente os descompactei da raiz do cygwin '/'. Eu exigi uma versão mais antiga do subversion (1.7.14), que havia passado além das duas versões tratadas pela instalação.

Uma vantagem adicional é que o pacote fica fora do mundo de gerenciamento de pacotes cygwin e, portanto, em um tipo de lista negra adhoc não é atualizada automaticamente com o pacote mais novo se os padrões forem mantidos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.