De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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!
$ sudo apt-get install equivs
$ 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
$ 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.
$ sudo dpkg -i libavformat-extra-52_1_all.deb
$ 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
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários