Instaluji a testuji spoustu aplikací na svých virtuálních počítačích s Linuxem. Po dokončení testování odstraním nainstalované balíčky, které se již nepoužívají. Vzhledem k tomu, že často instaluji mnoho aplikací, považuji za trochu časově náročný úkol ručně odstraňovat balíčky jeden po druhém. Občas také zapomenu odinstalovat nepotřebné balíčky. Pokud jste něco jako já, zde je jednoduché řešení, jak najít a odstranit všechny balíčky nainstalované v určité datum a čas v Linuxu.
Jak již možná víte, najdeme zde seznam nainstalovaných balíčků seřazený podle data instalace v různých distribucích Linuxu pomocí některého z následujících příkazů.
Na Arch Linux, EndeavourOS a Manjaro Linux:
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n'|sort -n
Na Fedoře, RHEL, CentOS, AlmaLinux a Rocky Linux:
$ sudo rpm -qa --last
V systémech Debian, Ubuntu, Linux Mint a Pop OS:
$ grep " install " /var/log/dpkg.log
Výše uvedené příkazy zobrazí seznam všech balíčků nainstalovaných ve všech datech. Máme však zájem najít a odstranit balíčky nainstalované v konkrétní datum a čas pouze.
Můžeme použít %yyyy-%mm-%dd
parametr s grep příkaz k zobrazení seznamu všech balíčků nainstalovaných v určité datum a čas.
Například následující příkaz zobrazí všechny nainstalované balíčky 14. září 2021 v mém systému Debian 11 bullseye.
$ grep "2021-09-14.*.install " /var/log/dpkg.log
Ukázkový výstup:
2021-09-14 06:51:51 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:14:14 install hello:amd64 <none> 2.10-2 2021-09-14 11:17:13 install hello:amd64 <none> 2.10-2 2021-09-14 11:17:13 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:22:29 install hello:amd64 <none> 2.10-2 2021-09-14 11:22:29 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:41:16 install nano:amd64 5.4-2 5.4-2 2021-09-14 11:41:17 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:41:17 install vim-runtime:all 2:8.2.2434-3 2:8.2.2434-3 2021-09-14 11:41:18 install vim:amd64 2:8.2.2434-3 2:8.2.2434-3
Jak vidíte ve výše uvedeném výstupu, nainstaloval jsem tmpreaper , vim a nano balíčky.
Pokud je povolena rotace protokolu, obsah /var/log/dpkg.log
soubor bude smazán. V takovém případě můžete zobrazit soubor protokolu předchozí instalace pomocí příkazu:
$ grep "2021-09-14.*.install " /var/log/dpkg.log.1
Pokud chcete vypsat pouze názvy balíčků, s výjimkou data/času instalace a detailů architektury z výstupu, spusťte:
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1
Nyní uvidíte pouze názvy nainstalovaných balíčků k danému datu:
tmpreaper hello hello tmpreaper hello tmpreaper nano tmpreaper vim-runtime vim
Nyní máme názvy všech nainstalovaných balíčků k danému datu.
Chcete-li odinstalovat všechny balíčky nainstalované k určitému datu, jednoduše přidejte příslušný apt
argumenty příkazů pomocí xargs
na konci předchozího příkazu.
Upozorňujeme, že následující příkazy nevyžadují potvrzení uživatele před smazáním balíčků. Vždy je tedy dobrým zvykem provést běh nasucho k ověření, které balíčky budou odstraněny před spuštěním skutečného příkazu.
Chcete-li simulovat (suché spuštění) procesu odstranění balíčku, jednoduše přidejte -s
nebo --simulate
jako níže.
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y -s
Výše uvedený příkaz bude pouze simulovat proces odstranění balíčku, ale nevymaže balíčky.
Jakmile zjistíte, které balíčky budou odstraněny, spusťte znovu výše uvedený příkaz bez -s
nebo --simulate
možnost:
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
Pokud je povolena rotace protokolu, spusťte místo toho tento příkaz:
$ grep "2021-09-14.*.install " /var/log/dpkg.log.1 | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
Tentokrát budou balíčky nainstalované v určený den z vašeho systému odstraněny.
Související čtení:
- Jak najít a odebrat nepoužívané balíčky v systému Linux
- Jak odebrat nainstalované balíčky z konkrétního úložiště v CentOS, Fedora
- Snadný způsob instalace a odebrání skupiny balíčků v Arch Linuxu
- Snadný způsob odebrání programů nainstalovaných ze zdroje v systému Linux