Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Curso de Inglês Online

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Resolvendo dependências de pacotes Ubuntu no Debian

Colaboração: Conrado Pinto Rebessi

Data de Publicação: 05 de março de 2010

Apesar do Ubuntu ser baseado em Debian, tem sido muito comum encontrar pacotes .deb compilados para Ubuntu/Debian, mas que certamente não foram testados no Debian, simplesmente assumindo que funcionando no Ubuntu funcionariam no Debian.

Na verdade os binários funcionam no Debian, mas o problema é para instalá-los, pois os pacotes muitas vezes tem nomes diferentes nas duas distribuições, então as dependências ficam quebradas.

Por exemplo, fui tentar instalar a versão mais atual do devede, baixado do site do desenvolvedor http://www.rastersoft.com/programas/devede.html, e recebi o erro:

  $ sudo dpkg -i devede_3.16.4-0~rastersoft1_all.deb
   (Lendo banco de dados ... 268103 arquivos e diretórios atualmente instalados).
   Preparando para substituir devede 3.16.0-0.0 (usando devede_3.16.4-0~rastersoft1_all.deb) ...
  Desempacotando substituto devede ...
  dpkg: problemas de dependência impedem a configuração de devede:
   devede depende de libavformat-extra-52; porém:
    Pacote libavformat-extra-52 não está instalado.
  dpkg: erro processando devede (--install):
   problemas de dependência - deixando desconfigurado
  Processando gatilhos para gnome-menus ...
  Processando gatilhos para desktop-file-utils ...
  Erros foram encontrados durante o processamento de:
   devede

O interessante é que eu tenho o pacote libavformat instalado, e na versão certa, pude ver isto com um simples:

  $ dpkg -l | grep libavformat
  ii  libavformat52                         5:0.5+svn20100208-0.1          ffmpeg file format library

Ou seja, eu tenho CERTEZA que, em termos de sistema, a dependência está resolvida, mas para dpkg, não está, e ponto. Normalmente, quando nos deparamos com um problema deste tipo, podemos usar o velho e bom

  $ dpkg -i --force-depends devede_3.16.4-0~rastersoft1_all.deb

Isto vai resolver, e o programa vai funcionar perfeitamente, mas a base do apt vai ficar quebrada, afinal, existe uma dependência não-resolvida, então, toda a facilidade de utilizar o apt para instalar programas e gerenciar as atualizações do sistema estará perdida, ou seja, não rola....

Procurando nos fóruns descobri um "workaround" (modo bonito de chamar gambiarra :-) ), que se chama equivs! Basicamente, com o equivs, você pode criar um pseudo-pacote debian, só para resolver dependências. Bom, chega de blábláblá e vamos trabalhar!

1. Instalando

    $ sudo apt-get install equivs

2. Utilizando

  $ cd /tmp
  $ equivs-control libavformat-extra-52

Será criado um arquivo com o nome do pacote que pedimos para criar. Então, precisamos editar o arquivo e colocar os parâmetros necessários

  $ vi libavformat-extra-52

Arquivo alterado

  # Commented entries have reasonable defaults.
  # Uncomment to edit them.
  Section: misc
  Priority: optional
  # Homepage: < enter URL here; no default>
  Standards-Version: 3.6.2
  Package: libavformat-extra-52
  Version: 1
  # Maintainer: Your Name < yourname@example.com>
  # Pre-Depends: < comma-separated list of packages>
  Depends: libavformat52
  # Recommends: < comma-separated list of packages>
  # Suggests: < comma-separated list of packages>
  # Provides: < comma-separated list of packages>
  # Replaces: < comma-separated list of packages>
  # Architecture: all
  # Copyright: < copyright file; defaults to GPL2>
  # Changelog: < changelog file; defaults to a generic changelog>
  # Readme: < README.Debian file; defaults to a generic one>
  # Extra-Files: < comma-separated list of additional files for the doc directory>
  # Files: < pair of space-separated paths; First is file to include, second is destination>
  #  < more pairs, if there's more than one file to include. Notice the starting space>
  Description: Dummy package to satisfy devede dependencies
  Dummy package to satisfy devede dependencies

Deixei a maior parte do arquivo comentada mesmo, já que não fazia diferença, e editei as que precisei, assim:

  Package: < nome do pacote faltante>

Aqui eu defini o nome do pacote que vou criar, é o pacote que está faltando.

  Depends: < nome do pacote real>

Para diminuir o perigo de quebrar todo o sistema mais tarde e não fazer a menor ideia porquê, Coloquei o pacote real como dependência do virtual, assim não perco a cadeia de dependências.

  Description: < descrição sucinta em uma linha>
   < Descrição completa em quantas linhas e parágrafos forem necessários.>

É sempre interessante saber porquê criamos um pseudo-pacote

3. Criamos então o pacote

  $ equivs-build libavformat-extra-52
  
  dh_testdir
  dh_testroot
  dh_clean -k
  dh_clean: Compatibility levels before 5 are deprecated.
  dh_testdir
  dh_testroot
  dh_install
  dh_install: Compatibility levels before 5 are deprecated.
  dh_installdocs
  dh_installdocs: Compatibility levels before 5 are deprecated.
  dh_installchangelogs
  dh_installchangelogs: Compatibility levels before 5 are deprecated.
  dh_compress
  dh_compress: Compatibility levels before 5 are deprecated.
  dh_fixperms
  dh_fixperms: Compatibility levels before 5 are deprecated.
  dh_installdeb
  dh_installdeb: Compatibility levels before 5 are deprecated.
  dh_gencontrol
  dh_gencontrol: Compatibility levels before 5 are deprecated.
  dh_md5sums
  dh_md5sums: Compatibility levels before 5 are deprecated.
  dh_builddeb
  dh_builddeb: Compatibility levels before 5 are deprecated.
  dpkg-deb: construindo pacote 'libavformat-extra-52' em '../libavformat-extra-52_1_all.deb'.
  
  The package has been created.

4. E o instalamos

  $ sudo dpkg -i libavformat-extra-52_1_all.deb

5. Agora podemos instalar o devede sem problemas

  $ sudo dpkg -i devede_3.16.4-0~rastersoft1_all.deb
  (Lendo banco de dados ... 268013 arquivos e diretórios atualmente instalados).
  Preparando para substituir devede 3.12c-0.0 (usando devede_3.16.4-0~rastersoft1_all.deb) ...
  Desempacotando substituto devede ...
  Configurando devede (3.16.4-0~rastersoft1) ...
  Processando gatilhos para gnome-menus ...
  Processando gatilhos para desktop-file-utils ...

Apenas lembrando, utilize este processo apenas aonde você tiver CERTEZA que as dependências estão REALMENTE resolvidas, ou seja, valem as mesmas ressalvas de quando você usa um dpkg --force-depends, ou o seu sistema pode se tornar instável e você não vai lembrar dos pseudo-pacotes que você criou, vai?

Conrado Pinto Rebessi é Formado em Ciência da computação, é especialista em Linux e Software Livre desde 1998, e possui certificações LPIC-1 e RHCE

Veja a relação completa dos artigos de Conrado Pinto Rebessi

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1059 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis