Enquanto o VMware cria 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.
Como disse no início, não existe originalmente 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.
O problema reside justamente no fato da API do Windows ser fechada e existirem muitas chamadas escondidas e até mesmo bugs que são usados pelos programas. A única forma de descobri-las é na base da tentativa e erro, o que faz com que o desenvolvimento do Wine seja bem lento.
O Wine foi provavelmente o maior alpha da história. Foram 12 anos, desde o anúncio das primeiras versões, em 1993. Em 25/10/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. Isso dificultava muito o uso do wine, pois 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. Você pode ver mais detalhes sobre esta fase negra neste tutorial que publiquei no Guia do Hardware: http://www.guiadohardware.net/tutoriais/098/.
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. Vale lembrar que mesmo em estágio alpha, o Wine já rodava uma quantidade muito grande de aplicativos, como o Office, AutoCAD, Photoshop, IE, Lotus Notes e um sem número de pequenos programas. Daqui pra frente a lista tende a aumentar.
Note que o Wine não é perfeito. Mesmo programas que são considerados compatíveis rodam muitas vezes com pequenos defeitos ou pequenas diferenças em relação ao Windows e muitos programas simplesmente não rodam.
Você pode encontrar uma lista de alguns programas testados no: http://www.frankscorner.org/. Naturalmente, esta lista está longe de ser completa, de forma que a melhor forma de saber se um determinado programa roda ou não é simplesmente testando.
O melhor lugar para baixar a última versão do Wine é na própria página do projeto, onde você encontra pacotes para várias distribuições: http://www.winehq.org/site/download.
Para instalá-lo no Ubuntu, Kurumin e outras distribuições derivadas do Debian, adicione a linha abaixo no arquivo “/etc/apt/sources.list”:
Wine
deb http://wine.sourceforge.net/apt/ binary/
Depois de rodar o “apt-get update”, instale o Wine usando o apt-get:
apt-get install -t binary libwine wine
A maioria das distribuições incluem pacotes próprios do Wine. No Ubuntu, por exemplo, ele está disponível no repositório “Universe”. O “-t binary” no comando faz com que o apt-get instale a versão disponível no repositório que adicionamos, ao invés de instalar o pacote disponível no repositório principal do Debian ou Ubuntu.
Depois de instalado, rode o “winecfg” (desta vez usando seu login de usuário, não o root). Ele se encarrega de criar as pastas e arquivos de configuração usados pelo Wine:
$ winecfg
Dentro do painel de configuração, clique em “Drives > Autodect”, isso faz o winecfg criar a configuração que permite que os programas Windows acessem arquivos dentro do seu diretório home e em outras pastas do sistema. O diretório home é geralmente visto dentro dos programas Windows com o drive “H:” e o diretório raiz aparece como o drive “Z:”, mas isso pode variar de acordo com a configuração da sua máquina.
Na aba “Applications” você pode escolher qual versão do Windows será simulada. A maior parte dos programas roda melhor escolhendo “Windows 98”, que é a opção recomendada. Mas, alguns programas só instalam no Windows 2000 ou XP. Nestes casos, você pode experimentar abrir novamente o winecfg e trocar a versão.
Se você pretende usar o som dentro dos aplicativos Windows, acesse a aba “Audio” e marque a opção “Alsa”, no lugar do “OSS” que vem marcado por padrão. Se preferir desativar o som, basta desmarcar ambas as opções.
Depois de salvar a configuração no winecfg, o Wine já está pronto para uso. Um passo importante é instalar o “dcom98” dentro do Wine. Ele é uma atualização importante, necessária para que vários programas rodem corretamente sob o Wine. O arquivo de instalação pode ser baixado no:
http://download.microsoft.com/msdownload/dcom/98/x86/en/dcom98.exe
Para executar programas do Windows, você chama o comando “wine”, seguido do programa Windows que vai ser executado dentro dele. Para instalar o dcom98, use o comando:
$ wine dcom98.exe
Você pode associar os arquivos “.exe” com o Wine no Konqueror, de forma a executá-los simplesmente clicando sobre eles no gerenciador de arquivos.
Para isso, clique com o botão direito sobre um arquivo “.exe” qualquer. Nas propriedades, acesse a opção “Abrir Com” e, no campo para indicar o programa, escreva “wine” e marque a opção “Lembrar da associação de aplicativo para este arquivo”:
A partir daí, ao clicar sobre qualquer executável do Windows, ele será executado automaticamente através do Wine.
Todos os programas instalados através do Wine vão para dentro da pasta “.wine/drive_c” dentro do seu diretório de usuário. Dentro dela, você verá as pastas “Windows”, “Arquivos de programas” e outras usadas pelos programas. Nas versões recentes, o Wine se encarrega também de incluir ícones para os programas instalados no menu:
Aqui estou rodando o Flash MX, um dos programas bem suportados, que instala e roda sem problemas visíveis:
Uma observação é que os programas executados pelo Wine podem (na configuração padrão) ler e modificar arquivos dentro do seu diretório home. Isto significa que, em algumas situações, como ao executar um arquivo infectado através do Wine, o vírus pode apagar ou modificar seus arquivos.
Para evitar essa possibilidade, você pode executar o Wine usando um usuário separado. Crie um novo usuário usando o “adduser” ou o “users-admin” e use o “sux” ou o “su” para logar-se como ele, como em:
$ sux joao
Qualquer programa executado usando este usuário separado poderá no máximo modificar arquivos dentro do home dele, sem risco para seus arquivos.
Vamos a um exemplo prático de uso do Wine, instalando o DVDShrink, que permite fazer backups de DVDs de vídeo. Ele é muito útil, pois os DVDs são caros e ao mesmo tempo frágeis, e você não ganha outro caso o DVD que comprou risque.
O DVDShrink é um dos programas mais simples de usar. Ele extrai o vídeo, junto com legendas, menus e faixas de áudio do DVD original e comprime (caso necessário) de forma que possa ser gravado numa única mídia DVD+R ou DVD-R. Isso permite inclusive fazer backup de DVDs dual-layer numa única mídia, embora com uma pequena perda de qualidade. Você pode também remover as faixas extras de áudio, extras e outros recursos, de forma a deixar mais espaço para o filme.
O único problema é que ele é um programa Windows, um detalhe que o Wine ajuda a resolver.
O primeiro passo é instalar os pacotes libwine e wine, como vimos a pouco. Ao rodar o winecfg, não se esqueça de detectar os drives da máquina, clicando no “Drives > Autodetect”. Você precisa ter instalado também o pacote “libdvdcss2”, disponível via apt-get no repositório Marillat ou via urpmi no plf.
Na aba “Applications”, defina a versão do Windows como “Windows 2000”. O DVDShrink não roda caso o Wine simule o Windows 98.
O próximo passo é baixar o instalador do DVDShrink no http://www.dvdshrink.org/. O ideal é que você rode a versão 3.2 do DVDShrink sobre o Wine 0.9.8, que é um conjunto bastante testado e que funciona seguindo apenas as instruções que reporto aqui. Se não for possível, use uma versão mais atual do Wine, mas nunca uma versão antiga.
Você pode baixar a versão correta do DVDSrink também no link abaixo:
http://www.mrbass.org/dvdshrink/dvdshrink32setup.zip.
Para instalar, descompacte o arquivo e execute-o através do Wine. O instalador roda sem problemas visíveis, como se estivesse rodando diretamente sobre o Windows.
$ unzip dvdshrink32setup.zip
$ wine dvdshrink32setup.exe
Aproveite para instalar também o DVD Decrypter, que permite quebrar sistemas diversos de proteção, gerando um arquivo .iso que pode ser posteriormente processado através do DVDShrink: http://www.mrbass.org/dvdrip/SetupDVDDecrypter_3.5.4.0.exe.
Nas versões anteriores do Wine, era necessário copiar manualmente algumas dlls para dentro da pasta “.wine/drive_c/Windows/System” e criar um link para o CD-ROM dentro da pasta “.wine/dosdevices”, mas atualmente nada disso é necessário. Basta instala-lo diretamente.
Outra melhoria do Wine 0.98 sobre as versões anteriores é que agora são criados (corretamente) ícones no desktop para os aplicativos instalados através do Wine. Isso torna o uso muito mais confortável, pois basta clicar no ícone, como no Windows.
De qualquer forma, se você tem algum problema pessoal com eles, nada impede que execute os programas instalados da forma antiga, especificando o executável e caminho de instalação, como em:
$ wine /home/joao/.wine/drive_c/Arquivos\ de\ programas/DVD\ Shrink/DVD\ Shrink\ 3.2.exe
Veja que nas versões recentes, o Wine usa a pasta “.wine/drive_c” como drive C:, ao invés da “.wine/fake_windows”, usada nas primeiras versões.
Para que qualquer aplicativo executado via Wine consiga acessar o DVD ou CD-ROM no drive, é preciso que ele esteja montado. Ao usar uma distribuição que não faça isso automaticamente via automount, monte-o usando o ícone no desktop, ou o tradicional:
$ mount /mnt/cdrom
Uma coisa que me chamou a atenção ao rodar o DVDShrink pela primeira vez foi definir a região do meu drive de DVD. No Linux, não importa para qual região seu drive está ajustado, pois os aplicativos lêem o disco usando o libdvdcss2, que decodifica o filme diretamente, sem utilizar o chip decodificador incluído no drive.
É por isso que usei meu drive por meses, sem sequer perceber que ele não estava com a região definida:
Ao abrir, clique no botão “Open Disk” para que ele leia o DVD no drive. Se neste ponto você receber uma mensagem de erro “Failed to open file \d:”, abra as permissões do “/dev/cdrom” e do dispositivo do seu drive de DVD, como “/dev/hdc” ou “/dev/hdd”, usando o comando chmod, de forma que o Wine tenha permissão para acessar o disco:
chmod 666 /dev/cdrom
chmod 666 /dev/hdc
No caso de DVDs com algum dos sistemas de proteção recentes (onde o DVD Shrink reporta um erro similar), existe a possibilidade de usar o Mplayer para quebrar a proteção, permitindo que o DVD Shrink acesse o DVD já sem a proteção ativa. Para isso, você precisa ter o Mplayer instalado, junto com o pacote libdvdcss.
Com o DVD no drive, chame o Mplayer (via linha de comando), como se fosse assistir o DVD:
$ mplayer dvd://1
Caso necessário, especifique o driver de vídeo a ser usado, como em:
$ mplayer -vo xv dvd://1
Feche a janela pouco depois de começar o filme, monte o “/mnt/cdrom” e abra o DVD Shrink. Você notará que apenas por previamente abrir o filme no Mplayer, ele conseguirá acessar o conteúdo do DVD normalmente. Isso acontece por que uma vez quebrado o sistema de proteção, o DVD fica disponível para qualquer aplicativo. Você precisa chamar o Mplayer novamente para cada novo DVD, mas é ainda bem mais prático do que ter que usar o DVD Decrypter, como seria necessário no Windows.
Na tela principal do DVDShrink você tem a opção de eliminar as trilhas e áudio e legendas de que não precisa. Nas configurações, desmarque a opção “Enable Burning with Nero”, já que vamos gravar o DVD usando o K3B.
Ao clicar no “Backup!” você tem a tela final, onde você escolhe em qual pasta salvar o arquivo final (é preciso ter pelo menos 4.4 GB livres) e mais algumas opções relacionadas à qualidade do arquivo gerado. No meu caso, estou salvando no “drive” E:, que corresponde à pasta “/mnt/hda6” no Linux.
Depois de extraídos os arquivos, falta gravar o DVD, usando o K3B. Crie um “Novo Projeto de DVD de Vídeo”, arraste os arquivos das pastas “AUDIO_TS” e “VIDEO_TS” (de dentro da pasta gerada) para dentro do projeto e clique no “Queimar”. Note que a pasta “AUDIO_TS” fica vazia quando você desmarca as faixas de áudio extras.
Se você prefere utilizar um programa nativo, experimente o k9copy, que embora não seja tão completo quanto o DVDShrink, é bem simples de usar e oferece os recursos mais básicos. A página do projeto é a http://k9copy.free.fr/ e você pode instala-lo via apt-get através do pacote “k9copy”, disponível no repositório Marillat.