Liste der Abhängigkeitsänderungen für apt-get upgrade (Gründe für das Zurückhalten von Paketen)

Liste der Abhängigkeitsänderungen für apt-get upgrade (Gründe für das Zurückhalten von Paketen)

Gerade heute habe ich ein Update auf Ubuntu 14.04 versucht:

$ 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

Ok, daraus schließe ich also phablet-tools, ubuntu-sdkdass ubuntu-sdk-idees bei Paketen Abhängigkeitsänderungen in diesem Update gab und ich daher aufrufen müsste dist-upgrade; also mache ich Folgendes:

$ 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

Zum einen ubuntu-sdkwird es immer noch zurückgehalten - aber jetzt bekomme ich auch eine Menge Pakete, die entfernt werden müssen, da sie "nicht mehr benötigt" sind, sowie eine Menge Pakete, die installiert werden müssen. Und das ärgert mich irgendwie, weil ich nicht sagen kann,welcheInsbesondere Paketabhängigkeiten führen entweder zur Installation neuer oder zur Deinstallation alter Pakete, da diese „nicht mehr benötigt“ werden.

Meine Frage lautet also: Gibt es eine Art ausführlichen Modus oder einen Schalter für apt-getoder aptitudeähnliche Programme, der die Abhängigkeitsänderungen von der aktuellen zur neuen Version auflistet? Ich weiß, dass ich Folgendes tun kann:

$ apt-cache depends ubuntu-sdk
ubuntu-sdk
  Depends: autopilot-desktop
  Depends: intltool
  Depends: phablet-tools
  Depends: ubuntu-device-flash
  Depends: ubuntu-sdk-ide

... aber ich interpretiere dies als den Stand der aktuellen Version; was ich möchte, ist so etwas wie (Pseudocode)

$ 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)
...

... d. h. ich hätte gerne eine ausführliche Erklärung, warum ein bestimmtes Paket neu installiert oder entfernt werden soll.

Gibt es so etwas da draußen?

Antwort1

Aus der Manpage von kann apt-getein upgradeBefehl ausgeführt werden

... Aktuell installierte Pakete mit neuen verfügbaren Versionen werden abgerufen und aktualisiert; aktuell installierte Pakete werden unter keinen Umständen entfernt oder noch nicht installierte Pakete abgerufen und installiert. Neue Versionen aktuell installierter Pakete, die nicht aktualisiert werden können, ohne den Installationsstatus eines anderen Pakets zu ändern, bleiben in ihrer aktuellen Version.

Das bedeutet, apt-get upgradedass während des Upgrades kein Paket installiert oder entfernt wird. Auch wenn für ein Paket eine höhere Version verfügbar ist. In diesem Fall wird dieses bestimmte Paket (und alle damit verbundenen Pakete, die dafür erforderlich sind) zurückgehalten. Dies dient der Sicherheit des Systems.

Aber, Aus der Manpage von apt-get, dist-upgradeist

dist-upgrade führt nicht nur die Upgrade-Funktion aus, sondern behandelt auch intelligent geänderte Abhängigkeiten mit neuen Paketversionen; apt-get verfügt über ein „intelligentes“ Konfliktlösungssystem und versucht, die wichtigsten Pakete bei Bedarf auf Kosten weniger wichtiger zu aktualisieren. Der Befehl dist-upgrade kann daher einige Pakete entfernen.

Hier sehen wir also, dist-upgradedass es brutaler ist als das upgrade. Es wird versucht, eine neuere Version von zu installierenwichtigPakete, auch wenn dies die Entfernung einiger Pakete und/oder die Installation neuerer Pakete erfordert. Aus diesem Grund kann dist-upgrade die Installation/Entfernung anderer Pakete auslösen, wie in Ihrer Situation in der Frage.

Beachten Sie auch, dass ein Paket auch für andere Zwecke verwendet werden kann held-back, z. B. zum Anheften. Wenn Sie ein Paket anheften, wird es nicht aktualisiert.

held-backkann auch auftreten, wenn eine neuere Version des Pakets nicht installiert werden kann, weil ein oder mehrere seiner Abhängigkeitspakete fehlen.

Ich hätte gerne eine ausführliche Erklärung, warum ein bestimmtes Paket neu installiert oder entfernt wird.

Eine nützliche Technik wäre, die Namen der zu installierenden Pakete zu notieren und ihre Abhängigkeitsänderungen zwischen den Versionen manuell zu überprüfen.

In Ihrem speziellen Fall können Sie die Abhängigkeitsänderung von ubuntu-sdkusing apt-cache depends ubuntu-sdk=<version-installed>und überprüfen apt-cache depends ubuntu-sdk=<version-candidate>. Sie werden neuere Versionen sehen, die zusätzliche Pakete erfordern.

aptitude safe-upgradeSie können auch (für upgrade) oder aptitude full-upgradefür ( ) verwenden dist-upgradeund während die zu installierenden und/oder zu entfernenden Paketlisten angezeigt werden, drücken SieDum die Abhängigkeitsinformationen anzuzeigen. Oder während Sie verwenden full-upgrade, können Sie drückenÖum die vorgeschlagene Lösung zur Abhängigkeitsauflösung anzuzeigen. Dadurch wird Ihnen angezeigt, warum ein Paket installiert oder entfernt wird.

Weitere Informationen finden Sie unter diesen Links -

verwandte Informationen