Моно не работает после попытки обновления, невозможно использовать apt

10

Я установил mono-completeи mono-develустановил на свой Ubuntu Server 18.10 пару месяцев, чтобы запустить некоторые приложения, которые зависят от него. Я использую Mono 5.18.0.225. До того, как что-то сломалось, я сделал стандарт sudo apt update, увидел много моно пакетов в списке для обновления, а затем сделал sudo apt upgrade. В большинстве случаев все прошло нормально, а затем терминал продолжал выплевывать ошибки, ошибки и ошибки. Почти бесконечные ошибки будут печататься снова и снова в течение нескольких секунд, независимо от того, что я пытался сделать:

  • Обновление sudo
  • sudo apt --fix-broken install
  • sudo apt удалить моно-полный моно-разработчик
  • sudo apt autoremove

Не могу обновить или удалить. Если обновление невозможно, я попытался удалить и попробовать переустановить, но удалить тоже не удалось.

В ошибке упоминается невозможность найти gdb или lldb. Затем я попытался вручную создать и установить gdb, потому что я не могу использовать apt ... попытка сделать это попросит вас запустить программу, sudo apt --fix-broken installкоторая выдает те же ошибки. Установка GDB-8.2 прошла успешно. Распечатанные ошибки немного изменяются и содержат ссылки на gdb (потому что теперь он установлен), но до сих пор нигде не получили.

  • Как моно сломалось в первую очередь?
  • Почему пытается удалить пакеты, производящие ошибки?
  • Как лучше всего исправить ситуацию? Я бы предпочел не переустанавливать Ubuntu Server и настраивать все обратно.

Что печатается в сообщении об ошибке (перед установкой 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
Мэтью Райт
источник

Ответы:

6

Я не уверен на 100%, что эти команды в этом порядке будут решать проблему каждый раз, но это то, что произошло, и я смог успешно переустановить Mono, чтобы снова запустить приложения, зависящие от него.

  1. sudo apt remove mono-complete mono-devel

    • Некоторые пакеты должны быть удалены (примерно до ~ 15-25%) до того, как начнут появляться ошибки, и вы не сможете запустить это снова.
  2. sudo apt autoremove

    • Некоторые пакеты должны быть удалены до того, как начнут появляться ошибки, и вы не сможете запустить это снова.
  3. sudo apt remove mono-gac mono-runtime-common
    • Некоторые пакеты должны быть удалены до того, как начнут появляться ошибки, и вы не сможете запустить это снова.
  4. sudo apt autoremove
    • Остальные пакеты Mono должны быть полностью удалены на этот раз, без ошибок.
    • Должны быть определенные пакеты, которые являются причиной ошибок в предыдущих командах, и после их удаления ошибки прекращаются, а остальные могут быть удалены без проблем.
  5. Переустановите Mono.
Мэтью Райт
источник
1
Но я не могу запустить, apt removeпотому что он говорит, что dpkg был прерван, и я должен запустить вручную sudo dpkg --configure -a, но эта команда только вызывает вышеуказанные ошибки.
Аарон Франке
решающим для меня (18.04.1-Ubuntu) было, sudo dpkg --force-all -P ca-certificates-monoи поскольку sudo apt --fix-broken installни один другой рецепт исправления не работал, я удалил все моно вышеописанным способом. В частности, такие вещи, как sudo dpkg --force-all -P mono-common mono-develи sudo dpkg --force-all -P mono-4.0-gac mono-gacпосле этого обновления, обновления и любых исправлений в стиле '--fix-broken install' и 'autoremove', очищали все остальное. Итоговый счет: $ mono --version Mono JIT-компилятор версии 6.0.0.319 (архив с пт 9 августа 16:23:57 UTC 2019) ....
user309383
1

Ладно, если вы достаточно отчаянны, чтобы попробовать что-нибудь, просто стесняющееся того, что кажется, к сожалению, слишком распространенным решением - очистка жесткого диска и переустановка ОС с нуля ...

Мне как-то удалось починить мой корабль. Я не уверен, как и я не уверен, почему, но это последние несколько вещей, которые я пытался, что по некоторым причинам дал положительный результат:

sudo dpkg --remove --force-remove-reinstreq mono-complete
Быстро возвращается в командную строку без сообщений. Это действительно что-то делало? Кто знает. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-devel
Он быстро возвращается в командную строку без сообщений. Это действительно что-то делало? Кто знает. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-gac
Он сказал, что не может удалить его из-за зависимостей

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Он сказал, что не может удалить его из-за зависимостей

Для дерьма и хихиканья я тогда попытался использовать Менеджер пакетов Synaptic, чтобы удалить моно-уровень. Он был помечен как не установленный (см. Выше), но предложил ПОЛНОЕ удаление. Выбрал это и применил. Это произвело большое количество уже знакомых ошибок dpkg и не удалось.

Я попытался использовать его для удаления mono-runtime-common, и он также выдал кучу знакомых теперь ошибок dpkg и потерпел неудачу.

Я тогда побежал,

sudo apt-get purge mono-gac
и по какой-то причине в этот раз это вроде как, сорта сработало. Он удалил кучу вещей, но допустил ошибку при загрузке. Да, по крайней мере, это добилось НЕКОТОРОГО прогресса.

Обновление sudo apt-get Обновление
sudo apt-get
теперь показывало только три элемента, которые я ранее не смог обновить, потому что взорвался Mono. Теперь я был в состоянии успешно обновить их.

Затем я следовал инструкциям по установке Mono для Ubuntu 18.04 по адресу https://www.mono-project.com/download/stable/#download-lin.
Однако на шаге 2 вместо установки mono-devel я установил mono-complete

Он установлен без ошибок и предварительно скомпилировал некоторые вещи. После перезагрузки 2 из 3 моих приложений на базе Mono были восстановлены и запущены. В-третьих, мне просто нужно было сделать переустановку на месте, и она тоже вернулась после перезагрузки.

Я искренне надеюсь, что вам удастся найти какую-то помощь из вышеупомянутой чепухи, а также счастливых праздников, отличного нового года и других подобных вещей. :)

ПРТ
источник
Результаты apt policy mono-complete mono-develпоказывают, что я установил 18.04, а mono работает 18.04, поэтому я подозреваю, что в этом вопросе есть проблема с управлением пакетами. Пакеты mono-complete и mono-devel по-прежнему доступны в репозиториях по умолчанию для 18.10 и 19.04.
Карел
Спасибо за ответ, но я не уверен, смогу ли я попробовать какие-либо из этих предложений после того, что я пробовал прошлой ночью. Я отмечу, что когда я запускался sudo apt remove mono-complete mono-develи sudo apt autoremoveнекоторые пакеты были удалены до того, как начали появляться ошибки. Прошлой ночью я запустил sudo apt remove mono-gac mono-runtime-commonи мы удалили больше пакетов, прежде чем появятся ошибки. Затем, что удивительно, когда я запустил sudo apt autoremoveпосле этого никаких ошибок не было, остальные пакеты были удалены, и я думаю, что моно был успешно и полностью удален.
Мэтью Райт
Тем не менее, переустановка mono является следующим шагом, и я надеюсь, что он пройдет гладко, чтобы я мог снова запустить эти приложения.
Мэтью Райт
Я не уверен, что причиной является один или несколько пакетов, но все, что было удалено до того, как ошибки начали выплескиваться на втором, apt removeдолжно решить проблему. Было бы полезно узнать, какие пакеты были конкретной причиной, чтобы исправить это снова в будущем. Однако я не знаю, насколько легко эта проблема воспроизводима.
Мэтью Райт
Да, переустановка mono прошла успешно, и мои приложения снова работают нормально!
Мэтью Райт
0

У меня была та же проблема на моей коробке linux mint 18.3 Sylvia. Пришлось использовать timeshift для переустановки системы. Все, что я до сих пор делал, это удалил моно ppa из репозитория, и в настоящее время я могу обновлять / обновлять пакеты. Я жду нового моно исправления, чтобы заново активировать репозиторий. Я знаю, что это не решение проблемы, но, по крайней мере, это способ преодолеть проблему, ожидая, пока настоящие гики разбираются с ней.

Эмилио
источник
Спасибо за ответ! Я не слышал о временном сдвиге и не использовал его раньше, но я посмотрю. Я думаю, что смог успешно удалить mono из моей системы прошлой ночью. Это тот инструмент, о котором мы говорим? , Это версия сервера, хотя только из командной строки. Я не сразу вижу, что вы можете использовать его через CLI.
Мэтью Райт
0

У меня была аналогичная проблема. В моём случае mono-devel зависит от mono-roslyn, и почему-то mono-roslyn зависит от mono-devel. Так что удаление пакетов самостоятельно не сработало. Но это сделать:

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

msangel
источник