Quais são as diferenças práticas entre Interix e Cygwin?

14

Ambos Interix e Cygwin parecem proporcionar um ambiente Unix-like de usuário no Windows. Quais são as diferenças práticas entre os dois, em termos de, por exemplo:

  • "Sensação" do tipo Unix
  • atuação
  • Disponibilidade / facilidade do pacote na compilação de software aleatório baixado da Internet
  • Integração com aplicativos e ferramentas do Windows
  • Integração / compatibilidade com máquinas virtuais (por exemplo, é possível que o Interix e uma máquina virtual Ubuntu compartilhem o mesmo "diretório inicial")
  • Tamanho da base de usuários / nível de suporte da comunidade

Uma diferença de que estou ciente é que o Interix requer o Windows 7 Enterprise ou Ultimate edition; Cygwin será executado em qualquer coisa.

ithinkihaveacat
fonte

Respostas:

7

Eu só usei o Windows SFU no Windows 2008 antes, mas acredito que seja baseado no Interix. Eu brinquei com o cygwin de vez em quando, mas não uma quantidade enorme, então alguém me corrija se eu disser algo obviamente errado aqui.

  • Sensação semelhante ao Unix: o Interix vence este. O ambiente parece muito mais "completo". Não sei bem como colocá-lo. O Interix é executado ao lado do subsistema win32, onde o cygwin é executado em cima dele. Portanto, o interix é um "cidadão de primeira classe" no território do kernel do Windows. Coisas como pse dffuncionam bem.
  • Desempenho: não tendo realizado nenhum teste de desempenho importante, acho que o Interix também ganha. Novamente, está sendo executado em um nível mais baixo. Você não está apenas executando aplicativos Win32 com uma DLL de compatibilidade POSIX vinculada.
  • Pacotes / software aleatório: Cygwin vence este por dois motivos. Em primeiro lugar, o cygwin é muito mais conhecido. Muitos softwares Unixy terão suporte para suas peculiaridades. Você também pode instalar as coisas com muita facilidade a partir do instalador da GUI. Interix (eu acredito) não tem nada parecido com isso embutido nele. Claro, você pode baixar algo, compilá-lo usando o gcc (que eu acho que pode ser pré-construído) e rezar para que funcione, mas é um pouco como portar software para qualquer outra variante aleatória do Unix (como Solaris ou AIX) - alguns as coisas vão funcionar, outras vão tentar arrancar sua perna e matar seus filhos.
  • Integração com aplicativos e ferramentas do Windows: Para ser sincero, os dois meio que sugam isso. Se você tem, digamos, um servidor Apache executando dentro do cygwin ou Interix, com certeza, ele será capaz de se comunicar via TCP com os programas Win32, mas isso é o mais longe possível. De dentro do interix, acredito que você pode matar os programas Win32 e listá-los usando o ps, não tenho certeza se você pode fazer isso com o cygwin. Com os dois, você pode usar o gerenciador de tarefas do Windows para matar coisas.
  • Integração com VMs: abordando seu exemplo de compartilhamento de um diretório pessoal e, em seguida, sim. Você pode usar o samba para isso, e acredito que o NFS também funciona no Interix para algo mais unixy. Você não encontrará nenhuma interface gráfica agradável ou qualquer coisa para fazer o trabalho para você. Tanto o cygwin quanto o Interix permitem que você acesse seus sistemas de arquivos regulares.
  • Tamanho da base de usuários: Cygwin vence aqui, eu diria. Era muito difícil encontrar coisas que haviam sido testadas e desenvolvidas para rodar no Interix, onde a maioria das coisas de código aberto parecia suportar o cygwin como uma plataforma de compilação.

Se você possui uma cópia de um sistema operacional Windows com suporte para Interix (como você disse, uma edição Enterprise, uma edição Ultimate ou uma edição Server), não há problema em tentar. É um ambiente de sentimento muito completo. Cygwin, como você disse, funciona com tudo, e é mais conhecido e com melhor suporte, mas parece um pouco para mim um truque sujo. Algumas pessoas usam regularmente embora.

Andrew
fonte
No que diz respeito pacotes, Gentoo-prefixo para Interix pode ser um tiro pena
Tobias KIENZLER
1
Avançando para 2015, a resposta agora se torna simplesmente "o cygwin ainda está disponível e é suportado, enquanto o Interix (também conhecido como Serviços para Unix, também conhecido como Subsistema para Aplicativos Baseados em Unix) é descontinuado"
adib
3

/ * meta note- Detesto que os comentários sejam tão curtos * /

Eu concordo principalmente com a resposta de Andrew com alguns comentários. Substituí muitos sistemas unix pelo SUA / SFU (não, eles não são iguais, mas próximos) no Windows.

  • performance- O SUA é muito mais rápido que os serviços para unix, mas o SFU também não era negligente, ambos são geralmente mais rápidos que o cygwin (mas nem sempre)
  • integração - integração é o objetivo principal do SFU / SUA e há muitos documentos sobre o que você pode ou não fazer no site da technet. O Cygwin foi projetado para executar o comando * nix no Windows - para não fazer com que os 2 cooperem. Consulte Componentes de interoperabilidade Unix / Linux no Windows (SUA, IdMU, NFS etc.)
  • base de usuários - acho que existem mais soluções suportadas e funcionais no lado da mistura do que no lado do cygwin e muito menos problemas de compatibilidade do que no lado do cygwin, consulte http://www.suacommunity.com/ (armazém de ferramentas). O Cygwin provavelmente tem instalações mais gerais, já que é bom para a solução "Preciso de um shell unix". O Cygwin executa comandos, o SUA é um ambiente unix que é semelhante ao Windows.
Jim B
fonte
1

Não posso comentar a resposta de JimB, abordando-a aqui, em particular o ponto sobre a integração do Windows. O Cygwin, baseado no Win32, em vez de ser executado em seu próprio subsistema, embora mais lento, fornece uma integração muito maior ao Windows. Ele ainda permite que as APIs do Windows e UNIX sejam usadas no mesmo programa, o que permite coisas como o servidor Cygwin X ou o terminal mintty.

O 'ps' do Cygwin lista os processos do Windows se você der a opção -W e 'kill -f' os matará. Os programas Windows podem ser chamados a partir do Cygwin e conectados aos programas Cygwin usando todos os mecanismos usuais, como pipes. (Não sei se isso é possível no Interix.)

Caminhos no estilo do Windows, com barras para frente e para trás, são suportados. O Cygwin 1.7 tornou o UTF-8 o conjunto de caracteres padrão, e os nomes de arquivos UTF-16 do Windows são traduzidos automaticamente, portanto, os nomes de arquivos em qualquer idioma são exibidos corretamente no Cygwin. Não sei o que o Interix faz aqui, mas não consegui encontrar nenhuma evidência de que ele suporte Unicode.

Outros recursos de integração incluem o utilitário 'cygstart' para abrir um arquivo como se você tivesse clicado duas vezes no Explorer e o dispositivo / dev / clipboard para acessar a área de transferência do Windows.

ak2
fonte
3
Como ele fornece "muito maior integração do Windows"? "Ele ainda permite que as APIs do Windows e do UNIX sejam usadas no mesmo programa" - isso também é verdade para o Interix; veja isso para a fonte primária; slide 37, "Processos de modo misto", que possui o marcador "Processo de modo misto resultante pode fazer chamadas de SUA e da API do Windows no mesmo processo"
user314104 14/03/14
1

Deixe-me compartilhar minha experiência na instalação do Interix para Windows 7.

Nossa jornada começa em uma página obscura para o Windows Server 2008.

Aqui você descobrirá que nem é mais chamado Interix, mas sim Subsistema para Aplicativos Baseados em Unix ou SUA . Em seguida, você notará apenas em um comentário do usuário que o SUA está disponível apenas para o Windows 7 Ultimate ou Enterprise. Isso não é mencionado no artigo em nenhum lugar. Depois de instalar o "subsistema", você perceberá que não são mais do que 2 atalhos no menu Iniciar.

sua

Agora você chega ao verdadeiro mal. Clique no atalho para Download e você será direcionado para a página de download.

velho

Aqui temos 3 arquivos disponíveis para download. Esses arquivos têm mais de 400 MB e, até o momento, foram escritos com mais de 4 anos . Além disso, não temos opções de baixar pacotes personalizados, certas partes, etc. Você perceberá que esse link é realmente para o Vista e não para o Windows 7 e precisará pesquisar na Internet para encontrar a página do Windows 7 . Nesse ponto, desisti.

Cygwin

Acesse cygwin.com . Faça o download do cygwin.com/setup-x86.exe . Este arquivo tem 714 KB . Execute uma instalação básica e você verá que leva cerca de 2 minutos .

Tempo

Depois disso, você pode reutilizar o instalador para muitos outros pacotes, de acordo com sua preferência. O moral da história é que Cygwin se preocupa com o usuário .

Steven Penny
fonte
Deixe-me entender você corretamente - porque não houve necessidade de alterar o instalador para executar a versão do unix que vem com o win 7, de alguma forma que significa não se importar - e o fato de o Cygwin realmente permitir que você faça o download de peças (que você pode tem que voltar e conseguir mais) é de alguma forma uma vantagem? Certamente a decisão recente de remover os componentes unix do Windows é um sinal de que os usuários não estão executando o unix no Windows (IMHO provavelmente) ou que de alguma forma eles simplesmente não se importam, mas eu realmente não estou vendo isso.
21712 Jim B
@ JimB Ele não "vem" com o Windows 7. Eu teria pensado que minha postagem deixou isso claro. Está disponível apenas para o Win7 ultimate e você precisa baixá-lo. Além disso, o download tem 4 anos. Na comunidade de software que é vitalícia e mostra uma clara falta de direção / iniciativa da Microsoft.
91712 Steven Penny
3
ele vem com o windows, o que você está baixando é o comando unix que está usando o subsistema. Como alguns dos comandos no Linux têm mais de 40 anos, não me surpreende que eles não precisem ser reescritos (e pelo seu padrão, suponho que ninguém mais usa linux ou unix desde as décadas anteriores). Novas ferramentas e comandos são adicionados no para a comunidade SU em suacommunity.com/tool_warehouse.htm
Jim B
2
Estranhamente, eu tive que passar por alguns códigos e sim - é o mesmo código de 40 anos atrás - acho que as pessoas no GNU estão fazendo algo terrivelmente errado - ou talvez - apenas talvez - não há necessidade de mudar algo que não é ' T quebrado
Jim B
0

A sensação do UNIX é bastante subjetiva. Meu voto vai com o CygWin, pois possui o servidor CygWin / X Xwindows com todos os recursos necessários. O SFU recebeu as ferramentas básicas do X11, mas era muito pouco e muito tarde. Muitos (inclusive eu) foram apresentados ao CygWin pela necessidade de ter um servidor X11. Em termos de integridade, o CygWin também está melhor posicionado, pois é de código aberto e muitos softwares licenciados pela GNU ou GPL são portados para ele. Vi alguns produtos comerciais para o CygWin, enquanto vi apenas um produto que requer os Serviços UNIX para Windows NT e nenhum desde então. YMMV.

Disponibilidade do pacoteé uma vitória clara para o CygWin influenciada por vários fatores: - menor custo de entrada: o "qualquer Windows" com CygWin versus licença de classe de servidor para SFU / SUA. Alguma funcionalidade está disponível para os sabores da área de trabalho do Windows, mas das variedades mais caras e sem os componentes do servidor; - código aberto vs. código fechado e, mais importante, documentação disponível abertamente. No passado, até a lista de comandos e as APIs fornecidas estavam disponíveis apenas para assinantes do MSDN e pouca ou nenhuma informação estava disponível no site da Microsoft. Por outro lado, o conjunto de ferramentas GNU estava bem documentado e disponível tanto online quanto como páginas de manual; - as mudanças de nome e implementação são confusas. As primeiras versões estavam usando o kit de ferramentas MKS, que mais tarde foi abandonado.

Em termos de desempenho, pode-se argumentar que o Interix está mais próximo do kernel e, portanto, desfruta de um caminho de execução de código mais curto. A verdadeira questão é quanto e isso importa? Para a maioria dos programas, a diferença é de poucos por cento e é insignificante. Um exemplo artificial com E / S pesada pode ser apresentado, é claro. Eu preferiria colocar essas cargas no UNIX nativo, pois seria mais rápido do que os complementos nativos do Windows e UNIX sobre o Windows. Muitos migraram do Windows para o UNIX com o aumento da carga, enquanto eu não conheço nenhum exemplo de conversão do CygWin para o Interix (ou vice-versa). É a compatibilidade do UNIX que é procurada, e não o desempenho do UNIX, então coloquei isso no final da lista.

Goldie
fonte
2
Em termos de desempenho, o Interix realmente vence aqui; muitas das coisas tradicionalmente implementadas como syscalls * nix (como fork ()) são kludges implementadas no Win32 no Cygwin. O Win32 não possui noção de fork (), mas o Interix (e NT) possui. Cygwin tem problemas com isso - obter o espaço de endereço exatamente correto para fork () - e isso leva a alguns problemas sérios de desempenho. Alguém com certeza ficará chateado com o link que contém mais que esse comentário, mas aqui está, direto da torneira .
user314104