Problemas do Python 3.8.x em 20.04

Problemas do Python 3.8.x em 20.04

Eu já estava voltando para uma imagem de backup do meu MicroSD que tinha cerca de 1,5 semana até que depois de gravá-lo em um novo cartão SanDisk Micro SD, o sistema de arquivos ext4 apresentou vários erros de inode durante o tempo de inicialização, tudo no O sistema operacional estava mais ou menos totalmente quebrado e fsckforneceu basicamente uma lista insana de coisas que foram quebradas no nível do sistema de arquivos. É um cartão Sandisk Micro SD totalmente novo, mas aparentemente durante o processo de backup, a corrupção de dados entrou pela porta dos fundos.

Estou rodando o Ubuntu 20.04 em um Raspberry Pi 4B, o que significa que ele está rodando na arquitetura arm64, então sugestões para baixar os pacotes .deb direto do kernel.org, ou para instalar, ou seja, python3-minimalnão funciona, já que não há nenhum candidatos de instalação para ARM64.

  • Soluções apontando para .deb e outros pacotes de instalação que simplesmente não existem para a arquitetura arm64.

  • Também havia muitos conselhos desatualizados ou totalmente ruins - além disso, nenhum dos métodos de restauração do sistema descritos nos manuais ou na comunidade de usuários do Ubuntu (CD de inicialização em um Raspberry Pi?) Não se aplica ao 20.04 no Raspberry Pi 4B, pelo menos ainda não.

Minha instalação ainda está cambaleando, mas o sistema de atualização do apt/dpkg permanece praticamente quebrado, não importa o que eu tente. Tentei, sem sucesso, baixar os pacotes .deb e instalá-los separadamente.

Quanto a este momento; Py3compile e Pyclean não são encontrados em lugar nenhum e esses dois são os principais culpados pelo dpkg/apt não funcionar, entãoesta respostanão funciona.

$ sudo apt install python3-all
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-all is already the newest version (3.8.2-0ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
4 not fully installed or removed.
Need to get 0 B/129 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up pychess (0.12.2-1build1) ...
/var/lib/dpkg/info/pychess.postinst: 6: pycompile: not found
dpkg: error processing package pychess (--configure):
 installed pychess package post-installation script subprocess returned error ex                                   it status 127
dpkg: error processing package python-pkg-resources (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration
Setting up gir1.2-dee-1.0 (1.2.7+17.10.20170616-4ubuntu6) ...
/var/lib/dpkg/info/gir1.2-dee-1.0.postinst: 6: pycompile: not found
dpkg: error processing package gir1.2-dee-1.0 (--configure):
 installed gir1.2-dee-1.0 package post-installation script subprocess returned e                                   rror exit status 127
Setting up python3-minimal (3.8.2-0ubuntu2) ...
Traceback (most recent call last):
  File "/usr/bin/py3compile", line 28, in <module>
    import struct
  File "/usr/lib/python3.8/struct.py", line 13, in <module>
    from _struct import *
ModuleNotFoundError: No module named '_struct'
dpkg: error processing package python3-minimal (--configure):
 installed python3-minimal package post-installation script subprocess returned                                    error exit status 1
No apport report written because MaxReports is reached already
                                                              Errors were encoun                                   tered while processing:
 pychess
 python-pkg-resources
 gir1.2-dee-1.0
 python3-minimal
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
  • Reinstalar com sudo apt install --reinstall -f python3-alltambém não ajuda.
  $ sudo apt install --reinstall -f python3-all
  Reading package lists... Done
  Building dependency tree
  Reading state information... Done
  0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
  4 not fully installed or removed.
  Need to get 0 B/131 kB of archives.
  After this operation, 0 B of additional disk space will be used.
  (Reading database ... 1052975 files and directories currently installed.)
  Preparing to unpack .../python3-all_3.8.2-0ubuntu2_arm64.deb ...
  Unpacking python3-all (3.8.2-0ubuntu2) over (3.8.2-0ubuntu2) ...
  Setting up pychess (0.12.2-1build1) ...
  /var/lib/dpkg/info/pychess.postinst: 6: pycompile: not found
  dpkg: error processing package pychess (--configure):
   installed pychess package post-installation script subprocess returned error exit status 127
  dpkg: error processing package python-pkg-resources (--configure):
   package is in a very bad inconsistent state; you should
   reinstall it before attempting configuration
  Setting up python3-all (3.8.2-0ubuntu2) ...
  Setting up gir1.2-dee-1.0 (1.2.7+17.10.20170616-4ubuntu6) ...
  /var/lib/dpkg/info/gir1.2-dee-1.0.postinst: 6: pycompile: not found
  dpkg: error processing package gir1.2-dee-1.0 (--configure):
   installed gir1.2-dee-1.0 package post-installation script subprocess returned error exit status 127
  Setting up python3-minimal (3.8.2-0ubuntu2) ...
  Traceback (most recent call last):
    File "/usr/bin/py3compile", line 28, in <module>
      import struct
    File "/usr/lib/python3.8/struct.py", line 13, in <module>
      from _struct import *
  ModuleNotFoundError: No module named '_struct'
  dpkg: error processing package python3-minimal (--configure):
   installed python3-minimal package post-installation script subprocess returned error exit status 1
  No apport report written because MaxReports is reached already
                                                                Errors were encountered while processing:
   pychess
   python-pkg-resources
   gir1.2-dee-1.0
   python3-minimal
  needrestart is being skipped since dpkg has failed
  E: Sub-process /usr/bin/dpkg returned an error code (1)
  • sudo dpkg --configure -ae sudo apt -f install, resultam nos mesmos erros.
  • As instruções de recuperação do dpkg (como por exemploComo reinstalar o dpkg) também não funcionam, pois não existem, ou seja, os arquivos necessários em /var/cache/apt/archives/.

Tentei obter os pacotes .deb direto do site do Ubuntu, extraí-los e instalá-los separadamente.

Dado o fato de que, de acordo com as postagens do fórum que tenho lido, as pessoas têm quebrado seus sistemas Ubuntu e outros sistemas baseados em Debian pelo menos nos últimos dez anos, sempre que algo deu errado com o Python - seja um erro do usuário ou um coisas que quebram pacotes, seria um pouco mais seguro fazer de alguma forma uma correção fundamental na maneira como a arquitetura dpkg/apt é tratada no Linux e isolar quaisquer módulos Python e dependências que eles precisam para executar do resto do sistema operacional? Ou para criar algum tipo de método de restauração do sistema à prova de falhas em casos desses tipos de situações graves que parecem ser bastante prevalentes.

Responder1

Respondi à sua postagem anterior, mas parece que o bloqueio causou alguns problemas.

Como mencionei em minha postagem original, você pode extrair manualmente os arquivos .deb relevantes e reconstruir um Python remendado para inicializar você mesmo. Parece quehttps://packages.ubuntu.com/focal/python3não tem nenhum espelho listado para arm64 mas, após uma breve pesquisa, encontreihttps://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/python3_3.8.2-0ubuntu2_arm64.deb.htmlque fornece todos os nomes dos pacotes e depois aponta parahttp://ports.ubuntu.com/pool/main/p/python3.8/para download (este espelho contém todos os pacotes arm64). Você terá que começar no pacote “python3” e detalhar manualmente todas as dependências para obtê-las todas. Parece que py3compilee py3cleanambos estão empacote python3-minimal

Em segundo lugar, e digo isto tendo eu próprio cometido muitos erros, há inúmeras coisas que as pessoas podem fazer sudoque podem tornar um sistema inoperante e não existem salvaguardas realistas. Deve sudo rmexigir um aviso/confirmação sempre? Que tal sudo chmod? Para cada postagem sobre alguém quebrando seu sistema com problemas de Python, provavelmente posso apontar vários onde as pessoas fizeram algo ruim com permissões ou excluíram o arquivo errado.

Responder2

Vou citar a experiência - se você tentar atualizar o Pythonda fonteem seu sistema, vocêtochaseu sistema de uma forma impossível de corrigir. A solução mais rápida e fácil nestes casos éreinstale seu sistemaou restaurar a partir de uma imagem de backup em boas condições eNÃOtente atualizar o Python a partir do código-fonte.

A resposta "reinstalar" se aplica atodosVersões do sistema operacional, não apenas instalações ISO.

Restaurar o python do sistema a partir da sua 'imagem de backup' será complicado, então você também pode fazer uma restauração completa do sistema a partir do seu backup. Ou reinstale do zero.


Quanto aobtendo python mais recente para suas próprias necessidades, você pode querer usarPyEnvque é um projeto/ferramenta que permite que você tenha várias versões do Python instaladas no espaço do usuário sem afetar o Python do sistema e, portanto, não quebra o Python do sistema. Porque atualizar o python no nível do sistema deixará você com um sistema quebrado em muitos casos.

Responder3

Sim, graças a @Brian Turek, meu sistema está funcionando novamente! Eu fiz funcionar fazendo SSH em minha caixa e pegando os arquivos .deb necessários no link que ele apontou (http://ports.ubuntu.com/pool/main/p/python3.8/) com wget.

Primeiro tive que instalar ( sudo dpkg -i) o libpython3.8-stdlib_3.8.5-2_arm64.debpacote, depois o python3.8-minimal_3.8.5-2_arm64.debpacote, e só ENTÃO o python3.8_3.8.5-2_arm64.debpacote seria instalado por causa das dependências estarem desequilibradas.

NOTA para as gerações futuras (se houver):O procedimento de instalação para um sistema com uma configuração Python quebrada pode variar; apenas tome cuidado para ficar atento às mensagens de erro que ocorrem durante a dpkginstalação de cada pacote - se ele não for instalado porque depende de outra versão de alguma outra dependência, procure na URL do repositório que Brian originalmente vinculado, instale o pacote necessário primeiro, se isso lhe der mais problemas, então você precisa se aprofundar e instalar essas dependências quebradas primeiro para "desobstruir o vaso sanitário do Python que está lá", enxaguar e repetir até que tudo esteja resolvido.

Mesmo assim, finalmente consegui, meu sistema voltou a funcionar e estou feliz em instalar todos os pacotes e atualizações autônomas que estavam pendentes devido a esse problema.Obrigado Brian Turek pela sua ajuda! <3 Você me salvou muitos anos de psicoterapia.

PS: Todos vocês que odeiam e pensam que a única maneira de consertar um sistema com um Python quebrado é simplesmente limpar tudo e começar do zero, "Touché!" :-D

informação relacionada