Я думаю, этот вопрос о той же проблеме. Этот вопрос помечен как ответивший, хотя проблема не решена, поэтому я открываю новый вопрос с чуть более подробной информацией.
Краткое описание:
apt
не может обновить пакет, если отсутствуют некоторые зависимости (это нормально), но то, что я наблюдаю в ubuntu 14.04, это то, что он делает это с кодом выхода 0 (проблема 1) и без сообщения о «неудавшихся зависимостях» (проблема 2).
Подробное описание:
Я на Ubuntu 14.04, версия 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
У меня установлен пакет, версия 0.03, никаких зависимостей:
# 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
Я хотел бы обновить пакет до версии 0.04 (которая имеет неудовлетворенную зависимость very-strange-dependency
):
# apt-cache depends fake-test-package=0.04-1
fake-test-package
Depends: <very-strange-dependency>
Итак, я выполняю 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
Кажется, все в порядке, и код выхода равен 0, но пакеты не были обновлены:
# dpkg -l fake-test-package
||/ Name Version Architecture Description
+++-=====================-===============-===============-===============================================
ii fake-test-package 0.03-1 all package to test apt
Вот проблема, так как apt
молча отказывается обновлять пакет, и я не знаю ни того, что это произошло, ни почему.
В Ubuntu 12.04 наблюдается другое поведение: код выхода = 100 и отчет «неудовлетворенные зависимости»:
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
Что интересно, проблема возникает только при обновлении существующего пакета. Если я удаляю версию 0.03 из системы и пытаюсь установить 0.04 напрямую, apt
ведет себя ожидаемым образом:
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
Вопрос:
Как я могу apt
отображение неудовлетворенных зависимостей при обновлении установленного пакета и показать неудачное обновление через ненулевой код выхода?