Mono rotto dopo il tentativo di aggiornamento, impossibile utilizzare apt


10

Ho avuto mono-completee mono-develinstallato sul mio Ubuntu Server 18.10 per un paio di mesi ormai per eseguire alcune applicazioni che dipendono da esso. Sto usando Mono 5.18.0.225. Prima di rompere le cose, ho fatto uno standard sudo apt update, ho visto molti pacchetti mono nell'elenco per l'aggiornamento, quindi ho fatto un sudo apt upgrade. È andato normalmente per la maggior parte dell'installazione e quindi il terminale ha continuato a sputare errori, errori ed errori. Gli errori quasi infiniti verrebbero stampati più e più volte per diversi secondi indipendentemente da ciò che ho provato a fare:

  • sudo apt upgrade
  • sudo apt --fix-broken install
  • sudo apt remove mono-complete mono-devel
  • sudo apt autoremove

Non riesco a aggiornare o rimuovere. Se l'aggiornamento è impossibile, ho provato a rimuovere e provare a reinstallare, ma anche la rimozione non è riuscita.

Nell'errore indica che non è possibile trovare gdb o lldb. Ho quindi provato a creare e installare manualmente gdb perché non posso usare apt ... provando a farlo ti chiederò di eseguire sudo apt --fix-broken installche sputa gli stessi errori. L'installazione di gdb-8.2 è riuscita. Gli errori stampati cambiano leggermente e contengono riferimenti a gdb (perché ora è installato) ma non sono ancora arrivati ​​da nessuna parte.

  • Come si è rotto il mono in primo luogo?
  • Perché il tentativo di rimuovere i pacchetti produce errori?
  • Qual è la migliore linea d'azione per risolvere questa situazione? Preferirei non dover reinstallare Ubuntu Server e ripristinare tutto.

Per cosa viene stampato nell'errore (prima dell'installazione di 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

Risposte:


6

Non sono sicuro al 100% che questi comandi in questo ordine risolveranno il problema ogni volta, ma è quello che è successo e sono stato in grado di reinstallare Mono in modo da far funzionare di nuovo le applicazioni che dipendono da esso.

  1. sudo apt remove mono-complete mono-devel

    • Alcuni pacchetti devono essere rimossi (arriva a circa il 15-25% circa) prima che gli errori inizino a sputare e non è possibile eseguirlo di nuovo.
  2. sudo apt autoremove

    • Alcuni pacchetti devono essere rimossi prima che gli errori inizino a sputare e non è possibile eseguirlo di nuovo.
  3. sudo apt remove mono-gac mono-runtime-common
    • Alcuni pacchetti devono essere rimossi prima che gli errori inizino a sputare e non è possibile eseguirlo di nuovo.
  4. sudo apt autoremove
    • Il resto dei pacchetti Mono dovrebbe essere rimosso completamente questa volta senza errori.
    • Ci devono essere alcuni pacchetti che sono la causa degli errori nei comandi precedenti e quando viene rimosso, gli errori smettono di accadere e il resto può essere rimosso senza problemi.
  5. Reinstallare Mono.

1
Ma non posso eseguire apt removeperché dice che dpkg è stato interrotto e devo eseguirlo manualmente sudo dpkg --configure -a, ma questo comando causa solo gli errori sopra.
Aaron Franke,

cruciale per me (su 18.04.1-Ubuntu) è stato sudo dpkg --force-all -P ca-certificates-monoe dato che sudo apt --fix-broken installné altre ricette 'fix' non hanno funzionato ho rimosso tutto in mono sopra la moda. In particolare cose come sudo dpkg --force-all -P mono-common mono-devele sudo dpkg --force-all -P mono-4.0-gac mono-gacdopo quell'aggiornamento, upgrade e qualsiasi correzione in stile '--fix-broken install' e 'autoremove' hanno ripulito il resto. Punteggio finale: $ mono - versione del compilatore Mono JIT versione 6.0.0.319 (tarball ven 9 agosto 16:23:57 UTC 2019) ....
user309383

1

Va bene, se sei abbastanza disperato da provare qualcosa di solo timido rispetto a quella che sembra essere, purtroppo, una risoluzione fin troppo comune - pulire il disco rigido e reinstallare il sistema operativo da zero ...

In qualche modo sono riuscito a riparare la mia nave. Non sono sicuro di come e non sono sicuro del perché, ma queste sono le ultime cose che ho provato che per qualche motivo ha prodotto un risultato positivo:

sudo dpkg --remove --force-remove-reinstreq mono-complete
È tornato rapidamente al prompt dei comandi senza messaggi. Ha fatto davvero qualcosa? Chissà. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-devel
È tornato rapidamente al prompt dei comandi senza messaggi. Ha fatto davvero qualcosa? Chissà. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-gac
Ha detto che non è stato possibile rimuoverlo a causa delle dipendenze

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Ha detto che non poteva rimuoverlo a causa delle dipendenze

Per cazzate e risatine ho provato a usare Synaptic Package Manager per rimuovere mono-devel. È stato contrassegnato come non installato (vedi sopra) ma offre la rimozione COMPLETA. Selezionato e applicato. Ha prodotto un carico di errori dpkg ormai familiari e fallito.

Ho provato a usarlo per rimuovere mono-runtime-common e anche questo ha prodotto un buttload di errori dpkg ormai familiari e non è riuscito.

Poi ho corso

sudo apt-get purge mono-gac
e per qualche ragione QUESTA volta ha funzionato. Ha disinstallato un buttload di roba, ma si è sbagliato su un roba di butt di roba. Sì, almeno ha fatto ALCUNI progressi.

sudo apt-get update
sudo apt-get upgrade
ora mostrava solo tre elementi che in precedenza non ero in grado di aggiornare perché Mono era imploso. Ora sono stato in grado di aggiornarli con successo.

Ho quindi seguito le istruzioni di installazione Mono per Ubuntu 18.04 su https://www.mono-project.com/download/stable/#download-lin
Tuttavia, al passaggio 2, invece di installare mono-devel ho installato mono-complete

Si è installato senza errori e ha precompilato alcune cose. Dopo il riavvio, 2 delle mie 3 app basate su Mono sono state ripristinate e funzionanti. Il terzo dovevo solo fare una reinstallazione sul posto e anche questo è tornato dopo un riavvio.

Spero sinceramente che tu riesca a raccogliere un po 'di aiuto dalle assurdità di cui sopra ed ecco a buone vacanze altrimenti, un grande anno nuovo e altre cose del genere. :)


I risultati di apt policy mono-complete mono-develmostrano che ho installato entrambi su 18.04 e mono funziona su 18.04, quindi sospetto che ci sia un problema di gestione dei pacchetti nella domanda. I pacchetti mono-complete e mono-devel sono ancora disponibili nei repository predefiniti per 18.10 e 19.04.
karel,

Grazie per la risposta, ma non sono sicuro di poter provare uno di questi suggerimenti dopo quello che ho provato ieri sera. Noterò che quando ho eseguito inizialmente sudo apt remove mono-complete mono-devele sudo apt autoremove, alcuni pacchetti erano stati rimossi prima che gli errori iniziassero a sputare. Ieri sera ho corso sudo apt remove mono-gac mono-runtime-commone altri pacchetti sono stati rimossi prima che gli errori venissero espulsi. Quindi, sorprendentemente, quando ho corso in sudo apt autoremoveseguito non ci sono stati errori, il resto dei pacchetti è stato rimosso e penso che mono sia stato disinstallato con successo e completamente.
Matthew Wright,

Tuttavia, reinstallare Mono è il passaggio successivo e spero che vada per il meglio in modo da poter riavviare quelle applicazioni.
Matthew Wright,

Non sono sicuro che la causa sia uno o più pacchetti, ma qualunque cosa sia stata rimossa prima che gli errori iniziando a sputare sul secondo apt removedebba aver risolto il problema. Sarebbe utile sapere quali pacchetti sono stati la causa specifica per risolverli di nuovo in futuro. Tuttavia, non so quanto sia facilmente riproducibile questo problema.
Matthew Wright,

Sì, la reinstallazione di mono ha avuto successo e le mie applicazioni funzionano di nuovo normalmente!
Matthew Wright,

0

Ho avuto lo stesso problema sulla mia scatola di menta Linux 18.3 Sylvia. Ho dovuto usare timeshift per reinstallare il sistema. Tutto quello che ho fatto finora è rimuovere il mono ppa dal repository e, per il momento, sono in grado di aggiornare / aggiornare i pacchetti. Attendo che la nuova correzione mono riattivi il repository. So che non è una soluzione al problema ma, almeno, è un modo per superare il problema in attesa che i veri smanettoni lo risolvano.


Grazie per la risposta! Non avevo mai sentito parlare o usato Timeshift prima, ma darò un'occhiata. Penso di essere riuscito a disinstallare con successo mono dal mio sistema ieri sera. È questo lo strumento a cui ci riferiamo? . È la versione del server anche se solo a riga di comando. Non vedo immediatamente che puoi usarlo tramite l'interfaccia della riga di comando.
Matthew Wright,

0

Ho avuto un problema simile. Nel mio caso il mono-sviluppo dipendeva dal mono-roslyn e per qualche ragione il mono-roslyn dipende dal mono-sviluppo. Quindi la rimozione dei pacchetti in modo indipendente non ha funzionato. Ma questo fa:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.