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-sdk
dass ubuntu-sdk-ide
es 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-sdk
wird 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-get
oder 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-get
ein upgrade
Befehl 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 upgrade
dass 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-upgrade
ist
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-upgrade
dass 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-back
kann 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-sdk
using 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-upgrade
Sie können auch (für upgrade
) oder aptitude full-upgrade
für ( ) verwenden dist-upgrade
und 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 -