14.04 trusty: 'apt-get install' silenciosamente recusa o pacote de atualização com dependências não satisfeitas

0

Isso é mais ou menos replicação de esta questão . Espero que o AskUbuntu seja o lugar mais adequado para isso.

Descrição resumida:

apt não pode atualizar um pacote se algumas dependências estiverem faltando (está OK), mas o que eu observo no ubuntu 14.04 é que ele faz isso com o código de saída 0 (questão 1) e sem relatar 'dependências não atendidas' questão 2).

Descrição detalhada:

Estou no Ubuntu 14.04, versão apt 1.0.1ubuntu2.6

# uname -a       
Linux myhost 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# lsb_release -c      
Codename:       trusty

# dpkg -l apt         
||/ Name            Version        Architecture Description
+++-===============-==============-============-====================================
ii  apt             1.0.1ubuntu2.6 amd64        commandline package manager

Eu tenho um pacote instalado, versão 0.03, sem dependências:

# dpkg -l fake-test-package
||/ Name                  Version         Architecture    Description
+++-=====================-===============-===============-===============================================
ii  fake-test-package     0.03-1          all             package to test apt

# apt-cache depends fake-test-package=0.03-1
fake-test-package

Gostaria de atualizar o pacote para a versão 0.04 (que tem dependências não satisfeitas very-strange-dependency ):

# apt-cache depends fake-test-package=0.04-1
fake-test-package
  Depends: <very-strange-dependency>

Então, eu executo apt-get install :

# apt-get install fake-test-package=0.04-1         
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  fake-test-package
0 upgraded, 0 newly installed, 0 to remove and 217 not upgraded.

# echo $?
0

Tudo parece OK e o código de saída é 0, mas os pacotes não foram atualizados:

# dpkg -l fake-test-package
||/ Name                  Version         Architecture    Description
+++-=====================-===============-===============-===============================================
ii  fake-test-package     0.03-1          all             package to test apt

Aqui está o problema, pois apt silenciosamente se recusa a atualizar o pacote e eu não sei nem o que aconteceu nem por quê.

No Ubuntu 12.04, observo o comportamento diferente: código de saída = 100 e relatório de 'dependências não atendidas':

precise# apt-get install fake-test-package=0.04-1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 fake-test-package : Depends: very-strange-dependency but it is not installable
E: Unable to correct problems, you have held broken packages.

precise# echo $?
100

O que é interessante, o problema ocorre apenas na atualização do pacote existente. Se eu remover a versão 0.03 do sistema e tentar instalar o 0,04 diretamente, o apt se comportará de uma maneira esperada:

trusty# apt-get purge fake-test-package
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  fake-test-package*
0 upgraded, 0 newly installed, 1 to remove and 217 not upgraded.
After this operation, 13.3 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 157742 files and directories currently installed.)
Removing fake-test-package (0.03-1) ...
Purging configuration files for fake-test-package (0.03-1) ...

trusty# apt-get install fake-test-package=0.04-1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 fake-test-package : Depends: very-strange-dependency but it is not installable
E: Unable to correct problems, you have held broken packages.

trusty# echo $?
100 

A questão principal:

Como posso fazer apt reportar dependências não atendidas na atualização de um pacote instalado e mostrar atualizações com falha através de código de saída diferente de zero?

    
por Hln 07.04.2015 / 10:32

1 resposta

3

Isso parece ser um bug do apt. A versão 1.0.1 é afetada.

Criamos a versão 1.0.9.2 a partir do código-fonte e ela se comporta conforme o esperado: relata dependências não atendidas e sai com um status diferente de zero.

Talvez este seja o mesmo bug: link

    
por Hln 21.04.2015 / 16:59