Eu criei um pacote deb para um aplicativo criado no Qt. Eu incluí todas as bibliotecas das quais o aplicativo depende, para serem instaladas em uma pasta ao lado do próprio aplicativo:
/usr/share/MyCompany/MyProduct/executable
/usr/share/MyCompany/MyProduct/Frameworks
Em seguida, exportado LD_LIBRARY_PATH
apontando para o diretório Frameworks
.
Tudo perfeito ... Até que tive que adicionar o QT Assistant, que requer bibliotecas adicionais.
Após verificar as dependências do Qt Assistant, adicionei todas as bibliotecas necessárias, incluindo libQtHelp.so.4
e libQtWebKit.so.4
, no mesmo diretório.
Meu deb é muito simples, eu crio a estrutura desejada, em seguida, defino a "instalação" para copiar meus arquivos para os diretórios de destino.
blah_1/* /usr/share/MyCompany/MyProduct/
Para criar o pacote, eu crio o tar então
dh_make --copyright gpl -f ../blah-1.0.tar.gz
dpkg-buildpackage -rfakeroot [email protected]
Ao executar o instalador em um sistema limpo (sem Qt), estou recebendo erros de dependência:
me:~$ sudo dpkg -i /path/blah_1.0-1_i386.deb
Selecting previously unselected package blah.
(Reading database ... 141841 files and directories currently installed.)
Unpacking blah (from .../blah_1.0-1_i386.deb) ...
dpkg: dependency problems prevent configuration of blah:
blah depends on libqt4-help (>= 4:4.8.0); however:
Package libqt4-help is not installed.
blah depends on libqtwebkit4 (>= 2.2~2011week36); however:
Package libqtwebkit4 is not installed.
dpkg: error processing blah (--install):
dependency problems - leaving unconfigured
Processing triggers for shared-mime-info ...
Processing triggers for desktop-file-utils ...
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for gnome-menus ...
Errors were encountered while processing:
blah
Infelizmente, o sistema que estou instalando não tem (e não terá) acesso à Internet. Como posso fornecer os pacotes necessários, no mesmo instalador deb?
Ou, como posso desabilitar a verificação de dependências, já que estou fornecendo as bibliotecas necessárias?
(Ubuntu 12.04 se isso for relevante)
Atualização: eu corri
sudo dpkg -i --ignore-depends=libqt4-help,libqtwebkit4 /path/blah_1.0-1_i386.deb
O programa foi instalado corretamente e funcionou perfeitamente.
Dentro do pacote, no /DEBIAN/control
, vejo as dependências indesejadas listadas.
Depois de chamar o dh_make, não tive dependências no arquivo de controle.
O dpkg-buildpackage deve ter colocado as dependências após a verificação (provavelmente para assistente).
Posso removê-los de alguma forma? Posso colocar uma bandeira em algum lugar para não incluir dependências?
Ou ... ainda .... posso adicionar na minha embalagem os pacotes deb e existe um comando que eu possa dar para pré-instalar como parte da instalação do pacote?
Se não houver solução .... suponho que posso fornecer um script para executar o comando dpkg como acima, com ignore-depends, mas o pacote não pode ser instalado a partir do Centro de Software ...