Índice das dicas

Uma introdução ao Wine

Por Carlos E. Morimoto em 2 de maio de 2009 às 18h31

15

Enquanto o VMware e outros softwares de virtualização criam um ambiente virtual, que permite executar uma cópia do Windows e rodar os programas sobre ela, o Wine usa uma abordagem mais direta: simplesmente rodar os programas diretamente. Isso é enfatizado pelo próprio nome do projeto, onde o Wine é abreviação de "Wine is not an emulator", ou seja, "o Wine não é um emulador".

Originalmente, não existe qualquer compatibilidade entre os programas do Windows e Linux: os dois sistemas não possuem sequer uma base comum, são realmente duas coisas bem diferentes. A equipe do Wine faz um trabalho de formiguinha, incluindo suporte às funções usadas no Windows, uma a uma. O conjunto destas funções é chamado de API (application programing interface). O Wine é justamente uma implementação da API do Windows, que permite executar os programas no Linux como se fossem aplicativos nativos.

Para evitar acusações relacionadas a uso de propriedade intelectual, todo o desenvolvimento é feito usando um sistema clean-room ("sala limpa", em analogia aos ambientes livres de partículas, usados para a fabricação de processadores e outros equipamentos sensíveis). Nesse processo, um desenvolvedor, com acesso ao software ou ao código que será duplicado realiza testes e descreve seu funcionamento e o time principal desenvolve a nova implementação com base nessa descrição escrita, sem ter acesso ao código original.

A necessidade de tomar tantos cuidados, combinada com a própria complexidade da API do Windows, com todas as suas chamadas escondidas e bugs (que são muitas vezes utilizados por alguns aplicativos para implementar recursos adicionais) faz com que o desenvolvimento do Wine seja bastante lento.

O Wine foi provavelmente o maior alpha da história. Foram 12 anos desde o anúncio da primeira versão, em 1993. Em outubro de 2005 foi finalmente lançada a primeira versão beta, que indicou uma mudança de rumos no projeto.

Até então, mudanças estruturais aconteciam a cada novo release, fazendo com que muitos programas que rodavam em uma versão não funcionassem mais na seguinte. Para complicar, as distribuições costumavam aplicar um grande volume de patches adicionais, com o objetivo de melhorar a compatibilidade com aplicativos específicos. Isso aumentava ainda mais as diferenças e dificultava muito o uso do Wine, fazendo com que a única forma de ter certeza que um determinado software iria funcionar seria usar a mesma versão e distribuição que o autor da dica estava usando.

A entrada no estágio beta indicou que o software passou a ser muito mais estável e previsível, fazendo com que as novas versões simplesmente incluam novos recursos e não novos problemas. A fase beta continuou por mais quase 3 anos, até que foi lançada a versão 1.0, em junho de 2008, nada menos do que 15 anos após o início do projeto.

A partir de então, o Wine passou a utilizar uma metodologia de desenvolvimento simular à usada no kernel, onde as versões estáveis recebem final par (1.0, 1.2, etc.) e as versões de desenvolvimento recebem final ímpar (1.1, 1.3, etc.). Isso torna a escolha muito mais simples, já que você pode começar com a versão estável mais atual e dar uma olhada na versão de desenvolvimento caso ela falhe em rodar os aplicativos de que precisa.

Embora a lista de aplicativos compatíveis com o Wine venha crescendo a cada nova versão, ele ainda está longe de rodar todos os aplicativos Windows sem falhas. Isso faz com que ele seja mais adequado a situações em que os aplicativos nativos atendem à maior parte das suas necessidades, mas você precisa de alguns aplicativos específicos que existem apenas para Windows.

Por outro lado, ele não é adequado em casos em que seu trabalho depende de aplicativos Windows, como no caso de um engenheiro que trabalha usando o AutoCAD, ou de um artista gráfico que trabalha usando o Photoshop e o Corel Draw, já que o desempenho e a compatibilidade raramente é perfeita.

wine_html_64821f68

Embora seja muito menos problemático rodar aplicativos Windows dentro de uma máquina virtual, usando o Virtual Box, VMware ou outro software de virtualização, o Wine oferece três grandes vantagens. A principal é o fato de você não precisar de uma licença do Windows, já que o próprio Wine implementa as funções do sistema operacional. A segunda é que ele oferece um overhead menor, já que o aplicativo roda diretamente, sem que seja necessário manter uma cópia inteira do Windows carregada dentro da VM. Finalmente, temos outra característica (a mais importante para muitos) que é o fato do Wine oferecer suporte a 3D, o que permite rodar muitos jogos.

A lista oficial de aplicativos compatíveis com o Wine, mantida graças aos esforços da equipe de desenvolvimento e de um grande número de voluntários, pode ser encontrada no: http://appdb.winehq.org/.

Os aplicativos listados são divididos em três categorias: "Platinum" (que inclui apenas os aplicativos que rodam perfeitamente em uma instalação limpa do Wine, sem precisar de configurações adicionais), "Gold" (aplicativos que rodam sem limitações, mas que precisam de ajustes manuais) e "Silver", que inclui aplicativos que rodam com pequenas limitações ou glitches, ou que precisam de um conjunto maior de ajustes.

Dois sites dedicados a fornecer dicas e listas adicionais de aplicativos compatíveis são o wine-reviews.net e o frankscorner.org. Naturalmente, nenhuma das listas pode ser considerada completa, de forma que a melhor maneira de saber se um determinado programa roda ou não, é simplesmente testando.

O Wine inclui também um substituto para o Internet Explorer 6, que é usado por aplicativos que dependem do uso do navegador. Este browser alternativo, na verdade não tem nada a ver com o Internet Explorer (ele é baseado no código do Firefox), ele apenas se faz passar por ele para melhorar o nível de compatibilidade dos aplicativos. Existem receitas para instalar o Internet Explorer dentro do Wine, mas elas não são muito recomendáveis, já que o navegador roda com falhas e existem complicadores legais, uma vez que a EULA do Internet Explorer proíbe o uso em PCs sem uma licença válida do Windows.

Além do Wine propriamente dito temos também a Winelib, uma biblioteca que permite portar aplicativos Windows para o Linux, de forma que eles rodem como se fossem aplicativos nativos. Através dela, é possível recompilar o código do aplicativo, gerando um executável que é capaz de rodar no Linux (e em outros sistemas UNIX), com relativamente pouco esforço.

A mudança não é inteiramente indolor, já que é necessário fazer pequenas modificações no código-fonte do aplicativo, substituindo chamadas e funções potencialmente problemáticas e adicionando chamadas às funções nativas do sistema onde possível. Mesmo depois de recompilado, o resultado não é muito diferente do obtido ao executar o mesmo aplicativo no Linux usando o Wine, mas nesse caso temos a vantagem de ele já vir "completo", incluindo todos os componentes necessários no pacote.

Um dos primeiros aplicativos portados com a ajuda da Winelib foi o Kylix (lançado em 1999), que nada mais era do que uma versão portada do Delphi, que permitia desenvolver aplicativos Linux e também portar aplicativos do Delphi para o Linux (e vice-versa). Ele era um aplicativo comercial, que existia em duas versões. A Open Edition era gratuita, mas podia ser usada apenas em aplicativos open-source, enquanto a versão Professional (que podia ser usada no desenvolvimento de aplicativos comerciais) era paga.

A ideia acabou não dando muito certo, devido à baixa qualidade do software e ao auto custo da versão Professional, mas serviu como um precedente importante com relação à interoperabilidade entre as duas plataformas.

Um exemplo recente de aplicativo complexo portado com a ajuda da Winelib é o Google Picasa, lançado em 2006. Durante o processo, o Google patrocinou o desenvolvimento de um conjunto de melhorias no Wine, que ajudaram também a melhorar também a compatibilidade com outros aplicativos gráficos, como o Photoshop.

15 comentáriosPor Carlos E. Morimoto. Revisado 24 de março de 2011 às 14h31

Comentários

 
por yokobr (anônimo) em 19 de maio de 2009 às 02h58
Primeiramente, o wine não é sucetível à virus, desde que não seja rodado pelo root. Não acredito que o wine atrapalhe o desenvolvimento open source. Ha anos trabalho com linux, e afirmo que não existem ferramentas profissionais com a mesma qualidade do AutoCAD 3D, 3D StudioMax, Photoshop, Dreamweaver, entre outros. (apesar de que prefiro o Blender, e o dreamweaver somente pela praticidade de desenvolvimento usando flash, já que não existe nada neste sentido para linux.)
 
por Helio Dansa (anônimo) em 11 de maio de 2009 às 21h58
Sem a utilização de softwares profissionais minha estante viraria uma biblioteca, inviabilizando minha atuação. Por outro lado, não posso suportar os malwares do ruindows, tendo que praticamente desistir de trabalhar, face aos altos custos envolvidos. Solução segura foi ter uma máquina com ruindows e softwares profissionais, mantendo open-office em linux, portanto em dual boot, e outra máquina só para internet, com linux no HD todo, sem ruindows. Portanto, os desenvolvedores de softwares profissionais estão de bobeira em não produzirem versões linux.Ou o contrário...HD
 
por Felipe (anônimo) em 8 de maio de 2009 às 17h49
Wine realmente me surpreende as vezes... utilizo ele profissionalmente para rodar programas como dreamweaver ou notepad++ e até agora nao notei bugs... obviamente varios programas nao funcionam, mas estes citados rodam perfeitamente.

Só falta implementarem pra poder colar textos com a rodinha do mouse ;)
 
por Leonardo Barros (anônimo) em 5 de maio de 2009 às 13h53
Agora tive um bom documento que falasse do Wine. Agradeço de coração por esclarecer uma dúvidas do programa, pois achava que era ilegal e emulador dos programas for windows.

http://www.leo3g.blogspot.com
 
por Leonardo Barros (anônimo) em 5 de maio de 2009 às 13h52
Agora tive um bom documento que falasse do Wine. Agradeço de coração por esclarecer uma dúvidas do programa, pois achava que era ilegal e emulador dos programas for windows.
 
por Fabio (anônimo) em 4 de maio de 2009 às 12h05
Otimo texto Morimoto!

Tenho usado a Wine com muito sucesso aqui, utilizo pra rodar jogos, e alguns programas... tem tudo corrido satisfatoriamente...
depois de seguis alguns tutoriais no wine reviews.net
mas ainda gostaria de um esforço dos grandes desenvolvedores de software para criar versões nativas para linux...

Abraços!!
 
por Vinicius Guastala (anônimo) em 4 de maio de 2009 às 01h10
Ótimo post Morimoto. Sou novo em linux (pra variar) e advinhe: estou com um problema! (pra variar + um pouco ^^) até eu já cansei de ver esse tipo de comentario em fóruns! Bom vamos la, Toda vez q inicio algum aplicativo no Wine, eu não consigo ouvir som nenhum em outros programas enquanto eu nao parar d utilizar o wine (seja em outro exe ou em algum nativo do linux). Sera q ele "trava" o ALSA, o q pode estar acontecendo? Grato. Ah, eu verifiquei isso no Xubuntu e no Kurumin, vou testar no Suse, é só achar o CD xD
 
por bsantucci (anônimo) em 3 de maio de 2009 às 12h53
Seria muito bom se este ou o próximo artigo sobre o Wine falasse se o linux com Wine passa a pegar vírus a assemelhados, e como se defender. Será que vale a pena ?
 
por Carlos E. Morimoto em 3 de maio de 2009 às 10h23
Os textos do blog não são revisados antes de serem publicados. A proposta é justamente disponibilizar prévias de artigos e tópicos dos livros, assim que são escritos.
Geralmente os erros são reportados nos comentários, por isso é importante lê-los também :)
 
por Luiz Fernando (anônimo) em 3 de maio de 2009 às 09h41
Sou leitor assíduo do seu site e tenho me informado muito sobre o Linux aqui, pois sou um usuário relativamente novato no uso deste SO e aprendo bastante com suas aulas, entretanto, o seu texto precisa de duas correções, que não são relacionados a aspectos técnicos (minha audácia não iria tão longe... rs): 1) Onde você escreve "Wine is not and emulator" creio que o correto seria "Wine is not a emulator"; 2) Onde está escrito "auto custo" o correto seria "alto custo".