Eu tenho experimentado com o Cygwin tentando obter uma instalação mínima "bare-bones". Eu acho que instalar utilitários como grep, gawk, sed e ferramentas similares tem dependências em cygwin, base-Cygwin e ferramentas algumas vezes indesejáveis como bash, coreutils etc., eu não tentei entender completamente porque essa dependência existe, mas essa não é minha objetivo. Eu queria ter apenas as ferramentas e seus dlls necessários instalados e comecei a examinar o pacote do Cygwin. Descobri que não usar o setup.exe fornecido pelo Cygwin é uma maneira alternativa de realizar instalações mínimas do Cygwin. E é assim que eu fiz isso.
- Use o setup.exe fornecido pelo Cygwin para fazer o download de todos os pacotes - somente download e nenhuma instalação.
- Quando o download for concluído com sucesso, pacotes individuais como zlib, gawk, grep, libiconv são encontrados no diretório x86 / release ou x86_64 / release.
- Cada pacote é 'tar'red e compactado usando a ferramenta' xz 'ou bzip e armazenado nos respectivos diretórios.
-
Para instalar uma ferramenta específica como sed ou gawk, tudo o que precisa ser feito é extrair a ferramenta executável e suas dependências (.dll)
Antes de tentar o seguinte, verifique se você tem uma ferramenta como
7z.exe, xz.exe, bzip2 ou outro que seja capaz de descompactar um
.xz ou arquivo bzip
Instalando o exemplo do gawk abaixo:
- Extraia o gawk.exe do arquivo gawk-4.1.3-1.tar.xz usando o comando - 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf -
- Uma vez feito isso, você deve encontrar o gawk.exe em uma subpasta normalmente, usr / bin na pasta release / gawk
- Encontre as dependências para o gawk - você pode fazer isso de duas maneiras.
Examine the Cygwin setup.ini file found in x86 or x86_64 folder. Look for the string '@ gawk' and in the lines after this line you should find a "requires:" line that lists the dependencies.
Mine reads like this - "requires: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7"
Para que o gawk rode, o bash não é obrigatório, já que temos o shell de comando do windows. (o bash é incluído para obter algumas outras DLLs requeridas pelo gawk. No entanto, isso faz com que muito mais arquivos desnecessários sejam instalados). As outras dependências contêm arquivos que o gawk precisa executar. Extraia cada um dos pacotes acima usando ferramentas como 7z ou xz em arquivos individuais.
Depois que todas as dependências forem extraídas, copie as ferramentas necessárias (grep / sed / gawk) para uma pasta e todos os arquivos .dlls dependentes. Agora, você deve poder executar sua ferramenta com o conjunto mínimo de arquivos .dlls necessários em uma instalação do cygwin bare-bones.
Caution : It may not be sufficient to just extract the dependencies listed in setup.ini for each tool. Sometimes, you may need to execute/run the tool to discover that there are more dlls required.
Existem outros meios de descobrir as dlls exigidas por um exe - você pode usar o dumpbin do MS ou do walker de dependência, ndepends ou ferramentas similares para encontrar a lista de dlls dependentes
Consulte - link link
Eu também forcei brutalmente as informações de dll dependentes apenas executando a ferramenta e instalando as dlls ausentes listadas uma a uma, extraindo dos pacotes necessários.
Quando você executa um exe e se ele comete erros com uma mensagem .dll ausente, procure o pacote que contém a dll aqui - link . Digite o nome completo / parcial da dll ausente para encontrar o nome do pacote que contém a dll.
Eventualmente, acabei com uma instalação simples do cygwin com apenas as ferramentas e dlls de que preciso. Exemplo: gawk - gawk.exe e as dlls a seguir - cygwin1.dll, cyggmp-10.dll, cygiconv-2.dll, cygintl-8.dll, cygmpfr-4.dll, cyggcc_s-seh-1.dll, cygncursesw- 10.dll, cygreadline7.dll
sed-sed.exe e dlls - cygwin1.dll, cygintl-8.dll
Espero que isso seja útil. O instalador do Cywin também faz o dll basear-se, o qual não me aventuro aqui