Dies ist bereits gut beantwortet, aber ich fand eine Situation, in der ich viele der Pakete nicht "markieren" wollte (und sie danach wieder abmelden wollte autoremove
).
Wenn die Liste der Pakete , die Sie wollen zu autoremove ist leicht definiert, dann können Sie Rohr / sed
/ xargs
sie aus.
Ich habe kein komplexes Beispiel für viele Pakete, aber wenn ich das folgende Szenario habe:
root@fptc-rsvrd:~# apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
libluajit-5.1-2 libluajit-5.1-common linux-headers-4.4.0-141 linux-headers-4.4.0-141-generic linux-headers-4.4.0-143 linux-headers-4.4.0-143-generic linux-headers-4.4.0-146 linux-headers-4.4.0-146-generic
linux-image-4.4.0-141-generic linux-image-4.4.0-143-generic linux-image-4.4.0-146-generic linux-image-extra-4.4.0-141-generic linux-modules-4.4.0-143-generic linux-modules-4.4.0-146-generic
linux-modules-extra-4.4.0-143-generic linux-modules-extra-4.4.0-146-generic linux-signed-image-4.4.0-141-generic pandoc-data
0 upgraded, 0 newly installed, 18 to remove and 19 not upgraded.
After this operation, 907 MB disk space will be freed.
und ich möchte nur die linux*
Pakete entfernen , ich kann dies tun:
root@fptc-rsvrd:~# apt-get autoremove -s | sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp'
linux-headers-4.4.0-141-generic
linux-headers-4.4.0-141
linux-headers-4.4.0-143-generic
linux-headers-4.4.0-143
linux-headers-4.4.0-146-generic
linux-headers-4.4.0-146
linux-signed-image-4.4.0-141-generic
linux-image-extra-4.4.0-141-generic
linux-image-4.4.0-141-generic
linux-modules-extra-4.4.0-143-generic
linux-image-4.4.0-143-generic
linux-modules-extra-4.4.0-146-generic
linux-image-4.4.0-146-generic
linux-modules-4.4.0-143-generic
linux-modules-4.4.0-146-generic
Von hier aus ist es einfach, diese xargs
als Kommandozeilenargumente an das simple zu übergeben apt-get remove -y
:
apt-get autoremove -s \
| sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp' \
| xargs apt-get remove -y
Normalerweise xargs
würde ich mich bei der Verwendung vor Leerzeichen in den Argumenten schützen (z. B. find ... -print0 | xargs -0 ...
), aber da Paketnamen keine Leerzeichen enthalten, kann ich problemlos Argumente mit Zeilenumbrüchen verwenden.
(Ich würde es für andere Situationen halten, es wäre sinnvoller, ein Hold zu "markieren", das die Pakete auspackt. Das geht auch mit Regexes und xargs
, ist aber wahrscheinlich eine Überentwicklung der Situation.)