Eu mantenho uma configuração residual de um programa no meu Linux Mint 22 (base Ubuntu Noble).
Isso ocorre porque não tenho ideia do que vai acontecer por padrão se eu limpar a versão antiga, ou seja, mais ou menos assim:
sudo apt-get purge virtualbox-7.0
A versão atual (7.1) não será afetada? Ou é o contrário, ou seja, ela apagaria toda virtualbox
a configuração?
Qual é o comportamento (padrão) apt
dessa ação, por favor?
Aqui está a lista de versões:
$ apt list -a virtualbox-7.1
virtualbox-7.1/unknown,now 7.1.4-165100~Ubuntu~noble amd64 [installed]
$ apt list -a virtualbox-7.0
virtualbox-7.0/unknown 7.0.22-165102~Ubuntu~noble amd64 [residual-config]
virtualbox-7.0/now 7.0.20-163906~Ubuntu~noble amd64 [residual-config]
Esta será uma seção de comentários:
O primeiro pedido veio de Stephen Kitt, obrigado.
$ dpkg -L virtualbox-7.0
Package virtualbox-7.0 does not contain any files (!)
$ ll /var/lib/dpkg/info/virtualbox-7.0.*
-rw-r--r-- 1 root root 0 2024-Sep-12 /var/lib/dpkg/info/virtualbox-7.0.list
-rwxr-xr-x 1 root root 2,1K 2024-Jul-11 /var/lib/dpkg/info/virtualbox-7.0.postrm
lá o .postrm
arquivo contém:
#!/bin/sh
# $Id: postrm 155244 2023-01-17 14:15:46Z bird $
## @file
# VirtualBox post remove.
#
# License and other commentary redacted for shortness.
if [ "$1" = "purge" -a ! -f /etc/init.d/vboxdrv ] ; then
update-rc.d vboxdrv remove >/dev/null || exit $?
fi
if [ "$1" = "purge" -a ! -f /etc/init.d/vboxnet ] ; then
update-rc.d vboxnet remove >/dev/null || exit $?
fi
if [ "$1" = "purge" -a ! -f /etc/init.d/vboxweb-service ] ; then
update-rc.d vboxweb-service remove >/dev/null || exit $?
fi
if [ "$1" = "purge" -a ! -f /etc/init.d/vboxballoonctrl-service ] ; then
update-rc.d vboxballoonctrl-service remove >/dev/null || exit $?
fi
# remove installed extension packs
if [ "$1" = "purge" ]; then
rm -rf /usr/lib/virtualbox/ExtensionPacks/*
fi
# Automatically added by dh_installdebconf/13.14.1ubuntu5
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
db_purge
fi
# End automatically added section
exit 0
Se os pacotes forem escritos corretamente, isso não deve causar nenhum problema. Neste caso em particular, não verifiquei, mas imagino que cada pacote tenha sua própria configuração. (Pacotes que compartilham arquivos de configuração precisam transferir a propriedade de alguma forma, ou providenciar para que um terceiro pacote possua os arquivos de configuração.)
Você pode verificar isso antes de limpar o pacote antigo:
listará os arquivos de configuração que permanecem associados ao pacote e que seriam removidos ao expurgá-lo.
Uma análise mais abrangente do que a purgação
virtualbox-7.0
faria requer olhar para os vários arquivos que correspondem a/var/lib/dpkg/info/virtualbox-7.0.*
. Isso incluirá a lista de arquivos acima (se houver) e scripts de mantenedor que podem ter tratamento específico parapurge
.Nota do editor:
Seguindo um excelente conselho de Stephen Kitt, inspecionei o script pós-remoção (
/var/lib/dpkg/info/virtualbox-7.0.postrm
). Infelizmente, ele foi escrito de forma a remover alguns arquivos sem qualquer reflexo na versão do VirtualBox que está sendo eliminada.Aviso:
Os pacotes de extensão devem ser removidos após a ação de limpeza (
/usr/lib/virtualbox/ExtensionPacks/*
). Eu tinha um backup, então foi fácil restaurá-lo.Obrigado, Stephen!