На це вже добре відповіли, але я виявив ситуацію, коли я не хотів "маркувати" багато пакунків (а потім знімати їх після цього autoremove
).
Коли список пакунків, які ви хочете автоматично перемістити, легко визначити, ви можете передати /sed
/ xargs
виводити їх.
У мене немає складного прикладу багатьох пакетів, але якщо у мене є такий сценарій:
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.
і я хочу видалити лише linux*
пакети, я можу це зробити:
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
Тож звідси їх легко передати через xargs
аргументи командного рядка до простих apt-get remove -y
:
apt-get autoremove -s \
| sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp' \
| xargs apt-get remove -y
Зазвичай під час використання xargs
я захищаю від пробілів в аргументах (наприклад, find ... -print0 | xargs -0 ...
), але оскільки в іменах пакетів немає пробілів, мені зручно використовувати аргументи з обмеженим рядком.
(Я думаю, що це в інших ситуаціях, було б доречніше "позначати" затримку, знімати пакети. Це також можна зробити з регулярними виразами і xargs
, мабуть, надмірно розробити ситуацію.)