Usando o dpkg para instalar pacotes de um diretório local

4

Estou refinando nosso instalador. A maneira como funciona é que todos os nossos componentes são feitos em arquivos .deb. O instalador apenas chama o dpkg em todos eles de uma só vez, junto com suas dependências. Isso funciona muito bem ... desde que você instale no Ubuntu Linux 8.04.1. Ao instalar no Ubuntu 8.04.3, por exemplo, a versão do libc6-dev que pode ser instalada é maior. Mas o dpkg ainda parece instalar nossa versão do libc6-dev, apesar do fato de que uma versão superior já está instalada. Como você poderia esperar, isso causa problemas.

Qual é a maneira correta de fazer isso? Verifique cada pacote que estamos prestes a instalar contra o que está no sistema? Eu pensei que o dpkg ou o apt fizessem isso por nós. Em segundo lugar, por que isso deve ser tão doloroso quanto é? Os computadores de destino não terão acesso à Internet nem acesso a um espelho. Devemos ser capazes de enviar o aplicativo para ser totalmente independente. Pacotes deveriam nos libertar do inferno da dependência e parece que eles não são.

    
por Matt Green 01.10.2009 / 18:05

2 respostas

2

A solução mais limpa parece ser colocar todos os seus pacotes em um repositório local, como um CD de pacote, e incluir um arquivo em /etc/apt/sources.list.d para incluir o repositório. Então deve ser uma simples questão de fazer aptitude update; aptitude install <packages> para obter automaticamente os pacotes corretos instalados.

    
por 01.10.2009 / 21:36
1

Eu não acredito que dpkg verifique o número da versão de pacotes já instalados. apt deve fazer isso, mas não acredito que seja instalado a partir do disco, a menos que você modifique sources.list (normalmente localizado em /etc/apt/ ). Se você adicionar seu diretório de origem no sources.list , você deve ser capaz de executar o comando padrão apt-get install e toda a verificação feita para você.

    
por 01.10.2009 / 18:12