Mono zepsute po próbie aktualizacji, nie można użyć apt

10

Mam mono-completei mono-develinstaluję na moim Ubuntu Server 18.10 od kilku miesięcy, aby uruchomić niektóre aplikacje, które od niego zależą. Używam Mono 5.18.0.225. Zanim coś się zepsuło, zrobiłem standard sudo apt update, zobaczyłem wiele pakietów mono na liście do aktualizacji, a potem zrobiłem sudo apt upgrade. Po większości instalacji poszło normalnie, a następnie terminal wyrzucał błędy, błędy i błędy. Niemal nieskończone błędy będą drukowane w kółko przez kilka sekund, niezależnie od tego, co próbowałem zrobić:

  • sudo apt upgrade
  • sudo apt - zepsuta instalacja
  • sudo apt remove mono-complete mono-devel
  • sudo apt autorove

Nie można zaktualizować ani usunąć. Jeśli aktualizacja jest niemożliwa, próbowałem usunąć i spróbować zainstalować ponownie, ale usunięcie również nie powiodło się.

W błędzie wspomniano, że nie można znaleźć gdb ani lldb. Następnie próbowałem ręcznie utworzyć i zainstalować gdb, ponieważ nie mogę użyć apt ... próba zrobienia tego poprosi cię o uruchomienie, sudo apt --fix-broken installktóre wyrzuca te same błędy. Instalacja gdb-8.2 powiodła się. Wydrukowane błędy nieznacznie się zmieniają i zawierają odniesienia do gdb (ponieważ teraz jest zainstalowany), ale wciąż nigdzie nie dotarł.

  • W jaki sposób mono się zepsuło?
  • Dlaczego próbuje usunąć pakiety powodujące błędy?
  • Jaki jest najlepszy sposób rozwiązania tej sytuacji? Wolałbym nie instalować ponownie Ubuntu Server i konfigurować wszystko z powrotem.

Dla tego, co jest drukowane w błędzie (przed instalacją 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
źródło

Odpowiedzi:

6

Nie jestem w 100% pewien, że te polecenia w tej kolejności rozwiążą problem za każdym razem, ale tak się stało i udało mi się ponownie zainstalować Mono, aby ponownie uruchomić aplikacje, które od niego zależą.

  1. sudo apt remove mono-complete mono-devel

    • Niektóre pakiety powinny zostać usunięte (dochodzi do około 15–25%), zanim błędy zaczną wypluwać i nie będzie można uruchomić tego ponownie.
  2. sudo apt autoremove

    • Niektóre pakiety powinny zostać usunięte, zanim błędy zaczną wypluwać i nie będzie można uruchomić tego ponownie.
  3. sudo apt remove mono-gac mono-runtime-common
    • Niektóre pakiety powinny zostać usunięte, zanim błędy zaczną wypluwać i nie będzie można uruchomić tego ponownie.
  4. sudo apt autoremove
    • Reszta pakietów Mono powinna tym razem całkowicie się usunąć bez wyrzucania błędów.
    • Muszą istnieć pewne pakiety, które są przyczyną błędów w poprzednich poleceniach, a po ich usunięciu błędy przestają się pojawiać, a resztę można usunąć bez problemu.
  5. Ponownie zainstaluj Mono.
Matthew Wright
źródło
1
Ale nie mogę uruchomić, apt removeponieważ mówi, że dpkg został przerwany i muszę uruchomić ręcznie sudo dpkg --configure -a, ale to polecenie powoduje tylko powyższe błędy.
Aaron Franke
kluczowe dla mnie (w dniu 18.04.1-Ubuntu) było sudo dpkg --force-all -P ca-certificates-monoi ponieważ sudo apt --fix-broken installżadne inne przepisy „naprawiające” nie działały, usunąłem wszystko mono w powyższy sposób. W szczególności rzeczy takie jak sudo dpkg --force-all -P mono-common mono-develi sudo dpkg --force-all -P mono-4.0-gac mono-gacpo tej aktualizacji, aktualizacji oraz wszelkie poprawki w stylu „- fix-broken install” i „autorove” wyczyściły resztę. Ostateczny wynik: $ mono --wersja Wersja kompilatora Mono JIT 6.0.0.319 (tarball pt 9 sierpnia, 16:23:57 UTC 2019) ....
user309383,
1

Ok, jeśli jesteś na tyle zdesperowany, by spróbować czegoś, co nie wystarczy, co wydaje się, niestety, zbyt powszechnym rozwiązaniem - czyszczenie dysku twardego i ponowna instalacja systemu operacyjnego od zera ...

W jakiś sposób udało mi się naprawić mój statek. Nie jestem pewien jak i nie jestem pewien dlaczego, ale to jest kilka ostatnich rzeczy, które próbowałem, które z jakiegoś powodu przyniosły pozytywny wynik:

sudo dpkg --remove --force-remove-reinstreq mono-complete
Szybko wrócił do wiersza poleceń bez żadnych komunikatów. Czy to faktycznie coś zrobiło? Kto wie. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-devel
Szybko powrócił do wiersza poleceń bez żadnych komunikatów. Czy to faktycznie coś zrobiło? Kto wie. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-gac
Powiedział, że nie może go usunąć z powodu zależności

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Powiedział, że nie może go usunąć z powodu zależności

W przypadku gówna i chichotów próbowałem następnie użyć Menedżera pakietów Synaptic, aby usunąć mono-devel. Został oznaczony jako niezainstalowany (patrz wyżej), ale zaoferował KOMPLETNE usunięcie. Wybrałem to i zastosowałem. Wywołało mnóstwo znanych teraz błędów dpkg i nie powiodło się.

Próbowałem go użyć do usunięcia mono-runtime-common, a także wytworzyło mnóstwo znanych już błędów dpkg i nie powiodło się.

Wtedy pobiegłem

sudo apt-get purge mono-gac
iz jakiegoś powodu tym razem to trochę, trochę Odinstalował mnóstwo rzeczy, ale zignorował mnóstwo rzeczy. Tak, przynajmniej zrobiło NIEKTÓRY postęp.

sudo apt-get update
sudo apt-get upgrade
pokazał teraz tylko trzy elementy, których wcześniej nie byłem w stanie zaktualizować, ponieważ Mono implodowało. Teraz mogłem je pomyślnie uaktualnić.

Następnie postępowałem zgodnie z instrukcjami instalacji Mono dla Ubuntu 18.04 na https://www.mono-project.com/download/stable/#download-lin
Jednak w kroku 2 zamiast instalacji mono-devel zainstalowałem mono-complete

Zainstalował się bez błędów i wstępnie skompilował niektóre rzeczy. Po ponownym uruchomieniu 2 moich 3 aplikacji opartych na Mono zostało ponownie uruchomionych. Trzeci po prostu musiałem dokonać ponownej instalacji na miejscu i również wrócił po ponownym uruchomieniu.

Mam szczerą nadzieję, że uda ci się zebrać pomoc z powyższych bzdur i oto wesołe wakacje, wspaniały nowy rok i inne tego typu rzeczy. :)

gorT
źródło
Wyniki apt policy mono-complete mono-develprogramu, który zainstalowałem zarówno 18.04, jak i mono, działają 18.04, więc podejrzewam, że w pytaniu jest problem z zarządzaniem pakietami. pakiety mono-complete i mono-devel są nadal dostępne w domyślnych repozytoriach dla 18.10 i 19.04.
karel
Dzięki za odpowiedź, ale nie jestem pewien, czy po wypróbowaniu ostatniej nocy mogę wypróbować którąkolwiek z tych sugestii. Zauważyłem, że kiedy pierwotnie uruchomiłem sudo apt remove mono-complete mono-develi sudo apt autoremove, niektóre pakiety zostały usunięte, zanim błędy zaczęły wypluwać. Ostatniej nocy pobiegłem sudo apt remove mono-gac mono-runtime-commoni kolejne pakiety zostały usunięte, zanim błędy wypluły. Potem, co zaskakujące, kiedy sudo apt autoremovepóźniej pobiegłem, nie było żadnych błędów, reszta pakietów została usunięta i myślę, że mono zostało pomyślnie i całkowicie odinstalowane.
Matthew Wright,
Jednak ponowna instalacja mono jest kolejnym krokiem i mam nadzieję, że pójdzie gładko, dzięki czemu mogę ponownie uruchomić te aplikacje.
Matthew Wright,
Nie jestem pewien, czy przyczyną jest jeden czy kilka pakietów, ale wszystko, co zostało usunięte, zanim błędy zaczęły wypluwać się na drugim, apt removemusiało rozwiązać problem. Przydałoby się wiedzieć, które pakiety były konkretną przyczyną, aby naprawić je ponownie w przyszłości. Nie wiem jednak, jak łatwo ten problem jest powtarzalny.
Matthew Wright,
Tak, ponowna instalacja mono zakończyła się powodzeniem, a moje aplikacje znów działają normalnie!
Matthew Wright,
0

Miałem ten sam problem na moim pudełku z miętą z linuksem 18.3 Sylvia. Musiałem użyć funkcji Timeshift, aby ponownie zainstalować system. Do tej pory zrobiłem tylko usunięcie mono ppa z repozytorium i na razie jestem w stanie zaktualizować / zaktualizować pakiety. Czekam na nową poprawkę mono, aby ponownie aktywować repozytorium. Wiem, że to nie jest rozwiązanie problemu, ale przynajmniej jest to sposób na rozwiązanie problemu czekającego na prawdziwych maniaków.

Emilio
źródło
Dzięki za odpowiedzi! Nie słyszałem o przesunięciu czasu ani nie korzystałem z niego wcześniej, ale przyjrzę się. Myślę, że ostatniej nocy udało mi się pomyślnie odinstalować mono z mojego systemu. Czy to narzędzie, o którym mówimy? . Jest to wersja serwerowa, więc tylko wiersz poleceń. Nie widzę od razu, że można go użyć za pośrednictwem interfejsu CLI.
Matthew Wright,
0

Miałem podobny problem. W moim przypadku mono-devel zależał od mono-roslyn iz jakiegoś powodu mono-roslyn zależy od mono-devel. Więc usuwanie pakietów niezależnie nie działało. Ale to robi:

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

msangel
źródło