Existe uma ferramenta no pacote Cygwin semelhante ao apt-get
Debian ou yum
ao redhat que me permita instalar componentes a partir da linha de comando?
Existe uma ferramenta no pacote Cygwin semelhante ao apt-get
Debian ou yum
ao redhat que me permita instalar componentes a partir da linha de comando?
Respostas:
Não há nenhuma ferramenta específica no instalador 'setup.exe' que ofereça a funcionalidade do apt-get. No entanto, existe um instalador de pacote de linha de comando para o Cygwin que pode ser baixado separadamente, mas não é totalmente estável e depende de soluções alternativas.
apt-cyg: http://github.com/transcode-open/apt-cyg
Confira a guia de problemas do projeto para ver os problemas conhecidos.
setup-x86.exe -q -P packagename1,packagename2
. Não é tão chique quanto apt-get
ou mesmo, apt-cyg
mas faz o truque na maioria dos casos. E você também pode executar isso em cmd.exe
(após fechar o Cygwin).
A instalação do Cygwin aceita argumentos da linha de comando para instalar pacotes a partir da linha de comando.
por exemplo, setup-x86.exe -q -P packagename1,packagename2
para instalar pacotes sem nenhuma interação da GUI ('modo de instalação autônoma').
(Observe que você precisa usar setup-x86.exe
ou setup-x86_64.exe
conforme apropriado.)
Veja http://cygwin.com/packages/ para a lista de pacotes.
setup-x86_64 --packages="openssh,python"
Para um instalador mais conveniente, você pode usar
apt-cyg
como seu gerenciador de pacotes. Sua sintaxe é semelhante a
apt-get
, que é uma vantagem. Para isso, siga as etapas acima e use o Cygwin Bash para as seguintes etapas
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Agora que apt-cyg
está instalado. Aqui estão alguns exemplos de instalação de alguns pacotes
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
e faz o download apt-cyg
sem problemas. Em que momento o 404 aparece?
Existem alguns scripts, que podem ser usados como gerenciadores de pacotes simples para o Cygwin. Mas é importante saber que eles sempre serão bastante limitados , por causa do ... ehm ... Windows.
Instalar ou remover pacotes é bom, cada gerenciador de pacotes do Cygwin pode fazer isso. Mas atualizar é um problema, pois o Windows não permite substituir um executável, que está sendo executado no momento. Portanto, você não pode atualizar, por exemplo, a DLL do Cygwin ou qualquer pacote que contenha o executável atualmente em execução no próprio Cygwin. Há também esta nota na página de instalação do Cygwin :
"O motivo básico para não ter um gerenciador de pacotes mais completo é que esse programa precisaria de acesso total a todas as funcionalidades POSIX do Cygwin. Isso é, no entanto, difícil de fornecer em um ambiente livre de Cygwin, como existe no primeiro Além disso, o Windows não permite a substituição fácil de executáveis em uso, portanto, a instalação de uma nova versão da Cygwin DLL enquanto um gerenciador de pacotes está usando a DLL é problemática. "
A instalação do Cygwin usa o registro do Windows para substituir os executáveis que estão em uso e esse método requer uma reinicialização do Windows . Portanto, é melhor fechar todos os processos do Cygwin antes de atualizar os pacotes , para que você não precise reiniciar o computador para aplicar as alterações. A instalação de um novo pacote deve ser completamente sem aborrecimentos. Eu não acho que nenhum dos gerenciadores de pacotes, exceto o Cygwin, setup.exe
implemente qualquer método para substituir arquivos em uso, então ele simplesmente falharia se não pudesse substituí-los.
Atualização : o repositório foi desativado recentemente devido a problemas de direitos autorais ( remoção da DMCA ). Ele se parece com o proprietário do repositório emitiu o DMCA takedown em seu próprio repositório e criou um novo projeto chamado Sábio (ver abaixo).
O melhor para mim. Simplesmente porque é um dos mais recentes. Ele não usa o Cygwin setup.exe
, mas reimplementa o que setup.exe
faz. Funciona corretamente para ambas as plataformas - x86 e x86_64 . Existem muitos garfos com mais ou menos recursos adicionais. Por exemplo, o garfo kou1okada é uma das versões aprimoradas , o que é realmente ótimo.
O apt-cyg é apenas um script de shell, não há instalação. Basta fazer o download (ou clonar o repositório), torná-lo executável e copiá-lo em algum lugar no 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
Há também um monte de garfos com recursos diferentes.
Outro gerenciador de pacotes implementado como um script de shell. Eu não tentei, mas parece realmente bom.
Ele pode procurar pacotes em um repositório, listar pacotes em uma categoria, verificar dependências, listar arquivos de pacotes e muito mais. Possui recursos que outros gerenciadores de pacotes não possuem.
Garfo do original abandonado cyg-aptcom melhorias e correções. Possui muitos recursos e é implementado em Python. A instalação é feita usando make
.
Se você usou o Chocolatey para instalar o Cygwin, pode instalar o pacote cyg-get , que é realmente um invólucro simples em torno do Cygwin, setup.exe
escrito no PowerShell.
Ele também possui um modo de linha de comando . Além disso, ele permite que você atualize todos os pacotes instalados de uma só vez (como apt-get upgrade
no Linux baseado no Debian).
Exemplo de uso:
setup-x86_64.exe -q --packages=bash,vim
Você pode criar um alias para facilitar o uso, por exemplo:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
Então você pode, por exemplo, instalar o pacote Vim com:
cyg-get vim
sage
é um exemplo dos apt-cyg
contribuintes mais ativos nos últimos dois anos (Steven Penny). Parece que no início deste ano ele teve alguma discordância com o apt-cyg
autor original (Stephen Jungels) e emitiu a remoção do DMCA quando ele forçou o projeto. Como Jungels (aka Transcode) é o autor original do projeto, o GitHub restaurou o projeto original logo depois. Atualmente, os dois projetos estão disponíveis - embora o projeto original não tenha recebido novas atualizações de código desde a divisão. É uma situação confusa, realmente.
Primeiro, baixe o instalador em: https://cygwin.com/setup-x86_64.exe (Windows 64bit) e, em seguida:
# 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
por exemplo
# install vim
cygwin vim
# see other options
cygwin --help
Eu queria uma solução parecida com essa apt-get --print-uris
, mas infelizmente o apt-cyg não faz isso. A seguir, uma solução que me permitiu baixar apenas os pacotes necessários, com suas dependências, e copiá-los para o destino para instalação. Aqui está um script bash que analisa a saída apt-cyg
em uma lista de URIs:
#!/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
O item acima irá imprimir os caminhos dos pacotes que precisam ser baixados, em relação à raiz do espelho cygwin, omitindo quaisquer pacotes que já estejam instalados. Para baixá-los, escrevi a saída em um arquivo cygwin-packages-list
e usei o wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
O instalador pode ser usado para instalar a partir de um diretório de cache local. Observe que, para isso funcionar, eu precisava copiar setup.ini
de um cache de pacote cygwin anterior para o diretório com os arquivos baixados (caso contrário, o instalador não sabe o que é o quê).
Pergunta antiga, mas ainda relevante. Aqui está o que funcionou para mim hoje (26/6/16).
Do shell bash:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
ou curl
é provavelmente uma ferramenta melhor para isso. (E, pessoalmente, eu instalá-lo em algum outro diretório na minha $PATH
vez de no /bin
.)
A resposta de Dawid Ferenczy é bastante completa, mas depois que tentei quase todas as opções dele, descobri que o cyg-get do Chocolate era o melhor (pelo menos o único que eu conseguia trabalhar).
Eu estava querendo instalar wget
, os passos eram os seguintes:
choco install cyg-get
Então:
cyg-get wget
Geralmente, antes de instalar um pacote, é necessário saber seu nome exato:
# 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>>"