
Depois de do-release-upgrade
mudar de 16.04 para 18.04, algo falhou e a máquina ficou em um estado "intermediário", com muitos problemas de dependências quebradas. Minha árvore de pacotes está uma bagunça, estou desesperado... ;-)
Eu tentei muitas coisas (incluindo dpkg --configure -a
remover pacotes aleatoriamente com dpkg --force depends -P <pkg-name>
, além de outras coisas), mas estou meio preso no momento.
Então, quando eu tento:
$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
(here 20 lines)
The following additional packages will be installed:
... (here 5 lines)
Suggested packages:
... more
Recommended packages:
... more
The following packages will be REMOVED:
... more
The following NEW packages will be installed:
... more (10 lines)
28 upgraded, 6 newly installed, 1 to remove and 327 not upgraded.
228 not fully installed or removed.
Need to get 0 B/13,3 MB of archives.
After this operation, 2 771 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Até aqui não tenho medo de nada. Mas agora, entrando Y
:
Extracting templates from packages: 100%
(Reading database ... 977800 files and directories currently installed.)
Removing ubuntu-advantage-tools (27.0.2~18.04.1) ...
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "/usr/lib/python3/dist-packages/uaclient/apt.py", line 9, in <module>
from uaclient import gpg
File "/usr/lib/python3/dist-packages/uaclient/gpg.py", line 3, in <module>
import shutil
ModuleNotFoundError: No module named 'shutil'
dpkg: error processing package ubuntu-advantage-tools (--remove):
installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
ubuntu-advantage-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
Então isso soa como um erro do Python, pelo que entendi, não é possível encontrar shutil
. Então baixei manualmente o que achei que era o seguinte:
https://packages.ubuntu.com/bionic/python-backports-shutil-get-terminal-size
e instalado manualmente com:
sudo dpkg -i python-backports-shutil-get-terminal-size_1.0.0-5_all.deb
Mas fazer apt --fix-broken install
de novo acaba no mesmo ponto.
Tenho conhecimento limitado com Python, então não posso ter certeza de que esse seja o verdadeiro problema, mas qualquer ajuda é bem-vinda. Caso contrário, o próximo passo provavelmente será reinstalar do zero, mas eu realmente prefiro evitar isso.
No momento, sou capaz de instalar pacotes manualmente (baixe emhttps://packages.ubuntu.com/then dpkg -i
) mas é só isso, todo o resto falha.
Por exemplo, se eu tentar instalar libpython3.6-stdlib
:
$ sudo apt-get install libpython3.6-stdlib
Eu recebo:
libpython3.6-stdlib : Depends: libpython3.6-minimal (= 3.6.9-1~18.04ubuntu1.4) but 3.6.13-1+xenial2 is to be installed
o que significa que euaindatenho pacotes a partir de 16.04 (Xenial).
Como posso manualmenteremovertodos os pacotes 16.04?
Informações adicionais (a máquina agora inicializa apenas com um console):
$ python --version
=> Python 3.6.13$ lsb_release -a
não está disponível$ uname -a
me diz que é um kernel 4.15 (que parece consistente com 18.04)
Responder1
FWIW: O ponto chave estava de fato aqui:
dpkg: error processing package ubuntu-advantage-tools (--remove):
installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1
Todo o processo falhou devido à falha do script de "pré-remoção" do pacote ubuntu-advantage-tools
(não tenho ideia do que é isso!).
Então eu fiz:
$ sudo mv /var/lib/dpkg/info/ubuntu-advantage-tools.prerm /var/lib/dpkg/info/ubuntu-advantage-tools.prerm_OLD
e consegui completar o sudo apt --fix-broken install
comando.
Reinicie e depois outro problema (teclado não reconhecido) que foi resolvido usandooutra pergunta, após inicializar no modo de recuperação:
$ sudo apt-get install xserver-xorg-input-all
Finalmente consegui inicializar graficamente, mas ... ainda existem alguns problemas com o gerenciador de pacotes que ainda faz referência ao xenial (16.04). Vou postar outra pergunta.
Responder2
Isto parece um sistema muito doente; você pode querer tirá-lo de seu sofrimento, ou seja, reinstalá-lo. Se você ainda não possui um /home
sistema de arquivos separado, copie seu diretório inicial e tudo o que você colocou de lado e recomece para obter um sistema limpo novamente.
Eu também copiaria /etc
caso valesse a pena resgatar algum arquivo de configuração não trivial (mas evitaria copiá-lo para o novo sistema, a menos que fosse absolutamente necessário).
Pense desta forma: esse sistema serviu bem para você por longos anos (algum tempo logo depois de 2016, já que é 16.04); deixe descansar em paz. ;-) Agora é hora de algo novo e limpo.
Certa vez, fiz uma lista de verificação para mim mesmo do que faço em um Ubuntu recém-instalado para colocá-lo em um formato que considero mais utilizável; talvez você possa se inspirar nisso:https://github.com/shundhammer/huha-linux-tips/blob/master/doc/ubuntu-tips.md(algumas partes podem estar um pouco desatualizadas; deixa pra lá)