Questão Atualizando e instalando pacotes através da linha de comando do Cygwin?


Eu sou um usuário de computador cego que usa o Cygwin.

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

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


109


origem




Respostas:


Instalar 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

119



O repositório não tem se mudou : uma denúncia de DMCA foi emitido novamente transcodificar-aberto / apt-cyg. Aliás, o usuário svnpenn do Github criou um fork chamado "sage" ao mesmo tempo, alegando ser seu sucessor - Lucas Cimon
Link atualizado para a contranotificação do DMCA ... garfo svnpenn / sage - Abdull
Eu tive que chmod + x apt-cyg para ele ser executável (apenas no caso de ajudar alguém) - Pedro A


Como algumas pessoas afirmaram corretamente que apt-cyg em si precisa de wget e, a fim de obter apt-cyg você precisa do wget, existe uma solução bash para inicializar wget em pura festa.

Crie uma função como esta em seu shell bash mintty:

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 wget:

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

22



Com licença, @moreaki, mas há uma coisa que não consigo entender no apt-cyg: no instalador clássico do CygWin Windows eu posso / devo especificar a localização dos repositórios / pacotes, seja ele um dos downloads (ftp / http) sites ou unidade local (no meu computador). Eu não vejo essa opção no site oficial do googlecode. Onde apt-cyg baixar os pacotes de? - Sopalajo de Arrierez
Perdoe minha resposta tardia. Eu 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 estar http://mirrors.kernel.org/sourceware/cygwin, conforme especificado 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 em /etc/setup/last-mirror. - Moreaki
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 - random♦
@steven Então isso seria motivo para uma nova resposta mostrar isso, e não para alterar sumariamente uma resposta existente contra a intenção e a voz do autor original - random♦


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

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

By the way, para fazê-lo funcionar, você precisará instalar wget, alcatrão, gawk e bzip2 para usar o apt-cyg. Além do wget, os outros vêm com instalação padrão do Cygwin.


20



Para o Cygwin de 64 bits, svn e apt-cyg pode estar quebrado. Então você pode ter que usar o three step abordagem do wget para instalar apt-cyg e depois substituir $mirror/setup... com $mirror/x86_64/setup... nas linhas 98 e 105 do arquivo apt-cyg. - sagunms


Velha pergunta, mas para os outros que o google e chegou aqui: Configuração oficial tem argumentos de linha de comando o que me permitiu preparar um simples script * .bat - basta colocar a seguinte linha em, por exemplo. "install-pkg.bat" e coloque esse arquivo em seu diretório raiz (por exemplo, C: \ cygwin):

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

Você precisa baixar 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, deve sempre funcionar, para qualquer pacote. Negativo: a configuração oficial atual (junho / 2015) exige direitos de administrador, embora não precise de um (por exemplo, diretório raiz fora das pastas do sistema).


14



boa resposta, já que é uma ferramenta que você já tem em qualquer instalação do Cygwin; no entanto, parece que você não pode impedi-lo de atualizar todos os pacotes já instalados? É muito chato se você quer apenas instalar um novo pacote; em outras palavras, não há equivalente de linha de comando à opção "Keep" do setup.exe gráfico - golimar
note O setup.exe agora é chamado setup-x86.exe - ou uma variante, dependendo dos bits da CPU. - ErichBSchulz
Link está quebrado, agora é: cygwin.com/faq/faq.html#faq.setup.cli Você pode editar isso na sua resposta? obrigado - Benj


O setup.exe do Cygwin, pelo menos na versão 1.7 "beta", possui um modo "autônomo" embutido. Arraste e solte o atalho do setup.exe em uma janela de comando (ou prepare-se para executá-lo com switches) e adicione -q para modo autônomo seguido por -P e nomes de pacotes separados por vírgulas. Então, para mim, esse lince instalado:

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

12



Ei, funciona, mas que tal se eu quiser adicionar alguns pacotes no momento da instalação, como fazer isso? - Johnydep
note O setup.exe agora é chamado setup-x86.exe - ou uma variante, dependendo dos bits da CPU. - ErichBSchulz


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.


6





Eu encontrei dois gerenciadores de pacotes 'apt like' para o cygwin. Um é um script python chamado cyg-apt, do qual você pode fazer o download http://www.lilypond.org/~janneke/software/cyg-apt e o outro é o apt-cyg, que você pode encontrar em http://code.google.com/p/apt-cyg/


2





Existe um problema com o ovo de galinha <=> a resposta aceita. Se você não conseguiu wget ou lynx durante a instalação inicial, você não pode usar apt-cyg. Aqui está como eu instalei wget para que eu pudesse usar apt-cyg. (Ele usa o Recursos CLI do exe de configuração do cygwin.)

# 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

0





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

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


-1