Điểm:0

Tại sao và cách gỡ lỗi: Các gói sau có các phụ thuộc chưa được đáp ứng, ... nhưng nó sẽ không được cài đặt

lá cờ in
$ sudo apt cài đặt cuda
Đang đọc danh sách gói... Xong
Xây dựng cây phụ thuộc       
Đang đọc thông tin trạng thái... Xong
Không thể cài đặt một số gói. Điều này có thể có nghĩa là bạn có
yêu cầu một tình huống không thể hoặc nếu bạn đang sử dụng không ổn định
phân phối mà một số gói bắt buộc chưa được tạo
hoặc đã được chuyển ra khỏi Incoming.
Thông tin sau đây có thể giúp giải quyết tình huống:

Các gói sau đây có các thuộc tính không được đáp ứng:
 cuda : Tùy thuộc: cuda-11-4 (>= 11.4.2) nhưng nó sẽ không được cài đặt
E: Không thể khắc phục sự cố, bạn đã giữ các gói hàng bị hỏng.

"Nó sẽ không được cài đặt" nghĩa là gì? Tại sao? Tại sao nó không cài đặt các phụ thuộc? Làm thế nào tôi có thể tìm hiểu?

có nghĩa là gì? Những gói bị hỏng? Làm thế nào tôi có thể tìm hiểu?

"tình huống bất khả thi" nghĩa là gì? Làm thế nào tôi có thể biết thêm chi tiết về nó?

liên quan là cái này tin nhắn tương tự trước đó, vẫn chưa được trả lời. Nhưng ở đây, nó cũng in "bạn đã giữ các gói hàng bị hỏng" và "tình huống bất khả thi" này, nên có lẽ nó hơi khác một chút.

Tôi không hỏi cụ thể về điều này cụ thể cuda gói ở đây. Tôi cũng không hỏi về cách giải quyết hay sửa chữa bất cứ điều gì ở đây. tôi chỉ hỏi về cách gỡ lỗihiểu không và xử lý như vậy đúng cách (hoặc apt-get) tin nhắn nói chung, cho bất kỳ gói nào.

lá cờ ru
Nhận xét không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được [chuyển sang trò chuyện](https://chat.stackexchange.com/rooms/130195/discussion-on-question-by-albert-why-and-how-to-debug-the-following-packages- h).
Điểm:1
lá cờ fr

Tôi hoàn toàn đồng ý rằng nhiều tin nhắn apt khó hiểu hơn rất nhiều so với những gì người ta muốn và thường thì chúng thậm chí còn gây hiểu lầm. Tuy nhiên, điều tốt là khi làm việc với apt một thời gian, bạn sẽ bắt gặp các thông báo lặp đi lặp lại và quen với cách khắc phục chúng.

Tùy thuộc vào những gì bạn biết về những gì apt làm đằng sau hậu trường, có thể không dễ hiểu tất cả các chi tiết. Tôi sẽ dùng thử với hy vọng đoán được thông tin cơ bản của bạn và diễn giải chính xác câu hỏi của bạn. Xin hãy chịu đựng nếu tôi hiểu sai :-)

Nói chung, các thông báo mà bạn đề cập đến "sẽ không được cài đặt" hoặc "không thể cài đặt" đề cập đến các phụ thuộc cần thiết cho gói mà bạn đang cài đặt so với các gói đã được cài đặt trên hệ thống của bạn.

Để hiểu điều này, bạn cần biết rằng hầu hết các gói không gửi kèm theo tất cả các tệp mà chúng thực sự cần để chạy. Tùy chỉnh của Linux là sử dụng phần mềm nguồn mở ở bất cứ đâu bạn có thể, vì vậy mỗi gói sử dụng rất nhiều thư viện. Đó là các đốm màu nhị phân chứa đầy các chức năng mà một tệp thực thi có thể sử dụng nhanh chóng. Rắc rối là một mặt, dự án nguồn mở đó luôn thay đổi và nhận được các bản cập nhật rất thường xuyên, mặt khác, các chương trình được mã hóa để hoạt động với một phiên bản cụ thể, tức là phiên bản mà nhà phát triển đã sử dụng tại thời điểm biên dịch. Vì vậy, bạn cần chính xác phiên bản đó hoặc phiên bản tương thích. Sẽ thật dễ dàng nếu mọi nhà phát triển, ví dụ: của CUDA sẽ gửi tất cả các thư viện mà họ đã sử dụng trong quá trình biên dịch.Chúng không phải vì hầu hết là các thư viện tiêu chuẩn rất có thể được sử dụng bởi các chương trình khác và điều đó có nghĩa là mỗi chương trình sẽ rất lớn để tải xuống và lưu trữ tất cả dữ liệu trùng lặp này (nhân tiện, Docker hoặc AppImage chính xác đang làm điều đó để đưa ra giải pháp cho vấn đề này). Do sự cố này, bạn thường có nhiều phiên bản thư viện hệ thống trên hệ thống của mình. Tuy nhiên, nó trở nên phức tạp khi các thư viện không tương thích hoặc xung đột với nhau, ví dụ: bởi vì mỗi lần chỉ có một lib có thể truy cập tài nguyên hệ thống. Trong trường hợp đó, bạn phải tìm phiên bản thư viện tương thích với tất cả các gói đã cài đặt đang sử dụng chúng.

Đó là những gì apt đang cố gắng thực hiện cho mọi cài đặt bạn thực hiện. Nó không phải là AI nên có những giới hạn đối với những gì nó có thể làm. Thông báo về tình huống không thể xảy ra là bạn rõ ràng có xung đột khi cần có hai phiên bản thư viện hoàn toàn không tương thích cùng một lúc. Thông thường, luận văn không phải là thư viện được sử dụng trực tiếp, mà là thư viện mà thư viện cần chạy. Có cả một hệ thống phân cấp phụ thuộc. Rất hữu ích để truy cập github cho bất kỳ phần mềm phù hợp nào và làm theo hướng dẫn biên dịch. Biên dịch trong Linux thực sự dễ dàng. Nhưng hầu hết thời gian nó là một cơn ác mộng để có được tất cả các phụ thuộc được định vị và cài đặt. Và nếu bạn không sử dụng các phiên bản mới nhất nhưng cũ hơn, bạn không thể sử dụng các phần phụ thuộc mới nhất nhưng bạn cũng cần tìm ra phiên bản mã nguồn nào bạn cần cho từng phần phụ thuộc. Làm điều đó mang lại cảm giác rất tốt về những gì apt đang làm việc. Do đó, thông báo "nó sẽ không được cài đặt" có thể do thư viện bắt buộc có sẵn và sẽ hoạt động tốt, nhưng bất kỳ phần phụ thuộc nào của chúng đều có xung đột ở đâu đó.

Bây giờ, bạn có thể làm gì? Bạn có thể giải quyết nó tốt hơn apt khi bạn theo dõi mọi xung đột và sau đó tìm ra ứng dụng nào khác bị ảnh hưởng và sau đó quyết định xem ứng dụng nào quan trọng và ứng dụng nào không.Ví dụ: bạn có thể phát hiện ra rằng trình chặn cài đặt CUDA của bạn là một công cụ nhắn tin mặc định mà bạn không sử dụng. Giải pháp dễ dàng là gỡ cài đặt cái này và tất cả các lib của nó (khi chúng không được sử dụng ở bất kỳ nơi nào khác, apt sẽ làm điều đó). Sau đó apt có thể cài đặt nó. Thật không may, tôi không biết về bất kỳ công cụ nào cho phép bạn duyệt các cây phụ thuộc đó theo cách để dễ dàng hiểu và theo dõi các kết nối đó.

Tôi cũng gặp những trường hợp này và điều đầu tiên là thử Aptitude. Nó không được cài đặt theo mặc định:

  Sudo cài đặt năng khiếu

Aptitude về cơ bản giống với apt, nhưng nó lớn hơn và có nhiều logic hơn để xử lý các trường hợp này. Trong trường hợp những tin nhắn đó, aptitude sẽ cung cấp cho bạn các tùy chọn. Một số có thể là không có thật, chỉ cần nói "không" và bạn sẽ nhận được một số khác. Ví dụ, nó sẽ đề xuất "hạ cấp" một gói. Điều đó có nghĩa là cài đặt một phiên bản cũ hơn. Nó sẽ đề xuất "xóa" một gói hoặc cài đặt các gói bổ sung như một giải pháp thay thế. Vấn đề là nó không cho bạn biết hậu quả là gì, tức là nó không cho bạn biết "nếu bạn hạ cấp ứng dụng này, ứng dụng XYZ có thể không hoạt động bình thường nữa". Nó chỉ cung cấp cho bạn các tùy chọn thoát khỏi tình thế tiến thoái lưỡng nan mà "apt" không thể giải quyết.

Vì vậy, hãy xem xét các đề xuất từ ​​Aptitude, bạn nên xem gói nào bật lên và liệu bạn có thể tự tạo kết nối hay không. Bạn có thể lưu ý rằng có một công cụ liên quan đến việc bạn đã cài đặt gần đây. Nó có thể cung cấp cho bạn một gợi ý cho bất cứ điều gì bạn không sử dụng. Gỡ cài đặt nó và thử lại. Ngoài ra, hãy khởi động một máy ảo với Ubuntu trống và thử cài đặt nội dung của bạn ở đó có thể rất hữu ích, bởi vì bạn xem liệu bản phát hành Ubuntu có xung đột hay không. Đã đến lúc họ đến những nơi như thế này và đăng một bài càng cụ thể càng tốt.

Hy vọng rằng tôi đã không làm mất bạn cũng như không làm bạn chán và nó nhắm mục tiêu câu hỏi của bạn một chút.

Bây giờ apt nằm ở hậu trường khá phức tạp, bởi vì nó được viết bằng ngôn ngữ cấp thấp và do đó, khá khó để đưa vào các thuật toán phát hiện và giải quyết phức tạp hoặc nâng cao. Nó được tạo ra để trở thành một công cụ nhỏ gọn và mạnh mẽ chạy trên mọi hệ thống (thậm chí là tối thiểu). Và đó là nó.

lá cờ in
Cảm ơn, điều đó đã rất hữu ích để giải thích phần "tại sao" trong câu hỏi của tôi. Vì vậy, có một số xung đột. Nhưng bạn cũng nói, không thực sự có thể dễ dàng nhìn thấy mâu thuẫn thực sự là gì? Làm thế nào mà có thể được? Hầu hết mọi công cụ và trình quản lý gói khác mà tôi đã sử dụng sẽ luôn in xung đột ở đó, ví dụ:. nói rằng lib-v1 và lib-v2 không thể được cài đặt cùng một lúc, nhưng được yêu cầu bởi cây dep này. Tôi khá chắc chắn rằng Gentoo Portage xuất hiện sẽ in sth như vậy.
CatMan avatar
lá cờ fr
Chà, tôi đồng ý, nghe có vẻ hơi đen trắng. Thường thì tôi nên nhấn mạnh "dễ dàng", chẳng hạn như dễ dàng từ quan điểm của người dùng. Nhà phát triển tìm hiểu mục đích và chức năng của gói và có thể đánh giá tác động của thay đổi dễ dàng hơn. Những người không phải là nhà phát triển không thể, nhưng họ cũng nên có cách cài đặt nội dung. Làm cho những thứ phức tạp về mặt kỹ thuật trở nên "dễ dàng" đôi khi cần nhiều nỗ lực hơn là thực hiện chính tính năng cốt lõi. Trong Nguồn mở, tôi nghĩ đó là một điều tự gây ra về mặt văn hóa: mọi người biết ai đã phát minh ra một tính năng nhưng không ai quan tâm ai đã làm cho nó dễ sử dụng. Dù sao, hy vọng bạn có thể giải quyết vấn đề của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.