Quiero desinstalar libreoffice. Este programa consta de unas tres docenas de módulos. Lo ideal sería eliminarlos con:
aptitude remove libreoffice3.6* libreoffice-debian-menus libobasis3.6-*
pero eso falla con
Couldn't find any package whose name or description matched "libreoffice3.6*"
etc.
¿Cómo elimino un conjunto de paquetes por patrón?
PD: Estoy contento con las respuestas con uso dpkg
o apt
también
Respuesta1
Utilice
apt-get
oapt
(noaptitude
) y utilice expresiones regulares ancladas.En una expresión regular,
.
significa cualquier carácter y*
significa cero o más veces. Entonces la expresiónlibreoffice.*
coincide con cualquier nombre de paquete que contenga la cadenalibreoffice
, seguida de cualquier número de caracteres. Debe anclar la expresión regular con^
(para que coincida con el comienzo de la cadena) o$
(para que coincida con el final de la cadena) o ambos; de lo contrario, APT no reconocerá la expresión regular.Rodee la expresión regular entre comillas simples para evitar que el shell interprete el asterisco.
Ejemplo:
Para eliminar todos los paquetes con un nombre que comienza con libreoffice
, ejecute:
sudo apt remove '^libreoffice.*$'
Respuesta2
Una alternativa es:
dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 echo
Esto enumerará todos los paquetes que coinciden libreoffice
. Cuando hayas confirmado que son todos los que deseas eliminar, ejecuta el siguiente comando...con cuidado:
dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 sudo apt-get purge -y
La idea:
- Haga que el sistema enumere todos los paquetes instalados
- Filtrar para mostrar solo los que coinciden
libreoffice
- Filtrar para mostrar solo la columna con el nombre del paquete
- Ejecute el comando de purga en cada uno de esos paquetes.
Respuesta3
Aptitude admite patrones globales y otras coincidencias interesantes como esta:
aptitude remove '?and(?name(libreoffice), name(3.6), ~i)' libreoffice-debian-menus
Esto coincidirá con cualquier paquete que tenga su nombre libreoffice
y 3.6
que también esté instalado (eso es lo que ~i
significa.
Respuesta4
Cuando necesitas eliminar muchos archivos que tienen el mismo prefijo, la expansión de llaves me resulta muy útil:
sudo apt remove libreoffice-l10n-{bg,ca,cs,da,de,en-za,es,fr,hu,id,ja,ko,nb,nl,pl,pt,ru,sv,th,tr,uk,vi,zh-cn,zh-tw}
Utilicé este comando para eliminar todos los paquetes de idiomas que nunca uso. Sí, con una expresión regular puedes saber cuál conservar y eliminar las demás. De todos modos, me gusta esto porque es fácil de recordar y también funciona con muchos comandos bash.