Gibt es eine Möglichkeit, manuell zu überprüfen, welche zusätzlichen Pakete entfernt werden sollen?

8

Nehmen wir zum Beispiel an, ich versuche "libopenshot11" zu entfernen. Ich bekomme:

The following packages will be REMOVED:
  libopenshot11 openshot-qt python3-openshot

Wie kann ich das herausfinden, ohne apt remove zuerst auszuführen?

answerSeeker
quelle
apt-get entfernen libopenshot11 -s
grooveplex

Antworten:

11

Die Python APT API kann verwendet werden, um ein kurzes Skript dafür zu schreiben:

#! /usr/bin/python3
import sys
from apt import cache

c = cache.Cache()
for pkg in sys.argv[1:]:
    c[pkg].mark_delete()   

print('\n'.join(pkg.name for pkg in c.get_changes() if pkg.marked_delete))

Beispiel:

$ apt-get remove -s bash | grep Remv  
Remv winusb [1.0.11+saucy1]
Remv gdm [3.18.3-0ubuntu2]
Remv gdm3 [3.18.3-0ubuntu2]
Remv bash [4.3-14ubuntu1.2] [inxi:amd64 lightdm:amd64 bash-completion:amd64 ]
Remv bash-completion [1:2.1-4.2ubuntu1.1] [inxi:amd64 lightdm:amd64 ]
Remv inxi [2.2.35-0ubuntu1] [lightdm:amd64 ]
Remv lightdm [1.18.3-0ubuntu1.1]

$ apt-cache rdepends bash --installed | sed '1,2d' | sort -u
  bash-completion
    bash:i386
  gdm3
  inxi
  lightdm
  winusb

$ ./check.py bash                                             
inxi
winusb
gdm
gdm3
bash
lightdm
bash-completion
muru
quelle
Die Python-Lösung ist sehr sauber. Vielen Dank!
answerSeeker
19

Sie können die Option --simulateoder verwenden -s, die Ihnen zeigt, was APT tut, wenn Sie einen Befehl ausführen, ohne etwas zu tun, zum Beispiel ...

$ sudo apt remove -s file
Reading package lists... Done
Building dependency tree        
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libfile-stripnondeterminism-perl libltdl-dev libmail-sendmail-perl libsys-hostname-long-perl po-debconf
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED
  cracklib-runtime debhelper dh-autoreconf dh-strip-nondeterminism file gdebi gdebi-core libtool lintian ubuntu-standard
0 to upgrade, 0 to newly install, 10 to remove and 0 not to upgrade.
Remv cracklib-runtime [2.9.2-3]
Remv dh-autoreconf [13] [debhelper:amd64 ]
Remv debhelper [10.2.2ubuntu1] [dh-strip-nondeterminism:amd64 ]
Remv dh-strip-nondeterminism [0.032-1]
Remv gdebi [0.9.5.7+nmu1]
Remv gdebi-core [0.9.5.7+nmu1]
Remv ubuntu-standard [1.379]
Remv file [1:5.29-3] [lintian:amd64 libtool:amd64 ]
Remv libtool [2.4.6-2] [lintian:amd64 ]
Remv lintian [2.5.50.1]

Wir können sehen, dass das Entfernen des filePakets eine sehr schlechte Idee wäre ...

Zanna
quelle
Wer hat zuerst gepostet, du oder Alban?
NoOneIsHere
@ NoOneIsHier ich um ein paar Sekunden: /
Zanna
OK, ich habe Ihre beiden Antworten positiv bewertet, da Ihre Antwortdetails enthält und seine (ich nehme an) die Manpage enthält, aber ich denke, dass die beiden Antworten zusammen besser sind als die akzeptierte.
NoOneIsHere
@NoOneIsHere, wenn Alban nicht gepostet hätte, hätte ich möglicherweise das Manpage-Detail zu meiner Antwort hinzugefügt. Ich denke, diese einfache Lösung ist eher das, was die Leute verwenden werden als die akzeptierte, aber das Akzeptieren liegt im Ermessen von OP, und Murus Antwort ist die fortgeschrittene Klasse :)
Zanna
1
Die meisten dieser Pakete sind eigentlich nicht wichtig, obwohl ich in eine Situation geraten bin, in der das Entfernen des Ubuntu-Standards dazu führt, dass ein nachfolgender Autoremove verrückt wird.
Random832
13

Die Option -soder --simulatewird verwendet, um eine APT-Aufgabe zu simulieren, ohne sie tatsächlich auszuführen.

Aus den offiziellen Manpages :

 -s, --simulate, --just-print, --dry-run, --recon, --no-act
       No action; perform a simulation of events that would occur based on
       the current system state but do not actually change the system.
       Locking will be disabled (Debug::NoLocking) so the system state
       could change while apt-get is running. Simulations can also be
       executed by non-root users which might not have read access to all
       apt configuration distorting the simulation. A notice expressing
       this warning is also shown by default for non-root users
       (APT::Get::Show-User-Simulation-Note). Configuration Item:
       APT::Get::Simulate.

quelle