Pesquisa de site

Como converter de pacote RPM para DEB e DEB para RPM usando Alien


Como tenho certeza que você já sabe, existem muitas maneiras de instalar software no Linux: usando o sistema de gerenciamento de pacotes fornecido pela sua distribuição (aptitude, yum ou zypper, para citar alguns exemplos), compilando a partir do código-fonte (embora um tanto raro hoje em dia, era o único método disponível durante os primeiros dias do Linux), ou utilizando uma ferramenta de baixo nível como dpkg ou rpm com .deb< e .rpm pacotes autônomos e pré-compilados, respectivamente.

Neste artigo apresentaremos o alien, uma ferramenta que converte entre diferentes formatos de pacotes Linux, com .rpm para .deb (e vice-versa versa) sendo o uso mais comum.

Esta ferramenta, mesmo quando seu autor não a mantém mais e afirma em seu site que o alien provavelmente sempre permanecerá em status experimental, pode ser útil se você precisar de um determinado tipo de pacote, mas só conseguir encontrar esse programa em outro formato de pacote.

Por exemplo, alien salvou meu dia uma vez quando eu estava procurando um driver .deb para uma impressora jato de tinta e não consegui encontrar nenhum – o o fabricante forneceu apenas um pacote .rpm. Instalei o alien, converti o pacote e em pouco tempo consegui usar minha impressora sem problemas.

Dito isto, devemos esclarecer que este utilitário não deve ser usado para substituir arquivos e bibliotecas importantes do sistema, uma vez que são configurados de forma diferente entre distribuições. Use o alien apenas como último recurso se os métodos de instalação sugeridos no início deste artigo estiverem fora de questão para o programa necessário.

Por último, mas não menos importante, devemos observar que embora usaremos CentOS e Debian neste artigo, sabe-se que alien também funciona no Slackware. e até mesmo no Solaris, além das duas primeiras distribuições e suas respectivas famílias.

Etapa 1: Instalando Alien e Dependências

Para instalar o alien no CentOS/RHEL 7, você precisará habilitar o EPEL e o Nux Repositórios Dextop (sim, é Dextop – não Desktop), nesta ordem:

yum install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

A versão mais recente do pacote que habilita este repositório é atualmente 0.5 (publicada em 10 de agosto de 2015). Você deve verificar http://li.nux.ro/download/nux/dextop/el7/x86_64/ para ver se há uma versão mais recente antes de prosseguir:

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

então faça,

yum update && yum install alien

No Fedora, você só precisará executar o último comando.

No Debian e derivados, simplesmente faça:

aptitude install alien

Etapa 2: conversão do pacote .deb para .rpm

Para este teste escolhemos dateutils, que fornece um conjunto de utilitários de data e hora para lidar com grandes quantidades de dados financeiros. Vamos baixar o pacote .deb para nossa caixa CentOS 7, convertê-lo para .rpm e instalá-lo:

cat /etc/centos-release
wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

Importante: (Observe como, por padrão, alien aumenta o número menor da versão do pacote de destino. Se você quiser substituir esse comportamento, adicione o – sinalizador keep-version).

Se tentarmos instalar o pacote imediatamente, encontraremos um pequeno problema:

rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm 

Para resolver este problema, vamos habilitar o repositório epel-testing e instalar o utilitário rpmrebuild para editar as configurações do pacote a ser reconstruído:

yum --enablerepo=epel-testing install rpmrebuild

Então corra,

rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

O que abrirá seu editor de texto padrão. Vá para a seção %files e exclua as linhas que se referem aos diretórios mencionados na mensagem de erro, salve o arquivo e saia:

Ao sair do arquivo, você será solicitado a continuar com a reconstrução. Se você escolher Y, o arquivo será reconstruído no diretório especificado (diferente do diretório de trabalho atual):

rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

Agora você pode instalar o pacote e verificar normalmente:

rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
rpm -qa | grep dateutils

Finalmente, você pode listar as ferramentas individuais que foram incluídas no dateutils e, alternativamente, verificar suas respectivas páginas de manual:

ls -l /usr/bin | grep dateutils

Etapa 3: conversão do pacote .rpm para .deb

Nesta seção ilustraremos como converter de .rpm para .deb. Em uma caixa Debian Wheezy de 32 bits, vamos baixar o pacote .rpm para o shell zsh do sistema operacional CentOS 6 forte> repositório. Observe que este shell não está disponível por padrão no Debian e derivados.

cat /etc/shells
lsb_release -a | tail -n 4

wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

Você pode ignorar com segurança as mensagens sobre falta de assinatura:

Após alguns momentos, o arquivo .deb deverá ter sido gerado e estar pronto para instalação:

dpkg -i zsh_4.3.11-5_i386.deb

Após a instalação, você pode verificar se zsh foi adicionado à lista de shells válidos:

cat /etc/shells

Resumo

Neste artigo explicamos como converter de .rpm para .deb e vice-versa para instalar pacotes como último recurso quando tais programas não estão disponíveis nos repositórios ou como código-fonte distribuível. Você vai querer marcar este artigo porque todos nós precisaremos de alienígenas em um momento ou outro.

Sinta-se à vontade para compartilhar suas idéias sobre este artigo usando o formulário abaixo.