domingo, 1 de setembro de 2013

7. Criando pacotes Wine para Debian 7

Wine é um programa para Linux que permite rodar aplicações Windows no Linux nativamente, sem necessidade de emulação ou de máquinas virtuais. No Debian 8 a única versão disponível do Wine é a 1.6.2, bastante defasada. O Wine é atualizado frequentemente, com muitas modificações e evoluções em relação à versão do repositório do Debian Jessie (stable). E a versão de desenvolvimento do Wine já está na 1.8 rc4.

Existe, é claro, uma versão desenvolvida para o Debian Unstable, que é a versão 1.7.15, mas ela NÃO FUNCIONA no Debian Wheezy. No entanto, se quiser baixar a versão do Debian Unstable clique aqui.

O mais sensato é compilar a versão mais atual e criar os pacotes para rodar no Debian Wheezy, seja 32 (i386) ou 64 (amd64) bits. O procedimento é bem fácil.

As dicas a seguir foram adaptadas do blog Lindqvist.

Mãos à obra!

A primeira coisa a fazer antes de compilar o Wine, é criar um chroot para fazer a compilação, sem "sujar" nosso sistema com tranqueiras. Para isso serve o chroot (change root).

1A. Caso já tenha compilado o Wine anteriormente

Caso já tenha compilado o Wine anteriormente usando o método chroot, então apenas entre no chroot:

cd $HOME/tmp/architectures/
sudo mount -o bind /proc wine32/proc
sudo cp /etc/resolv.conf wine32/etc/resolv.conf
sudo chroot wine32
su sandbox
cd ~/tmp

E pule para o passo 3 abaixo. Começando do ponto em que você baixa o Wine (wget ...) para a pasta /tmp dentro da sandbox.

1B. Caso nunca tenha criado um chroot, crie um

sudo aptitude install debootstrap
mkdir $HOME/tmp/architectures/wine32 -p
cd $HOME/tmp/architectures
sudo debootstrap --arch i386 wheezy $HOME/tmp/architectures/wine32 http://ftp.br.debian.org/debian/
sudo mount -o bind /proc wine32/proc
sudo cp /etc/resolv.conf wine32/etc/resolv.conf
sudo chroot wine32
 
2. Configurando o chroot

Seguindo os passo acima, a essa altura você já está dentro do chroot, então:

aptitude update
aptitude install locales sudo vim
echo 'export LC_ALL="C"'>>/etc/bash.bashrc
echo 'export LANG="C"'>>/etc/bash.bashrc
echo '127.0.0.1 localhost beryllium' >> /etc/hosts
source /etc/bash.bashrc
adduser sandbox
usermod -g sudo sandbox
echo 'Defaults !tty_tickets' >> /etc/sudoers
su sandbox
cd ~/

OBS.: beryllium é o nome do host do sistema, aquele que aparece após o @ no terminal. Aqui é debian, no Lindqvist, de onde copiei as instruções, é beryllium.

3. Baixando e instalando programas básicos

sudo aptitude install libx11-dev:i386 libfreetype6-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxxf86vm-dev:i386 libxrandr-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libglu-dev:i386 libosmesa-dev:i386 libglu-dev:i386 libosmesa-dev:i386 libdbus-1-dev:i386 libgnutls-dev:i386 libncurses-dev:i386 libsane-dev:i386 libv4l-dev:i386 libgphoto2-2-dev:i386 liblcms-dev:i386 libgstreamer-plugins-base0.10-dev:i386 libcapi20-dev:i386 libcups2-dev:i386 libfontconfig-dev:i386 libgsm1-dev:i386 libtiff-dev:i386 libpng-dev:i386 libjpeg-dev:i386 libmpg123-dev:i386 libopenal-dev:i386 libldap-dev:i386 libxrender-dev:i386 libxml2-dev:i386 libxslt-dev:i386 libhal-dev:i386 gettext:i386 prelink:i386 bzip2:i386 bison:i386 flex:i386 oss4-dev:i386 checkinstall:i386 ocl-icd-libopencl1:i386 opencl-headers:i386 libasound2-dev:i386 build-essential liblcms2-2 liblcms2-dev liblcms2-utils

Esse comando acima baixará 163 MB de arquivos. Serão 20~30 minutos com uma conexão de 1 Mbit/s. Haja paciência... Eu preferi fazer backup da pasta /tmp/architectures/wine32/var/cache/apt/archives para compilações futuras do wine, é aí que ficam salvos os pacotes baixados. O Debian procura aí antes de baixar os pacotes.

mkdir ~/tmp
cd ~/tmp 
wget http://dl.winehq.org/wine/source/1.8/wine-1.8-rc4.tar.bz2
tar xvf wine-1.8-rc4.tar.bz2 
cd wine-1.8-rc4/

OBS.: ao invés de usar o wget para baixar o código-fonte do wine para dentro do chroot, você pode copiar e colar direto na pasta /home/VOCÊ/tmp/architectures/win32/home/sandbox/tmp/.

4. Compilando o código-fonte do Wine

./configure
time make -j4

OBS.1: a opção "-j4" é o número de cores que sua CPU possui. Aqui eu tenho um dual-core com HT ligado, o que cria na prática 4 cores, então coloquei -j4.

OBS.2: os procedimentos acima podem levar muito tempo, dependendo da sua máquina. Aqui eu troquei de processador algumas vezes, e tive tempos diferentes:
  • Athlon 64 x2 6000+ (25 min.)
  • Phenom II x2 550 (21 min. 35 seg.) [14% + rápido]
  • Core i3-4160 (10 min. 28 seg.) [58% + rápido]

5. Criando o pacote Debian

O trabalho grosso já foi feito. Vamos criar o pacote:

sudo checkinstall --install=no (para wine 1.6.x)

sudo checkinstall --install=no --fstrans=no (para wine 1.7.x e 1.8.x)

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]:
Preparing package documentation...OK
Please write a description for the package.
End your description with an empty line or EOF.
>> wine 1.8-rc4
>>
*****************************************
** Debian package creation selected ** *****************************************
This package will be built according to these values:
0 - Maintainer: [ root@beryllium ]
1 - Summary: [ wine 1.8-rc4]
2 - Name: [ wine ]
3 - Version: [ 1.8-rc4]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ wine-1.8-rc4 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ wine ]
12 - Conflicts: [ ]
13 - Replaces: [ ]
Checkinstall também demora um pouquinho (em particular o passo: Copying files to the temporary directory...), mas muito menos do que na compilação (cerca de 5 minutos).

6. Instalando

Saia do chroot:

sandbox@beryllium:~/tmp/wine-1.8-rc4$ exit
exit
root@beryllium:/# exit
exit
me@beryllium:~/tmp/architectures$

Habilite multiarch e instale ia32-libs, pois você construiu um pacote i386 (32 bits):

sudo dpkg --add-architecture i386
sudo aptitude update
sudo aptitude install ia32-libs

Copie o pacote deb e o instale:

sudo cp wine32/home/sandbox/tmp/wine-1.8-rc4/wine_1.8-rc4-1_i386.deb .
sudo chown $USER wine_1.8-rc4-1_i386.deb
sudo dpkg -i wine_1.8-rc4-1_i386.deb

2 comentários:

  1. Valeu amigo! Ótimo tutorial.
    Consegui instalar o wine sem problemas, mas o winetricks não instalou junto. Aparece o ícone dele, mas não abre (nem mesmo pelo terminal). O que pode ser?

    ResponderExcluir
    Respostas
    1. Olá Edson. O winetricks não é instalado junto quando você cria um pacote. Isso (winetricks) é coisa dos desenvolvedores do Debian.

      Excluir