domingo, 6 de outubro de 2013

Pipelight: uma nova maneria de rodar o Silverlight no Linux

Já tem muito tempo que era possível rodar os videos do Silverlight nos navegadores Linux através do Moonlight, que é um plugin baseado na tecnologia Mono. Porém este plugin acabou sendo descontinuado e a página de download saiu do ar, sendo necessário baixar de um outro lugar.

Até aí nada demais já que ainda era possível assistir algumas aulas online da Estácio que, infelizmente utiliza essa tecnologia. Porém o Moonlight suporta até a versão 4. E, se o sistema que disponibiliza as aulas fizer um upgrade para a versão 5...

Cadê a aula????

Isso não acontecia em todas as matérias já que algumas ainda utilizavam o Flash (ufa!). Porém, precisava assistir as aulas e não tive outra escolha do que rodar um Windows numa máquina virtual para assistir apenas uma ou outra matéria.

Mas, não estava sozinho nessa e a aula online não era o único caso. Isso também acontecia com quem precisava assistir a filmes no Netflix, Telecine Play e qualquer outro serviço de streaming que utiliza o Silverlight. Quem utiliza Linux fica sem opção a não ser rodar o Windows.

Mas logo surgiu uma solução que não é dar um fork no Moonlight já que isso teria que ter acesso a documentação da Microsoft, que não é pública, fazer uma tremenda engenharia reversa para implementar cada função do plugin original, o que levaria muito tempo. Uma boa solução foi utilizar o próprio plugin do Silverlight.

Mas como rodar ele já que o Silverlight é um plugin para a versão Windows do navegadores???

Vamos pensar como o nspluginwrapper que é um plugin intermediário capaz de utilizar os plugins 32bits em navegadores 64bits no Linux. Parece que um grupo pensou a mesma coisa e criaram o Pipelight.

A idéia do Pipelight é a seguinte: Quando o plugin é carregado no navegador ele chama o pluginloader.exe através de uma versão modificada do Wine. Esse pluginloader.exe simula o comportamento de um navegador Windows para o plugin do Silverlight e tudo que é recebido e processado pelo Silverlight é repassado para o Navegador Linux de forma totalmente transparente, ou seja, o resultado final é semelhante a figura abaixo:

Agora sim não vou depender de outro sistema operacional.

Para instalar o pipelight é necessário os seguintes componentes:

  • O plugin do pipelight
  • O wine-compholio - que é uma versão modificada do Wine capaz de rodar o Silverlight
  • wine-silverlight5.1-installer
  • wine-mpg2splt-installer
Os dois últimos componentes instala todo o suporte utilizado pelo Silverlight e o próprio Silverlight.

A instalação varia de distribuição para distribuição, então segue os procedimento para algumas distriubições:

Ubuntu:

sudo apt-add-repository ppa:ehoover/compholio
sudo apt-add-repository ppa:mqchael/pipelight
sudo apt-get update
sudo apt-get install pipelight

#Se o plugin não rodar de primeira:
sudo apt-get install wine-silverlight5.1-installer wine-mpg2splt-installer

Debian:

dpkg --add-architecture i386

wget http://download.opensuse.org/repositories/home:/DarkPlayer:/Pipelight/Debian_7.0/Release.key
apt-key add Release.key

Adicione no /etc/apt/source.list

deb http://download.opensuse.org/repositories/home:/DarkPlayer:/Pipelight/Debian_7.0/ ./

apt-get update

# Debian wheezy
apt-get install pipelight

# Debian jessie 
apt-get install pipelight libjack0:i386

#Se o plugin não rodar de primeira:
sudo apt-get install wine-silverlight5.1-installer wine-mpg2splt-installer

Obs para Debian Sid: Tive um problema no wine-compholio já que ele pedia um pacote que não era instalável na versão instável. Então peguei a versão do ppa do Ubuntu, removi a dependência do libasound2-plugins e recompilei o pacote. Se esse for o seu caso, baixe o pacote que compilei aqui e siga o resto das instruções acima.
Atualização: 07/10 - Em contato com um dos desenvolvedores foi verificado as dependências até chegar no libopus0. E este pacote possui no bug no multiarch descrito em http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=674467. Uma solução é descrita aqui mas o mantenedor do pacote recusa a aplicar o patch indicado até chegar na próxima versão. Enquanto a nova versão não chega ou o mantenedor ceda a pressão dos usuários, tive que aplicar o patch indicado e instalar o libopus0 tanto para amd64 quanto para i386. O procedimento deu certo e consegui instalar os pacotes desta maneira:

dpkg -i libopus0_1.1~beta-3.1_*.deb
apt-get install wine-compholio libasound2-plugins:i386 libavcodec54:i386 

O detalhe é que utilizo alguns pacotes do http://deb-multimedia.org/ que depende do pacote problemático.

Então, se esse for o seu caso, baixe os arquivos libopus0_1.1~beta-3.1_amd64.deb  e libopus0_1.1~beta-3.1_i386.deb neste link e siga o restante dos comandos acima.

And thanks Michael.



OpenSuse:

zypper ar --refresh http://download.opensuse.org/repositories/home:/rbos:/pipelight//home:rbos:pipelight.repo
zypper ref
zypper install pipelight

Ainda tem as instruções para compilar na mão que pode ser acessado na página do projeto.

Além da aula da Estácio, consegui também rodar os vídeos do Telecine Play, só tive um problema para exibir os controles no Chrome mas rodou perfeito no Firefox. Mas isso não deve ser levado como um parâmetro já que testei apenas em uma máquina. Pode ser que funcione em outras instalações, o que varia para cada instalação.

E, se tiver algum problema em alguns sites, tente instalar um User Agent Switcher. Esta parte já foi abordada em http://www.adilson.net.br/2012/02/resolvendo-os-problemas-no-guardiao-30.html e pode servir muito bem agora para certos sites que só querem Windows.

Mais detalhes:

Tenham um bom final de domingo.


Nenhum comentário:

Postar um comentário