No final, eu fiquei cheio no modo manual.
Primeiramente, verifiquei quais pacotes eu poderia remover com apt-get remove --purge --dry-run package_name
sem alterar nenhuma dependência. Em seguida, gostaria de verificar qual versão específica eu queria fazer o downgrade para com apt-cache policy package_name
. Então eu prossegui para instalar a última versão disponível de cada um desses pacotes.
Este método funcionou com
* xserver-xorg-video-ati
xserver-xorg-video-intel
xserver-xorg-video-nouveau
xserver-xorg-video-radeon
xserver-xorg-video-glamoregl
O xserver-xorg-video-ati
depende do xserver-xorg-video-glamoregl
que depende do libglamor0
, por isso não pode ser reinstalado, a menos que você faça o seguinte:
Em seguida, comecei a fazer o downgrade com apt-get install --reinstall package_name=version
, em que version
é a versão desejada que aparece em apt-cache policy
. Eu fiz isso com pacotes que poderiam ser reinstalados sem afetar dependências e agrupar pacotes que compartilhavam a mesma versão em comandos individuais. Que trabalhou com:
linux-firmware
libglamor0
mesa-common-dev
mesa-utils
libva-x11-1
libva1
libvdpau-dev
libvdpau1
Remover os pacotes da mesa ao invés de reinstalá-los afetará muitas dependências. Com essa etapa, pude instalar mais uma vez libglamor0
, depois xserver-xorg-video-glamoregl
e finalmente xserver-xorg-video-ati
.
Depois de reinstalar libva
, os pacotes marcados com "rc" relacionados com libva
permaneceram. Essa marca significa "removido, mas os arquivos de configuração permanecem" e eu removi com segurança cada um deles com apt-get remove --purge package_name
.
Eu reiniciei a máquina neste momento para ver se iria começar de novo, felizmente aconteceu. Eu tinha certa confiança neste ponto, pois todos esses pacotes dependiam uns dos outros ou de ninguém.
Então ... o inferno da dependência.
Eu usei o dpkg -i --force-depends list-of-packages
para fazer o downgrade de pacotes sem afetar suas dependências, como indicado em: Como posso fazer o downgrade de pacotes sem remover seus dependentes?
Eu baixei e reinstalei por lotes de pacotes deb que compartilhavam a mesma versão. Verificou se cada um desses pacotes tinha candidatos de pacote com apt-cache policy
e googled-baixado-los com a versão específica e arquitetura (amd64 / i386) mostrada lá. Fiz corridas a seco antes de cometer cada comando dpkg
, tomando cuidado com qualquer aviso que possa surgir devido ao conflito de dependências. Nenhum conflito foi mostrado.
Primeiro eu fui com o lote libdrm2
.
libdrm2_2.4.67-1ubuntu0.14.04.1_amd64.deb
libdrm2_2.4.67-1ubuntu0.14.04.1_i386.deb
libdrm-amdgpu1_2.4.67-1ubuntu0.14.04.1_amd64.deb
libdrm-amdgpu1_2.4.67-1ubuntu0.14.04.1_i386.deb
libdrm-dev_2.4.67-1ubuntu0.14.04.1_amd64.deb
libdrm-intel1_2.4.67-1ubuntu0.14.04.1_amd64.deb
libdrm-intel1_2.4.67-1ubuntu0.14.04.1_i386.deb
libdrm-nouveau2_2.4.67-1ubuntu0.14.04.1_amd64.deb
libdrm-nouveau2_2.4.67-1ubuntu0.14.04.1_i386.deb
libdrm-radeon1_2.4.67-1ubuntu0.14.04.1_amd64.deb
libdrm-radeon1_2.4.67-1ubuntu0.14.04.1_i386.deb
Em seguida, mesa
(neste ponto, completamente necessário, pois apt-get
começou a lamentar que o libdrm havia quebrado dependências com bibliotecas de mesa)
libegl1-mesa_10.1.3-0ubuntu0.6_amd64.deb
libegl1-mesa-drivers_10.1.3-0ubuntu0.6_amd64.deb
libgbm1_10.1.3-0ubuntu0.6_amd64.deb
libgl1-mesa-dri_10.1.3-0ubuntu0.6_amd64.deb
libgl1-mesa-dri_10.1.3-0ubuntu0.6_i386.deb
libgl1-mesa-glx_10.1.3-0ubuntu0.6_amd64.deb
libgl1-mesa-glx_10.1.3-0ubuntu0.6_i386.deb
libglapi-mesa_10.1.3-0ubuntu0.6_amd64.deb
libglapi-mesa_10.1.3-0ubuntu0.6_i386.deb
libgles2-mesa_10.1.3-0ubuntu0.6_amd64.deb
libosmesa6_10.1.3-0ubuntu0.6_amd64.deb
libosmesa6_10.1.3-0ubuntu0.6_i386.deb
libwayland-egl1-mesa_10.1.3-0ubuntu0.6_amd64.deb
libxatracker2_10.1.3-0ubuntu0.6_amd64.deb
E finalmente libvorbis
packages:
libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb
libvorbis0a_1.3.2-1.3ubuntu1_i386.deb
libvorbis-dev_1.3.2-1.3ubuntu1_amd64.deb
libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb
libvorbisenc2_1.3.2-1.3ubuntu1_i386.deb
libvorbisfile3_1.3.2-1.3ubuntu1_amd64.deb
libvorbisfile3_1.3.2-1.3ubuntu1_i386.deb
Neste ponto, libllvm
tornou-se uma dependência desnecessária que pode ser removida através de apt-get autoremove
. Deixou pacotes "rc" marcados que removi com apt-get remove --purge
sem nenhum problema.