Como posso usar o cygwin sem desperdiçar espaço HD? [fechadas]

7

Eu adoro usar o Cygwin , mas odeio todo o espaço extra em disco que parece usar coisas de cache que eu não preciso. O que posso excluir para manter minha área de cobertura da instalação o menor possível?

Em uma nota relacionada, o que é um bom conjunto de pacotes barebones que me dará o essencial, sem fluff que eu provavelmente nunca usarei?

    
por Chris Marasti-Georg 30.04.2009 / 16:04

9 respostas

6

Algumas pessoas parecem estar sob a suposição de que é fácil trocar o hardware em qualquer plataforma que esta pessoa esteja usando. Pode muito bem ser que 500MB é realmente uma grande quantidade de espaço para sacrificar se eles estão usando talvez um adaptador CF e um cartão de 4GB para executar janelas em um netbook ou similar. Ou podem estar instalando-a em uma imagem virtual e essa informação extra significa a diferença entre ela se encaixar em um DVD descompactado ou ter que estender vários DVDS e lidar com os problemas que vêm com isso, especialmente se estiver sendo enviada para um cliente que não é particularmente técnico, por exemplo; Material de treinamento interno para o aplicativo que sua empresa desenvolve. Ter uma imagem definida que é a mesma para todos os alunos faz maravilhas, torna os ambientes mais homogêneos e facilita a vida dos treinadores. Imagens virtuais são uma maneira simples de fazer isso na maioria das situações.

Resolva o problema que o usuário fez ou peça uma pergunta para obter mais informações.

SOLUÇÃO POTENCIAL:

Ao instalar o Cygwin, na tela onde ele pergunta onde armazenar seus pacotes, aponte-o para um local específico, por exemplo, c: \ Cygwin \ Packages. Instale normalmente, execute-o para verificar se ele funciona corretamente. Exclua a pasta na qual os pacotes estão armazenados, se necessário, para atualizações. O Cygwin fará o download novamente, não o uso mais eficiente da largura de banda, mas, dependendo dos seus requisitos, pode ser melhor do que manter o cache localmente.

Outra opção é instalar esses pacotes, mas na primeira vez que você fizer isso, salve os pacotes em outro local como uma unidade USB e, em seguida, se tiver que fazer

    
por 08.06.2009 / 08:47
6

Noto que minha instalação atual está abaixo de 250 MB. Teria que ser quatro vezes maior antes de começar a me preocupar com isso no meu laptop.

Mas, se você precisar reduzi-lo ...

Faça o download do instalador . Salve-o para c: \ cygwin \ setup.exe. Execute o instalador. Desmarcar tantos pacotes quanto você puder. Observando, que se você selecionar um pacote que tenha requisitos, ele selecionará automaticamente os pacotes necessários. Remova o cache do instalador (que deve ter sido padronizado como c: \ cygwin (http | ftp) somethingouanother. Execute novamente o instalador de c: \ setup.exe tentando desinstalar mais pacotes. Repita até que o instalador seja tão pequeno quanto você desejar.

Note que haverá um monte de pacotes básicos de bibliotecas que serão necessários até na instalação mínima. Eu tenho no passado (cerca de um ano atrás), baixei para menos de 100 megas enquanto continuo tendo tudo o que eu já joguei em termos de script bash.

    
por 09.06.2009 / 01:47
2

Eu não posso usar o Windows sem instalar o Cygwin, mas eu nunca tive muito problema com ele usando o espaço em disco. Eu acho que você pode deletar a pasta em que o Cygwin armazena os pacotes, mas toda vez que você atualizar o Cygwin ele irá baixar os pacotes que ele precisa.

Quanto a uma configuração de barebones, realmente depende do que você precisa. Eu começo com a instalação básica do Cygwin e adiciono OpenSSH, Cron, RXVT, Tela, Vim, Git, Curl, Zip / Unzip e Wget. Essas são quase todas as ferramentas de que preciso, mas apenas instalei outra coisa, se necessário.

    
por 30.04.2009 / 17:11
1

Em vez do Cygwin, você também pode ter mais pacotes que não pretendem resolver todos os problemas que o Cygwin pretende resolver. Existem pacotes de utilitários unix com apenas uma seleção limitada dos programas mais usados.

Unix Utilities para Windows é o que usei no passado, mas parece ser um projeto inoperante.

O GnuWin32 parece ainda estar vivo.

    
por 09.06.2009 / 01:54
1

Eu começaria com o pacote cygwin básico e 'falha de página' em qualquer comando adicional que você precisasse. Eu mantenho uma lista de utilitários comuns que o eu usa, mas pode ser bem diferente do que você usa. Não NÃO selecione pacotes ALL ao instalar o Cygwin. Eu fiz isso uma vez e demorou cerca de 6 GB. Meu pensamento era então que eu nunca teria que me preocupar em não ter um programa. Foi uma má idéia.

Minha máquina com Windows XP possui 1,1 GB de dados de desinstalação do service pack. Eu excluiria esses arquivos bem antes de tentar diminuir o Cygwin. Tente usar o programa WinDirStat e veja onde está indo todo o espaço em disco - provavelmente não é o Cygwin. Além disso, de vez em quando, você provavelmente deve excluir C: \ cygwin \ tmp, pois isso não é liberado na reinicialização.

    
por 08.07.2009 / 05:56
1

Você pode mudar do CygWin para o Gow , uma alternativa leve ao CygWin (cerca de 10 vezes mais leve)

    
por 20.04.2012 / 13:03
1

Se você extraiu os arquivos de configuração mais de uma vez, verá que os arquivos não utilizados são deixados para trás ...

Para limpar um conjunto de instalação do Cygwin (não o código base instalado, mas o pacote usado para fazer a instalação ...

Eu acho que vi um script perl para fazer isso em algum lugar, mas tente este código java para limpar uma configuração do Cygwin:

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.text.DecimalFormat;
    import java.util.HashSet;

    public class CygwinCleaner {
            boolean doClean = false;
            long diskFileCount = -1;
            long setupFileCount = 0;
            long missingFileCount = 0;
            long srcFileCount = 0;
            long deleteCount = 0;
            public HashSet<String> pkgs = new HashSet<String>(9999);

            public String formatCount(long count) {
                    DecimalFormat df = new DecimalFormat("##,###");
                    String retval = "      " + df.format(count);
                    return retval.substring(retval.length() - 6);
            }

            public void checkForMissingFiles() {
                    for (String filename : this.pkgs) {
                            if (!filename.contains("-src.")) {
                                    if (!((new File(filename)).exists())) {
                                            System.err.println(" Missing " + filename);
                                            missingFileCount++;
                                    }
                            }
                    }
            }

            public void checkOrCleanFiles(File testfile) {
                    String tfap = null;
                    if (testfile.isDirectory()) {
                            for (File file : testfile.listFiles()) {
                                    checkOrCleanFiles(file);
                            }
                    } else {
                            this.diskFileCount++;
                            tfap = testfile.getAbsolutePath();
                            if (!this.pkgs.contains(tfap)) {
                                    if (this.doClean) {
                                            System.err.println("Deleting \"" + tfap + "\"");
                                            if (testfile.delete()) {
                                                    this.deleteCount++;
                                            } else {
                                                    System.err.println("COULD NOT DELETE \"" + tfap + "\"");
                                            }
                                    } else {
                                            System.err.println("WOULD delete \"" + tfap + "\"");
                                    }
                            }
                    }
            }

            public boolean loadFileList(File file) {
                    boolean retval = false;
                    if (file.exists()) {
                            try {
                                    String basedir = (new File(file.getParent())).getParent() + "/";
                                    basedir = basedir.replace('\', '/');
                                    BufferedReader br = null;
                                    br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
                                    String line = br.readLine();
                                    String installFile = null;
                                    boolean processlines = false;
                                    while ((line = br.readLine()) != null) {
                                            if (processlines) {
                                                    if (line.startsWith("install:") || line.startsWith("source:")) {
                                                            installFile = line.substring(1 + line.indexOf(" "));
                                                            installFile = installFile.substring(0, installFile.indexOf(" "));
                                                            installFile = basedir + installFile;
                                                            String hashString = (new File(installFile)).getAbsolutePath();
                                                            if (!this.pkgs.contains(hashString)) {
                                                                    this.pkgs.add(hashString);
                                                                    this.setupFileCount++;
                                                                    if (line.startsWith("source:")) {
                                                                            srcFileCount++;
                                                                    }
                                                            }
                                                    }
                                            }
                                            if (line.startsWith("@ ")) {
                                                    processlines = true;
                                            }
                                            if (line.startsWith("[test]") || line.startsWith("[prev]")) {
                                                    processlines = false;
                                            }
                                    }
                                    br.close();
                                    retval = true;
                            } catch (Throwable t) {
                                    t.printStackTrace();
                            }
                    }
                    return retval;

            }

            public static void main(String[] args) {
                    if (args.length == 0) {
                            System.err.println("Usage:::::   CygwinCleaner    {full_path_to_setup.ini}    [CLEAN]\nIf only the ini file is specified then a report will be generated\nTo perform the cleanup add the second optional parameter of CLEAN");
                    } else {
                            System.out.print("CygwinCleaner: ");
                            CygwinCleaner cc = new CygwinCleaner();
                            String setupFileName = args[0];
                            if (args.length > 1) {
                                    if (args[1].equalsIgnoreCase("CLEAN"))
                                            cc.doClean = true;
                            }
                            if (cc.doClean) {
                                    System.out.println("Performing cleanup\n");
                            } else {
                                    System.out.println("Reporting only\n");
                            }
                            File file = new File(setupFileName);
                            cc.pkgs.add(file.getAbsolutePath());
                            if (cc.loadFileList(file)) {
                                    cc.checkOrCleanFiles(file.getParentFile());
                                    cc.checkForMissingFiles();
                                    System.out.println("     Total of:" + cc.formatCount(cc.setupFileCount) + " files in setup.ini");
                                    System.out.println("       Source:" + cc.formatCount(cc.srcFileCount) + " files in setup.ini");
                                    System.out.println("      Leaving:" + cc.formatCount((cc.setupFileCount - cc.srcFileCount)) + " files in setup.ini\n");
                                    System.out.println("     Total of:" + cc.formatCount(cc.diskFileCount) + " files in setup directory before cleanup");
                                    System.out.println("      Deleted:" + cc.formatCount(cc.deleteCount) + " files in setup directory (unused)");
                                    System.out.println("      Leaving:" + cc.formatCount((cc.diskFileCount-cc.deleteCount)) + " files in setup directory after cleanup\n");
                                    System.out.println("      Missing:" + cc.formatCount(cc.missingFileCount) + " files in setup directory that are contained in setup.ini");
                            } else {
                                    System.err.println("setup.ini file (" + setupFileName + ") does nofiles in setup");
                            }
                    }
            }
    }
    
por 29.01.2015 / 20:34
1

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 por que essa dependência existe, mas 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.

  1. Use o setup.exe fornecido pelo Cygwin para fazer o download de todos os pacotes - somente download e nenhuma instalação.
  2. 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.
  3. Cada pacote é 'tar'red e compactado usando a ferramenta' xz 'ou bzip e armazenado nos respectivos diretórios.
  4. 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:

  1. 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 -
  2. Uma vez feito isso, você deve encontrar o gawk.exe em uma subpasta normalmente, usr / bin na pasta release / gawk
  3. 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 suas 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

    
por 23.12.2016 / 20:53
0

Como usuário do cygwin, concordo com os posts anteriores.

NECESSIDADES: grep, sed, awk, cut, diff, comm, vim, OpenSSH, tar, gzip, bash, wget

Quanto ao espaço, eu concordo com o Ian. Pequeno preço a pagar pelo espaço. Agora você pode obter uma unidade de 1 TB de 10.000 RPM por menos de $ 100,00. Lembro-me quando todos nós tivemos que pagar mais de US $ 150,00 para uma unidade de 20,00 GB.

Se você estiver realmente preocupado com o espaço em disco local, tente colocar uma caixa de armazenamento NAS em sua rede e armazene os "pacotes baixados". Isso reduzirá ainda mais a pegada em sua própria máquina.

É realmente um pequeno preço a pagar pelo Cygwin.

    
por 08.06.2009 / 05:53

Tags