Как раз сегодня, пробуя обновление на Ubuntu 14.04:
$ sudo apt-get update # ...
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
phablet-tools ubuntu-sdk ubuntu-sdk-ide
The following packages will be upgraded:
cgroup-lite curl libcurl3 libcurl3-gnutls python3-update-manager
update-manager update-manager-core xserver-xorg-core-lts-xenial
8 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 2,305 kB of archives.
After this operation, 13.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] ^C
Хорошо, таким образом, от этого я собираюсь phablet-tools
, ubuntu-sdk
и ubuntu-sdk-ide
пакеты имели изменения зависимости в этом обновлении, и следовательно я должен буду звонить dist-upgrade
; таким образом, я делаю:
$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
at dctrl-tools devscripts distro-info-data dput intltool
libcommon-sense-perl libdistro-info-perl libexporter-lite-perl
libio-stringy-perl libjson-perl libjson-xs-perl libparse-debcontrol-perl
unity-scope-tool
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
autopilot-desktop gir1.2-gconf-2.0 gir1.2-upstart-app-launch-2
libautopilot-gtk libautopilot-qt liblxc1 libseccomp2 libxpathselect1.4
lxc-common lxcfs lxd lxd-client python-autopilot python-autopilot-trace
python-autopilot-vis python-contextlib2 python-decorator python-evdev
python-extras python-fixtures python-junitxml python-mimeparse python-psutil
python-subunit python-testscenarios python-testtools squashfs-tools
ubuntu-sdk-tools uidmap
The following packages have been kept back:
ubuntu-sdk
The following packages will be upgraded:
cgroup-lite curl libcurl3 libcurl3-gnutls python3-update-manager
ubuntu-sdk-ide update-manager update-manager-core
xserver-xorg-core-lts-xenial
9 upgraded, 29 newly installed, 0 to remove and 1 not upgraded.
Need to get 50.2 MB of archives.
After this operation, 66.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] ^C
Для одного, ubuntu-sdk
все еще сдержан - но теперь я также заставляю тонну пакетов быть удаленной, как "больше не требуется", а также тонна пакетов для установки. И этот вид раздражает меня, потому что я не могу сказать, какой пакет (зависимость), в частности, вызывает или установку новых - или удаление, должное "больше не требуемый" старых пакетов.
Таким образом, мой вопрос - там своего рода подробный режим или переключатель, apt-get
, aptitude
или подобные программы, которые перечислили бы то, что изменения зависимости от текущего до новой версии? Я знаю, что могу сделать:
$ apt-cache depends ubuntu-sdk
ubuntu-sdk
Depends: autopilot-desktop
Depends: intltool
Depends: phablet-tools
Depends: ubuntu-device-flash
Depends: ubuntu-sdk-ide
... но я считал это как состояние текущей версии; то, что я хотел бы, является чем-то как (псевдокод)
$ apt-command --show-dependency-changes ubuntu-sdk
ubuntu-sdk:
Installed: 1.126.2~0ubuntu1~trusty2 # as in 'apt-cache policy ubuntu-sdk'
Candidate: 1.266~0ubuntu1~0trusty
Depends: autopilot-desktop (installed v. XXX, candidate no longer required)
Depends: intltool (installed v. XXX, candidate v. YYY)
Depends: dctrl-tools (installed no dependency, candidate v. YYY)
...
... т.е. я хотел бы подробное объяснение причины, почему конкретный пакет будет недавно установлен или удален.
Что-нибудь как это там?
Из страницы справочника apt-get
, upgrade
команда делает
... Пакеты, в настоящее время устанавливаемые с новыми доступными версиями, получены и обновлены; ни при каких обстоятельствах не в настоящее время устанавливаемые пакеты, удаленные или пакеты, не уже установленные полученный и установленный. Новые версии в настоящее время устанавливаемых пакетов, которые не могут быть обновлены, не изменяя состояние установки другого пакета, оставят в их текущей версии.
Это означает, apt-get upgrade
не установит или удалит пакет при выполнении обновления. Даже когда пакет имеет старшую версию в наличии. В этом случае тот конкретный пакет (и любые связанные пакеты, которые требуются этим) будут назад сохранены. Это для безопасности системы.
Но, Из страницы справочника apt-get
, dist-upgrade
dist-обновление в дополнение к выполнению функции обновления, также разумно изменяющиеся зависимости дескрипторов с новыми версиями пакетов; склонный - добираются, имеет "умную" систему разрешения конфликтов, и она попытается обновить самые важные пакеты за счет менее важных при необходимости. Команда dist-обновления может поэтому удалить некоторые пакеты.
Так, Здесь мы видим, dist-upgrade
является более жестоким, чем upgrade
. Это попытается установить более новую версию важных пакетов, даже если это потребует удаления некоторых пакетов и/или установки более новых пакетов. Вот почему dist-обновление может инициировать установку/удаление других пакетов как Ваша ситуация в вопросе.
Также обратите внимание, что, пакет может быть held-back
для некоторых других случаев также, как прикрепление. Если Вы прикрепляете пакет, который не будет обновлен.
held-back
может также произойти, когда более новая версия пакета не может быть установлена из-за недостатка одного или нескольких, он - пакеты зависимости.
Я хотел бы подробное объяснение причины, почему конкретный пакет будет недавно установлен или удален.
Полезная техника отметила бы имена пакета, которые будут установленными и вручную проверка, что их зависимость изменяется между версиями.
Для Вашего особого случая можно проверить изменение зависимости ubuntu-sdk
использование apt-cache depends ubuntu-sdk=<version-installed>
и apt-cache depends ubuntu-sdk=<version-candidate>
. Вы будете видеть, что более новые версии требуют дополнительных пакетов.
Можно также использовать aptitude safe-upgrade
(для upgrade
) или aptitude full-upgrade
для (dist-upgrade
) и в то время как это показывает списки пакета, чтобы установить и/или удалить, нажмите d для наблюдения информации о зависимостях. Или в то время как Вы используете full-upgrade
, можно нажать o, чтобы видеть, что он предложил решение для разрешения зависимости. Это покажет Вам, почему пакет будет установленным или удаленным.
Проверьте эти ссылки на более -