dpkg: Atualizando pacotes dependentes (com a dependência de possivelmente falhar)

1

Eu tenho dois pacotes A e B, onde B é um componente opcional que depende do pacote A e sua versão exata. Portanto, preciso garantir que, se ambos os pacotes estiverem instalados, eles sejam da mesma versão. Para tornar a instalação um pouco mais complicada, o pacote A pode falhar no script preinst . Neste caso, nada deve ser atualizado

Portanto, se A e B estiverem instalados, o comportamento desejado deve ser:

  1. dpkg --install A-new.deb
    upgrade negado (já que B está dependendo de A)
  2. dpkg --install B-new.deb
    upgrade negado (já que A precisa ser atualizado primeiro)
  3. dpkg --install A-new.deb B-new.deb
    A e B atualizaram
  4. dpkg --install A-new.deb B-new.deb e atualizando A falhar
    Nada mudou (ou seja, versão antiga de A e B no estado Instalado)

O que eu tentei:

Adicionando A (com versão) à linha Depends: de B no arquivo de controle

  1. dpkg --install A-new.deb
    A é atualizado, B permanece a versão antiga
  2. dpkg --install B-new.deb
    B é atualizado, mas no estado Descompactado, a configuração foi negada devido à dependência
  3. dpkg --install A-new.deb B-new.deb
    A e B são atualizados
  4. dpkg --install A-new.deb B-new.deb e atualizando A falhar
    A permanece na versão antiga, B é nova versão no estado Descompactado

Portanto, apenas 3. corresponde ao comportamento desejado

Adicionando A (com versão) à linha Pre-Depends: de B no arquivo de controle

  1. dpkg --install A-new.deb
    A é atualizado, B fica na versão antiga
  2. dpkg --install B-new.deb
    upgrade negado devido à dependência
  3. dpkg --install A-new.deb B-new.deb
    A é atualizado, B permanece na versão antiga devido a um problema de pré-dependência
  4. dpkg --install A-new.deb B-new.deb e atualizando A falhar
    Nada mudou (ou seja, versão antiga de A e B no estado Instalado)

Aqui apenas 2. e 4. correspondem ao comportamento desejado

Como posso obter o comportamento desejado?

    
por Jörg Westheide 05.11.2018 / 22:56

0 respostas