Mono bị hỏng sau khi cố gắng nâng cấp, không thể sử dụng apt


10

Tôi đã có mono-completemono-develcài đặt trên Ubuntu Server 18.10 của tôi vài tháng nay để chạy một số ứng dụng phụ thuộc vào nó. Tôi đang sử dụng Mono 5.18.0.225. Trước khi phá vỡ mọi thứ, tôi đã làm một tiêu chuẩn sudo apt update, thấy nhiều gói đơn trong danh sách để nâng cấp, sau đó đã làm một sudo apt upgrade. Nó đã đi bình thường cho hầu hết các cài đặt và sau đó thiết bị đầu cuối tiếp tục phun ra lỗi và lỗi và lỗi. Các lỗi gần như vô tận sẽ được in đi in lại trong vài giây bất kể tôi đã cố gắng làm gì:

  • nâng cấp sudo apt
  • sudo apt - tiền cài đặt bị hỏng
  • sudo apt loại bỏ mono-hoàn thành mono-devel
  • sudo apt autoremove

Dường như không thể nâng cấp hoặc gỡ bỏ. Nếu không thể nâng cấp, tôi đã cố xóa và thử cài đặt lại nhưng cũng không xóa được.

Trong lỗi, nó đề cập đến việc không thể tìm thấy gdb hoặc lldb. Sau đó, tôi đã cố gắng tự tạo và cài đặt gdb vì tôi không thể sử dụng apt ... cố gắng làm như vậy sẽ yêu cầu bạn chạy sudo apt --fix-broken installcác lỗi tương tự. Cài đặt gdb-8.2 thành công. Các lỗi được in ra thay đổi một chút và chứa các tham chiếu đến gdb (vì hiện tại nó đã được cài đặt) nhưng vẫn chưa xuất hiện ở bất cứ đâu.

  • Làm thế nào đơn điệu phá vỡ ở nơi đầu tiên?
  • Tại sao cố gắng loại bỏ các gói sản xuất lỗi?
  • Cách hành động tốt nhất để khắc phục tình trạng này là gì? Tôi không muốn phải cài đặt lại Ubuntu Server và thiết lập mọi thứ sao lưu.

Đối với những gì đang được in ra trong lỗi (trước khi cài đặt 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

Câu trả lời:


6

Tôi không chắc chắn 100% rằng các lệnh theo thứ tự này sẽ giải quyết vấn đề mọi lúc nhưng đây là điều đã xảy ra và tôi đã có thể cài đặt lại thành công Mono để có được các ứng dụng phụ thuộc vào nó chạy lại.

  1. sudo apt remove mono-complete mono-devel

    • Một số gói nên được gỡ bỏ (đạt khoảng ~ 15-25%) trước khi lỗi bắt đầu phun ra và bạn không thể chạy lại gói này.
  2. sudo apt autoremove

    • Một số gói nên được gỡ bỏ trước khi lỗi bắt đầu phun ra và bạn không thể chạy lại gói này.
  3. sudo apt remove mono-gac mono-runtime-common
    • Một số gói nên được gỡ bỏ trước khi lỗi bắt đầu phun ra và bạn không thể chạy lại gói này.
  4. sudo apt autoremove
    • Phần còn lại của các gói Mono sẽ loại bỏ hoàn toàn thời gian này mà không xảy ra lỗi.
    • Phải có một số gói nhất định là nguyên nhân gây ra lỗi trong các lệnh trước đó và khi bị xóa, lỗi sẽ dừng và phần còn lại có thể được gỡ bỏ mà không gặp sự cố.
  5. Cài đặt lại Mono.

1
Nhưng tôi không thể chạy apt removevì nó nói dpkg bị gián đoạn và tôi phải chạy thủ công sudo dpkg --configure -a, nhưng lệnh này chỉ gây ra các lỗi trên.
Aaron Franke

rất quan trọng đối với tôi (trên 18.04.1-Ubuntu) sudo dpkg --force-all -P ca-certificates-monovà vì sudo apt --fix-broken installbất kỳ công thức 'sửa chữa' nào khác đều không hoạt động, tôi đã loại bỏ mọi thứ đơn điệu theo kiểu trên. Cụ thể, những thứ như sudo dpkg --force-all -P mono-common mono-develsudo dpkg --force-all -P mono-4.0-gac mono-gacsau bản cập nhật đó, nâng cấp và mọi sửa lỗi theo kiểu '- cài đặt bị hỏng' và 'autoremove' đã làm sạch phần còn lại. Điểm cuối cùng: $ mono --version Trình biên dịch Mono JIT phiên bản 6.0.0.319 (tarball Thứ Sáu ngày 9 tháng 8 16:23:57 UTC 2019) ....
user309383

1

Được rồi, nếu bạn đủ tuyệt vọng để thử bất cứ điều gì chỉ ngại những gì dường như, thật đáng buồn, một độ phân giải quá phổ biến - xóa sạch ổ cứng và cài đặt lại hệ điều hành từ đầu ...

Tôi bằng cách nào đó quản lý để sửa chữa tàu của tôi. Tôi không chắc chắn làm thế nào và tôi không chắc tại sao, nhưng đây là vài điều cuối cùng tôi đã thử vì lý do nào đó đã tạo ra một kết quả tích cực:

sudo dpkg --remove --force-remove-rebstreq mono-Complete
Nó nhanh chóng trở lại dấu nhắc lệnh mà không có tin nhắn. Nó thực sự đã làm gì? Ai biết. ¯ \ _ (ツ) _ /

sudo dpkg --remove --force-remove-rebstreq mono-devel
Nó nhanh chóng quay trở lại dấu nhắc lệnh mà không có tin nhắn. Nó thực sự đã làm gì? Ai biết. ¯ \ _ (ツ) _ /

sudo dpkg --remove --force-remove-rebstreq mono-gac
Nó nói rằng nó không thể loại bỏ nó do phụ thuộc

sudo dpkg --remove --force-remove-rebstreq mono-runtime-common
Nó nói rằng nó không thể loại bỏ nó do phụ thuộc

Đối với shits và cười khúc khích, sau đó tôi đã thử sử dụng Synaptic Gói Manager để loại bỏ đơn âm. Nó được đánh dấu là chưa được cài đặt (xem ở trên) nhưng được cung cấp loại bỏ HOÀN THÀNH. Chọn cái đó và áp dụng. Nó tạo ra một khối lượng lỗi dpkg quen thuộc và không thành công.

Tôi đã thử sử dụng nó để loại bỏ mono-runtime-common và nó cũng tạo ra một lỗi dpkg quen thuộc và không thành công.

Sau đó tôi chạy

sudo apt-get purge mono-gac
và vì một số lý do, thời gian NÀY nó hơi ', sorta' hoạt động. Nó gỡ cài đặt một đống đồ đạc, nhưng bị lỗi ở một khối mông. Yay, ít nhất nó đã tạo ra một số loại tiến bộ.

sudo apt-get update
sudo apt-get nâng cấp
bây giờ chỉ hiển thị ba mục mà trước đây tôi không thể nâng cấp vì Mono đã nổ tung. Bây giờ tôi đã có thể nâng cấp thành công chúng.

Sau đó, tôi đã làm theo các hướng dẫn cài đặt Mono cho ubfox 18.04 tại https://www.mono-project.com/doad/urdy/#doad-lin
Tuy nhiên, ở Bước 2, thay vì cài đặt mono-devel tôi đã cài đặt mono-perfect

Nó được cài đặt không có lỗi và biên dịch trước một số thứ. Sau khi khởi động lại, 2 trong số 3 ứng dụng dựa trên Mono của tôi đã được sao lưu và chạy. Lần thứ ba tôi chỉ phải thực hiện cài đặt lại tại chỗ và nó cũng quay trở lại sau khi khởi động lại.

Tôi chân thành hy vọng bạn có thể quản lý để thu thập một số trợ giúp từ những điều vô nghĩa ở trên và đây là những ngày lễ vui vẻ, một năm mới tuyệt vời và những thứ khác. :)


Kết quả apt policy mono-complete mono-develcho thấy tôi đã cài đặt cả vào ngày 18.04 và mono đang hoạt động vào ngày 18.04, vì vậy tôi nghi ngờ rằng có một vấn đề quản lý gói trong câu hỏi. các gói đơn hoàn chỉnh và đơn phát triển vẫn có sẵn trong kho mặc định cho 18.10 và 19.04.
karel

Cảm ơn bạn đã phản hồi nhưng tôi không chắc liệu tôi có thể thử bất kỳ đề xuất nào sau những gì tôi đã thử tối qua không. Tôi sẽ lưu ý rằng khi tôi ban đầu chạy sudo apt remove mono-complete mono-develsudo apt autoremove, một số gói đã bị xóa trước khi lỗi bắt đầu phun ra. Đêm qua tôi đã chạy sudo apt remove mono-gac mono-runtime-commonvà nhiều gói hơn chúng tôi đã xóa trước khi xảy ra lỗi. Sau đó, đáng ngạc nhiên, khi tôi chạy sudo apt autoremovesau đó không có lỗi, các gói còn lại đã bị xóa và tôi nghĩ rằng mono đã được gỡ bỏ thành công và hoàn toàn.
Matthew Wright

Tuy nhiên, cài đặt lại mono là bước tiếp theo và tôi hy vọng nó diễn ra suôn sẻ để tôi có thể khiến các ứng dụng đó chạy lại.
Matthew Wright

Tôi không chắc liệu đó có phải là một hoặc một số gói là nguyên nhân hay không, nhưng bất cứ điều gì đã được gỡ bỏ trước khi các lỗi bắt đầu xuất hiện vào lần thứ hai apt removeđều phải khắc phục vấn đề. Sẽ rất hữu ích khi biết gói nào là nguyên nhân cụ thể để khắc phục lại trong tương lai. Tuy nhiên, tôi không biết vấn đề này có thể tái tạo dễ dàng như thế nào.
Matthew Wright

Yup, cài đặt lại mono đã thành công và các ứng dụng của tôi đang chạy bình thường trở lại!
Matthew Wright

0

Tôi đã có vấn đề tương tự trên hộp bạc hà linux 18.3 Sylvia của tôi. Phải sử dụng timeshift để cài đặt lại hệ thống. Tất cả những gì tôi đã làm cho đến nay là loại bỏ ppa mono khỏi kho lưu trữ và hiện tại, tôi có thể cập nhật / nâng cấp các gói. Tôi chờ sửa lỗi mono mới để kích hoạt lại kho lưu trữ. Tôi biết nó không phải là một sửa chữa cho vấn đề, nhưng, ít nhất, nó là một cách để khắc phục vấn đề chờ đợi các chuyên viên máy tính thực sự sắp xếp nó.


Cảm ơn vì sự trả lời! Tôi đã không nghe nói hoặc sử dụng timeshift trước đây nhưng tôi sẽ xem xét. Tôi nghĩ rằng tôi đã có thể gỡ cài đặt thành công mono khỏi hệ thống của tôi đêm qua. Đây có phải là công cụ mà chúng tôi đang đề cập đến? . Đây là phiên bản máy chủ mặc dù chỉ có dòng lệnh. Tôi không thấy ngay rằng bạn có thể sử dụng nó thông qua CLI.
Matthew Wright

0

Tôi đã có một vấn đề tương tự. Trong trường hợp của tôi, mono-devel phụ thuộc vào mono-roslyn và vì một lý do nào đó mono-roslyn phụ thuộc vào mono-devel. Vì vậy, loại bỏ các gói độc lập không làm việc. Nhưng điều này làm:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.