MEncoder - Criando Programa Gráfico Para Conversão
Você gosta do MEncoder? Porém, acha um problema ter que memorizar os comandos? Não seria melhor ter um Script que,
com dois ou três cliques, faz o trabalho para você? Aqui vamos fazer um Script e transformá-lo em um programa, com
direito a ícone e tudo mais... Meu alvo principal é um Script que converta vídeos e que sejam compatíveis com o sistema
do PS3.
com dois ou três cliques, faz o trabalho para você? Aqui vamos fazer um Script e transformá-lo em um programa, com
direito a ícone e tudo mais... Meu alvo principal é um Script que converta vídeos e que sejam compatíveis com o sistema
do PS3.
Parte 7: Criando um Pacote DEB
Outra maneira de fazer o seu Script, que agora já podemos chamar de programa, ser distribuído para amigos que tenham outras distros diferentes da
sua, é criando uma versão em DEB.
Como eu demostrei na última página, fazer um pacote RPM ou DEB, vai garantir que a distro do seu amigo tenha o seu programa completamente funcional, mesmo que o sistema dele não tenha os programas usados pelo seu Script.
Assim, como fizemos um pacote RPM, a maneira de criar um pacote DEB é bem semelhante, mas com algumas diferenças. Um ponto que vale expressar também, é que você não precisa estar em um ambiente DEB para criar um pacote DEB, ou em um ambiente RPM, para criar um RPM.
Para esclarecer aos novatos que não entenderam meu último parágrafo, ambiente DEB quer dizer que o padrão da distribuição é instalar pacotes DEB, e a mesma coisa para RPM.
Por exemplo, o PCLinuxOS usa o RPM, então todos os seu repositórios contém pacotes RPM. Já o Ubuntu, usa o DEB, por isso seus repositórios só tem pacotes DEB.
As mais conhecidas distros em DEB são Debian, Ubuntu, Knoppix, Kurumim, Damn Small Linux (DSL).
Os mais conhecidos do lado RPM são: Red Hat, Fedora, PcLinuxOS, Mandriva e um que não vem de uma base RPM, porém implementa o RPM como padrão é o SUSE (SUSE vem do Slackware).
Vamos ao ponto principal, criando um pacote DEB.
Caso você pulou o pacote RPM porque DEB interessa mais a você, no passo anterior, juntamos todos os arquivos usados pelo nosso programa em uma pasta, você deve fazer o mesmo no terminal com os comandos:
mkdir -p debian/DEBIAN
$ cd debian
$ mkdir -p usr/local/bin
$ mkdir -p usr/share/applications
$ mkdir -p opt/Ps3/icons
$ cp /usr/share/applications/Ps3.desktop usr/share/applications/
$ cp /usr/local/bin/Ps3.sh usr/local/bin/
$ cp /opt/Ps3/icons/*.png opt/Ps3/icons/
$ cd ~/
Só para atualizar, quem pulou direto para esta página. Volte à página anterior e siga as instruções para criar o Script “postisntall.sh”, salve ele em: “opt/Ps3/bin” e chame-o ou coloque em “debian/DEBIAN” como: postinstall.
você não deve renomear esse arquivo com outro nome.
Agora, para checar se tudo está no local certo, digite:
clear
$ find debian
Você vai ver a lista com todos os diretórios e o que eles têm dentro. Todos os arquivos estão no lugar certo, vamos à parte mais importante.
Usando o seu editor de texto preferido, crie o arquivo “control” dentro da pasta “debian/DEBIAN”. No meu caso, eu uso o KWrite:
kwrite ~/debian/DEBIAN/control
Agora, vou escrever as informações do meu programa assim:
Outra coisa importante, no final do arquivo “control”, você deve deixar 2 linhas vazias apertando o ENTER.
Por que? Eu não sei... Creio que seja para o programa que cria o arquivo DEB reconhecer que esse é o final do arquivo.
Depois de ter salvo o arquivo em seu devido lugar, vamos ao comando mágico para a criação do pacote:
Dando a correta permissão para todos os arquivos:
find debian/ -type d | xargs chmod 755
Criando o pacote como Root:
sudo dpkg-deb --build debian Ps3-1.0-1.all.deb
Entregando ao usuário comum, fazendo dele o dono do arquivo:
sudo chown mauricio:mauricio Ps3-1.0-1.all.deb
Troque o meu nome pelo nome do seu usuário, caso você esteja em um sistema Debian, instale o programa com o comando:
sudo dpkg-deb -i Ps3-1.0-1.all.deb
Caso você esteja como eu, em outro tipo de distro e você quer testar se deu certo, com o programa de ZIP do Linux, abra o arquivo DEB. No meu caso, uso o ARK.
Ao abrir, eu devo encontrar dois arquivos “tar.gz” e um binário, “debian-binary”, “data.tar.gz” e “control.tar.gz”.
Agora, a única coisa que eu não sei ainda, é como colocar o meu programa no repositório do Ubuntu, por exemplo.
Se alguém souber, nos mande esta dica nos comentários.
No próximo passo, vamos testar a instalação no ambiente Debian.
Como eu demostrei na última página, fazer um pacote RPM ou DEB, vai garantir que a distro do seu amigo tenha o seu programa completamente funcional, mesmo que o sistema dele não tenha os programas usados pelo seu Script.
Assim, como fizemos um pacote RPM, a maneira de criar um pacote DEB é bem semelhante, mas com algumas diferenças. Um ponto que vale expressar também, é que você não precisa estar em um ambiente DEB para criar um pacote DEB, ou em um ambiente RPM, para criar um RPM.
Para esclarecer aos novatos que não entenderam meu último parágrafo, ambiente DEB quer dizer que o padrão da distribuição é instalar pacotes DEB, e a mesma coisa para RPM.
Por exemplo, o PCLinuxOS usa o RPM, então todos os seu repositórios contém pacotes RPM. Já o Ubuntu, usa o DEB, por isso seus repositórios só tem pacotes DEB.
As mais conhecidas distros em DEB são Debian, Ubuntu, Knoppix, Kurumim, Damn Small Linux (DSL).
Os mais conhecidos do lado RPM são: Red Hat, Fedora, PcLinuxOS, Mandriva e um que não vem de uma base RPM, porém implementa o RPM como padrão é o SUSE (SUSE vem do Slackware).
Vamos ao ponto principal, criando um pacote DEB.
Caso você pulou o pacote RPM porque DEB interessa mais a você, no passo anterior, juntamos todos os arquivos usados pelo nosso programa em uma pasta, você deve fazer o mesmo no terminal com os comandos:
mkdir -p debian/DEBIAN
$ cd debian
$ mkdir -p usr/local/bin
$ mkdir -p usr/share/applications
$ mkdir -p opt/Ps3/icons
$ cp /usr/share/applications/Ps3.desktop usr/share/applications/
$ cp /usr/local/bin/Ps3.sh usr/local/bin/
$ cp /opt/Ps3/icons/*.png opt/Ps3/icons/
$ cd ~/
Só para atualizar, quem pulou direto para esta página. Volte à página anterior e siga as instruções para criar o Script “postisntall.sh”, salve ele em: “opt/Ps3/bin” e chame-o ou coloque em “debian/DEBIAN” como: postinstall.
você não deve renomear esse arquivo com outro nome.
Agora, para checar se tudo está no local certo, digite:
clear
$ find debian
Você vai ver a lista com todos os diretórios e o que eles têm dentro. Todos os arquivos estão no lugar certo, vamos à parte mais importante.
Usando o seu editor de texto preferido, crie o arquivo “control” dentro da pasta “debian/DEBIAN”. No meu caso, eu uso o KWrite:
kwrite ~/debian/DEBIAN/control
Agora, vou escrever as informações do meu programa assim:
Package: Ps3-video
Version: 1.0-1
Section: Video
Priority: optional
Architecture: all
Depends: bash (>= 2.05a-11), zenity (>= 2.32.1-3), awk, mencoder (>= 4.4.1-0), sed (>= 3.02-8), grep (>= 2.4.2-3), sox (>= 14.3.0-5), lame
(>= 3.98-2), libxvidcore4 (>= 1.2.2-2)
Maintainer: Mauricio Luis de Medeiros <jesusmlmph@gmail.com>
Description: Ps3-video
Convert almost all kind of video to avi playable on PS3 console.
Version: 1.0-1
Section: Video
Priority: optional
Architecture: all
Depends: bash (>= 2.05a-11), zenity (>= 2.32.1-3), awk, mencoder (>= 4.4.1-0), sed (>= 3.02-8), grep (>= 2.4.2-3), sox (>= 14.3.0-5), lame
(>= 3.98-2), libxvidcore4 (>= 1.2.2-2)
Maintainer: Mauricio Luis de Medeiros <jesusmlmph@gmail.com>
Description: Ps3-video
Convert almost all kind of video to avi playable on PS3 console.
- Package: é o nome do seu programa. As demais coisas você já sabe oque e só de olhar né?
- Architeture: seria o tipo de Hardware que o seu programa vai rodar, 32bits | 64bits. Algum processador que não seja Intel ou AMD... como no meu caso, trata-se de um Script que pode rodar independente da arquitetura do Hardware, eu coloquei: all (todas).
- Depends: é a mesma coisa do que o Requires do pacote RPM. As dependências do seu programa, quais os programas e bibliotecas externas que ele usa, assim quando o seu amigo instalar seu programa, se ele não tem algum dos programas necessários, ou o aplicativo de instalação vai fazer o download e instalar automaticamente, ou ele vai indicar qual o programa que está faltando e pedir para instalar ele primeiro. Isso depende de distro para distro.
- Description: é a descrição que vai aparecer quando a pessoa vai instalar ou atualizar seu programa, ela verá no Synaptic.
Outra coisa importante, no final do arquivo “control”, você deve deixar 2 linhas vazias apertando o ENTER.
Por que? Eu não sei... Creio que seja para o programa que cria o arquivo DEB reconhecer que esse é o final do arquivo.
Depois de ter salvo o arquivo em seu devido lugar, vamos ao comando mágico para a criação do pacote:
Dando a correta permissão para todos os arquivos:
find debian/ -type d | xargs chmod 755
Criando o pacote como Root:
sudo dpkg-deb --build debian Ps3-1.0-1.all.deb
Entregando ao usuário comum, fazendo dele o dono do arquivo:
sudo chown mauricio:mauricio Ps3-1.0-1.all.deb
Troque o meu nome pelo nome do seu usuário, caso você esteja em um sistema Debian, instale o programa com o comando:
sudo dpkg-deb -i Ps3-1.0-1.all.deb
Caso você esteja como eu, em outro tipo de distro e você quer testar se deu certo, com o programa de ZIP do Linux, abra o arquivo DEB. No meu caso, uso o ARK.
Ao abrir, eu devo encontrar dois arquivos “tar.gz” e um binário, “debian-binary”, “data.tar.gz” e “control.tar.gz”.
- Debian-binary: é um arquivo binário que você não vai conseguir abrir.
- data.tar.gz: são os arquivos do seu programa na forma que você colocou.
- control.tar.gz: é o arquivo que você criou com o resumo do seu programa em: debian/DEBIAN/control
Agora, a única coisa que eu não sei ainda, é como colocar o meu programa no repositório do Ubuntu, por exemplo.
Se alguém souber, nos mande esta dica nos comentários.
No próximo passo, vamos testar a instalação no ambiente Debian.
Não vou tecer críticas pois o artigo é bem detalhado, mas gostaria de contribuir com algumas sugestões, que podem facilitar ou serem alternativas.
Já tive problemas com o mplayer e mencoder, assim como você, na questão de reconhecimento das dependências, especialmente com o Ubuntu.
O que pode fazer também é usar o ffmpeg no lugar do mencoder para as conversões, mas confesso não lembrar se tem todas as opções disponíveis do seu "Programa".
Outa opção é usar o flite ( http://www.speech.cs.cmu.edu/flite ) em substituição a tríade text2wave, lame e play, o que poderia ser feito nesse formato flite -t "Texto".
De resto está perfeito, Parabéns!!