Mono quebrado após tentativa de atualização, incapaz de usar o apt

10

Eu já instalei mono-completee mono-develinstalei no meu Ubuntu Server 18.10 há alguns meses para executar alguns aplicativos que dependem dele. Estou usando o Mono 5.18.0.225. Antes de tudo quebrar, eu fiz um padrão sudo apt update, vi muitos pacotes mono na lista para atualizar e, em seguida, fiz um sudo apt upgrade. Ele foi normalmente para a maior parte da instalação e, em seguida, o terminal continuou emitindo erros e erros e erros. Os erros quase infinitos seriam impressos repetidamente por vários segundos, independentemente do que eu tentasse fazer:

  • sudo apt upgrade
  • Instalação do sudo apt --fix-broken
  • sudo apt remover mono-completo mono-devel
  • sudo apt autoremove

Não consigo atualizar ou remover. Se a atualização for impossível, tentei remover e tentar reinstalar, mas a remoção também falhou.

No erro, ele menciona não ser capaz de encontrar gdb ou lldb. Em seguida, tentei criar e instalar manualmente o gdb porque não consigo usar o apt ... tentar fazer isso pedirá que você execute o sudo apt --fix-broken installque cospe os mesmos erros. A instalação do gdb-8.2 foi bem-sucedida. Os erros impressos mudam um pouco e contêm referências ao gdb (porque agora está instalado), mas ainda não chegaram a lugar algum.

  • Como o mono quebrou em primeiro lugar?
  • Por que está tentando remover pacotes que produzem erros?
  • Qual é o melhor curso de ação para corrigir essa situação? Prefiro não ter que reinstalar o Ubuntu Server e configurar tudo de volta.

Para o que está sendo impresso no erro (antes da instalação do gdb):

Aborted (core dumped)
E: installing Assembly /usr/share/cli-common/policies.d/libgtk2.0-cil/policy.2.8.gtk-sharp.dll failed
E: Installation of policy.2.8.gtk-sharp with /usr/share/cli-common/runtimes.d/mono failed
* Installing 1 assembly from policy.2.8.pango-sharp into Mono
Stacktrace:

/proc/self/maps:
41308000-41338000 rwxp 00000000 00:00 0
55b153398000-55b1537e1000 r-xp 00000000 08:02 3159129                    /usr/bin/mono-sgen

... cutting some of this out ...

7fb557c3b000-7fb557c88000 r--p 00000000 08:02 3160431                    /usr/lib/mono/gac/Mono.Security/4.0.0.0__0738eb9f132ed756/Mono.Security.dll
Memory around native instruction pointer (0x7fb5556e2c8f):
0x7fb5556e2c7f  20 48 09 d6 41 0f b6 53 05 48 c1 e2 28 48 09 f2   H..A..S.H..(H..
0x7fb5556e2c8f  66 41 0f 38 32 4b 06 66 0f 6f 05 b2 82 49 00 66  fA.82K.f.o...I.f
0x7fb5556e2c9f  0f 38 00 c8 66 48 0f 7e c8 66 48 0f 3a 16 ce 01  .8..fH.~.fH.:...
0x7fb5556e2caf  48 09 c6 48 09 d6 41 0f b6 c2 41 0f b6 53 09 48  H..H..A...A..S.H

Native stacktrace:

    /usr/bin/mono(+0x129f8d) [0x55b1534c1f8d]
    /usr/bin/mono(+0x12a295) [0x55b1534c2295]
    /usr/bin/mono(+0xbfd2f) [0x55b153457d2f]
    /usr/bin/mono(+0x414e8) [0x55b1533d94e8]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x12dd0) [0x7fb558343dd0]
    /usr/lib/mono/aot-cache/amd64/mscorlib.dll.so(+0x123c8f) [0x7fb5556e2c8f]

Waiting for dumping threads to resume


Debug info from gdb:

mono_gdb_render_native_backtraces not supported on this platform, unable to find gdb or lldb

=================================================================
Got a SIGILL while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

Aborted (core dumped)
E: installing Assembly /usr/share/cli-common/policies.d/libgtk2.0-cil/policy.2.8.pango-sharp.dll failed
E: Installation of policy.2.8.pango-sharp with /usr/share/cli-common/runtimes.d/mono failed
^[[1mdpkg:^[[0m error processing package mono-gac (--configure):
installed mono-gac package post-installation script subprocess returned error exit status 29
Matthew Wright
fonte

Respostas:

6

Não tenho 100% de certeza de que esses comandos nesta ordem resolverão o problema todas as vezes, mas foi o que aconteceu e fui capaz de reinstalar o Mono com êxito para fazer com que os aplicativos que dependem dele sejam executados novamente.

  1. sudo apt remove mono-complete mono-devel

    • Alguns pacotes devem ser removidos (chega a aproximadamente 15 a 25%) antes que os erros comecem a aparecer e você não pode executá-lo novamente.
  2. sudo apt autoremove

    • Alguns pacotes devem ser removidos antes que os erros comecem a aparecer e você não pode executá-lo novamente.
  3. sudo apt remove mono-gac mono-runtime-common
    • Alguns pacotes devem ser removidos antes que os erros comecem a aparecer e você não pode executá-lo novamente.
  4. sudo apt autoremove
    • O restante dos pacotes Mono deve ser removido completamente desta vez, sem erros.
    • Deve haver certos pacotes que são a causa dos erros nos comandos anteriores e, quando removidos, os erros param de acontecer e o restante pode ser removido sem problemas.
  5. Reinstale o Mono.
Matthew Wright
fonte
11
Mas não consigo executar apt removeporque diz que o dpkg foi interrompido e devo executar manualmente sudo dpkg --configure -a, mas esse comando apenas causa os erros acima.
Aaron Franke
crucial para mim (no 18.04.1-Ubuntu) foi sudo dpkg --force-all -P ca-certificates-monoe, como sudo apt --fix-broken installnenhuma outra receita de 'correção' não funcionou, removi tudo mono da moda acima. Em particular, coisas como sudo dpkg --force-all -P mono-common mono-devele sudo dpkg --force-all -P mono-4.0-gac mono-gacapós essa atualização, a atualização e qualquer correção no estilo '--fix-broken install' e 'autoremove' limparam o resto. Nota final: $ mono - versão do compilador Mono JIT versão 6.0.0.319 (tarball Fri Aug 9 16:23:57 UTC 2019) ...
user309383
1

Tudo bem, se você está desesperado o suficiente para tentar algo menos do que parece ser, infelizmente, uma resolução muito comum - limpar o disco rígido e reinstalar o sistema operacional do zero ...

De alguma maneira eu consegui consertar meu navio. Não sei bem como e por quê, mas estas são as últimas coisas que tentei que, por algum motivo, produziram um resultado positivo:

sudo dpkg --remove --force-remove-reinstreq mono-complete
Ele rapidamente retornou ao prompt de comando sem mensagens. Realmente fez alguma coisa? Quem sabe. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-devel
Ele rapidamente retornou ao prompt de comando sem mensagens. Realmente fez alguma coisa? Quem sabe. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-gac
Ele disse que não pôde removê-lo devido a dependências

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Ele disse que não pôde removê-lo devido a dependências

Por merdas e risadinhas, tentei usar o Synaptic Package Manager para remover o mono-devel. Foi marcado como não instalado (veja acima), mas ofereceu remoção COMPLETA. Selecionou isso e aplicado. Produziu um monte de erros dpkg, agora familiares, e falhou.

Tentei usá-lo para remover o mono-runtime-common e também produziu um monte de erros dpkg, agora familiares, e falhou.

Então eu corri

sudo apt-get purge mono-gac
e por algum motivo Dessa vez meio que ', meio que' funcionou. Ele desinstalou um monte de coisas, mas errou com um monte de coisas. Sim, pelo menos isso fez algum tipo de progresso.

sudo apt-get update
sudo apt-get upgrade
agora só mostrou três itens que eu já não era capaz de atualizar, porque Mono havia implodido. Agora eu era capaz de atualizá-los com êxito.

Em seguida, segui as instruções de instalação do Mono para o ubuntu 18.04 em https://www.mono-project.com/download/stable/#download-lin
No entanto, na Etapa 2, em vez de instalar o mono-devel, instalei o mono-complete

Ele foi instalado sem erros e pré-compilou algumas coisas. Após uma reinicialização, 2 dos meus 3 aplicativos baseados em Mono estavam de volta em funcionamento. Na terceira, eu apenas tive que fazer uma reinstalação no local e ela também voltou após uma reinicialização.

Eu sinceramente espero que você consiga obter alguma ajuda com essas bobagens acima, e aqui estão as boas festas, um ótimo ano novo e outras coisas desse tipo. :)

gorT
fonte
Os resultados da apt policy mono-complete mono-develmostra que eu instalei no 18.04 e o mono está funcionando no 18.04, então suspeito que haja um problema de gerenciamento de pacotes na questão. Os pacotes mono-complete e mono-devel ainda estão disponíveis nos repositórios padrão para 18.10 e 19.04.
Karel
Obrigado pela resposta, mas não tenho certeza se posso tentar alguma dessas sugestões depois do que tentei ontem à noite. Vou observar que quando eu funcionou originalmente sudo apt remove mono-complete mono-devele sudo apt autoremove, alguns pacotes foram removidos antes de erros começou a cuspir. Ontem à noite corri sudo apt remove mono-gac mono-runtime-commone mais pacotes foram removidos antes que os erros cuspissem. Surpreendentemente, quando eu corri sudo apt autoremovedepois, não houve erros, o restante dos pacotes foi removido e acho que o mono foi desinstalado com êxito e completamente.
Matthew Wright
No entanto, a reinstalação do mono é o próximo passo e espero que ocorra sem problemas para que eu possa executar esses aplicativos novamente.
Matthew Wright
Não tenho certeza se é um ou vários pacotes que são a causa, mas o que foi removido antes dos erros começarem a aparecer no segundo apt removedeve ter corrigido o problema. Seria útil saber quais pacotes foram a causa específica para corrigi-lo novamente no futuro. No entanto, não sei com que facilidade esse problema é reproduzível.
Matthew Wright
Sim, a reinstalação do mono foi bem-sucedida e meus aplicativos estão sendo executados normalmente novamente!
Matthew Wright
0

Eu tive o mesmo problema na minha caixa de hortelã linux 18.3 Sylvia. Teve que usar o Timeshift para reinstalar o sistema. Tudo o que fiz até agora é remover o mono ppa do repositório e, por enquanto, posso atualizar / atualizar os pacotes. Aguardo a nova correção mono para reativar o repositório. Eu sei que não é uma solução para o problema, mas, pelo menos, é uma maneira de superar o problema, esperando que os verdadeiros geeks resolvam o problema.

Emilio
fonte
Obrigado pela resposta! Eu nunca tinha ouvido falar ou usado o turno do tempo antes, mas vou dar uma olhada. Acho que consegui desinstalar com êxito o mono do meu sistema ontem à noite. É a ferramenta a que estamos nos referindo? . É a versão do servidor, embora apenas a linha de comando. Não vejo imediatamente que você possa usá-lo através da CLI.
Matthew Wright
0

Eu tive um problema parecido. No meu caso, o mono-desenvolvimento dependia do mono-roslyn e, por algum motivo, o mono-desenvolvimento dependia do mono-desenvolvimento. Portanto, remover pacotes independentemente não funcionou. Mas isso faz:

sudo dpkg --remove --force-remove-reinstreq mono-roslyn mono-devel

msangel
fonte