O software proprietário reempacotado continua atualizando o mesmo deb

0

Eu reembalei um programa proprietário entregue como arquivo tar para um arquivo deb por ter um repositório amplo da empresa.

Eu usei o reprepro para configurar um repositório e o assinei. Um carimbo de data / hora unix está falsificando uma numeração de versão, para que eu possa ter versões diferentes (reais) instaladas ao mesmo tempo. Quase tudo funciona como esperado. O arquivo deb se parece com isso: mysoft8.0v6_1366455181_amd64.deb

Único problema em uma máquina cliente, ele tenta instalar o mesmo arquivo deb repetidamente, porque acha que é uma atualização. O que eu sinto falta:

o arquivo de controle no pacote deb se parece com isto:

Package: mysoft8.0v6
Version: 1366455181
Section: base
Priority: optional
Architecture: amd64
Installed-Size: 1272572 
Depends:
Maintainer: me
Description: mysoft 8.0v6 dpkg repackaging

e a configuração no repositório: /mirror/mycompany.inc/conf/distributions:

Origin: apt.mycompany.inc
Label: apt repository
Codename: precise
Architectures: amd64 i386
Components: main
Description: Mycompany debian/ubuntu package repo
SignWith: yes
Pull: precise

Ajuda muito apreciada

Guia adicionado: Este é o guia que eu usado para criar o repositório.

    
por Johannes 20.08.2013 / 16:46

1 resposta

0

Para ter versões diferentes do software instaladas ao mesmo tempo, você precisa usar nomes de pacotes diferentes em vez de números de versão diferentes; somente uma versão de um pacote (identificada pelo nome) pode ser instalada ao mesmo tempo.

Por exemplo, digamos que você precisa ter o MySoft 7 e o MySoft 8 instalados ao mesmo tempo, mas também precisa atualizar cada versão quando o fornecedor liberar pequenas atualizações. Talvez você comece com o MySoft 7.0 v6 que deseja instalar em /opt/vendor/mysoft7 e MySoft 8.0 v2 que você deseja instalar em /opt/vendor/mysoft8 , então você construiria dois pacotes:

Package: mysoft7
Version: 7.0.6

e

Package: mysoft8
Version: 8.0.2

para criar mysoft7_7.0.6_amd64.deb e mysoft8_8.0.2_amd64.deb . Em teoria, você pode usar qualquer esquema de versão que quiser, mas seria aconselhável estar em conformidade com Convenções Debian ao especificar o número da versão.

Em seguida, se você precisar fazer upgrade de qualquer versão devido a alterações de upstream do fornecedor, crie uma nova versão do pacote relevante e atualize o número da versão relevante. Por exemplo, se o MySoft 8.0 v3 for lançado, você construirá agora:

Package: mysoft8
Version: 8.0.3

A instalação deste pacote irá então desinstalar automaticamente o mysoft8 versão 8.0.2, removendo assim os arquivos instalados do mysoft8_8.0.2_amd64.deb e substituindo-os pelos arquivos contidos em mysoft8_8.0.3_amd64.deb

Se você precisar de cada versão upstream instalada ao mesmo tempo, precisará usar um nome de pacote diferente para cada versão. Neste ponto, o número da versão do pacote se torna irrelevante e você pode usar apenas 1.0 . Cada um precisaria instalar em um diretório diferente, porque um arquivo só pode pertencer a um pacote de cada vez. Nesse cenário, você teria que limpar manualmente versões antigas indesejadas do software, desinstalando o pacote relevante.

Estou um pouco incerto sobre por que seu deb atual tentaria reinstalar se já estiver instalado (o que, infelizmente, é o cerne da sua pergunta!). Isso sugere que apt acha que a versão do pacote disponível em seu repositório é maior do que a versão instalada. Talvez o tamanho do número da versão esteja confuso? /var/log/dpkg.log e /var/log/apt/history.log devem mostrar o que está acontecendo.

    
por David Edwards 30.10.2013 / 10:35