Instalo y pruebo muchas aplicaciones en mis máquinas virtuales Linux. Una vez que termine con las pruebas, eliminaré los paquetes instalados que ya no se usan. Dado que instalo muchas aplicaciones a menudo, encuentro que es una tarea que requiere mucho tiempo eliminar manualmente los paquetes uno por uno. También a veces me olvido de desinstalar los paquetes innecesarios. Si es como yo, aquí hay una solución simple para encontrar y eliminar todos los paquetes instalados en una fecha y hora determinadas en Linux.
Como ya sabrá, podemos encontrar la lista de paquetes instalados ordenados por fecha de instalación en varias distribuciones de Linux usando cualquiera de los siguientes comandos.
En Arch Linux, EndeavourOS y Manjaro Linux:
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n'|sort -n
En Fedora, RHEL, CentOS, AlmaLinux y Rocky Linux:
$ sudo rpm -qa --last
En Debian, Ubuntu, Linux Mint y Pop OS:
$ grep " install " /var/log/dpkg.log
Los comandos anteriores enumerarán todos los paquetes instalados en todas las fechas. Sin embargo, estamos interesados en encontrar y eliminar paquetes instalados en una fecha y hora específicas solo.
Podemos usar %yyyy-%mm-%dd
parámetro con grep Comando para enumerar todos los paquetes instalados en una fecha y hora específicas.
Por ejemplo, el siguiente comando muestra todos los paquetes instalados el 14 de septiembre de 2021 en mi sistema Debian 11 bullseye.
$ grep "2021-09-14.*.install " /var/log/dpkg.log
Salida de muestra:
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
Como puede ver en el resultado anterior, instalé tmpreaper , vim y nano paquetes.
Si la rotación de registros está habilitada, el contenido de /var/log/dpkg.log
el archivo será eliminado. En ese caso, puede ver el archivo de registro de instalación anterior usando el comando:
$ grep "2021-09-14.*.install " /var/log/dpkg.log.1
Si desea enumerar solo los nombres de los paquetes, excluyendo la fecha/hora de instalación y los detalles de la arquitectura de la salida, ejecute:
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1
Ahora verá solo los nombres de los paquetes instalados en la fecha indicada:
tmpreaper hello hello tmpreaper hello tmpreaper nano tmpreaper vim-runtime vim
Ahora tenemos el nombre de todos los paquetes instalados en la fecha dada.
Para desinstalar todos los paquetes instalados en una fecha determinada, simplemente agregue el respectivo apt
argumentos de comando con xargs
al final del comando anterior.
Tenga en cuenta que los siguientes comandos no le pedirán confirmación al usuario antes de eliminar los paquetes. Por lo tanto, siempre es una buena práctica realizar una prueba para verificar qué paquetes se eliminarán antes de ejecutar el comando real.
Para simular (ejecutar en seco) el proceso de eliminación de paquetes, simplemente agregue -s
o --simulate
como a continuación.
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y -s
El comando anterior solo simulará el proceso de eliminación de paquetes, pero no eliminará los paquetes.
Una vez que sepa qué paquetes se eliminarán, vuelva a ejecutar el comando anterior sin -s
o --simulate
opción:
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
Si la rotación de registros está habilitada, ejecute este comando en su lugar:
$ grep "2021-09-14.*.install " /var/log/dpkg.log.1 | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
Esta vez, los paquetes instalados en la fecha especificada se eliminarán de su sistema.
Lectura relacionada:
- Cómo encontrar y eliminar paquetes no utilizados en Linux
- Cómo eliminar paquetes instalados de un repositorio específico en CentOS, Fedora
- La manera fácil de instalar y eliminar un grupo de paquetes en Arch Linux
- Una manera fácil de eliminar programas instalados desde el código fuente en Linux