Tuy nhiên, nhưng được gọi bởi một gói khác.


24

Không có gì lạ khi người dùng Ubuntu (hoặc bản phân phối khác có quản lý gói apt) gặp phải lỗi:

user@box ~ $ sudo apt-get install x
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package x is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'x' has no installation candidate

Đã có một số câu hỏi được hỏi liên quan đến vấn đề này trên các trang web StackExchange khác nhau, ví dụ openvpn trên AskUbfox, nhưng đây thường là về cách lấy gói cụ thể mặc dù có lỗi.

Tôi đã tìm thấy không có gói nào không được tìm thấy một cách đơn giản (mặc dù không phải lúc nào cũng dễ dàng) bằng cách xác định xem nó có được phân phối hay không và dưới kho lưu trữ nào, và đảm bảo rằng kho lưu trữ nằm trong apt.source, hoặc tệ nhất là tải xuống tồi tệ nhất .deb hoặc nguồn để biên dịch.

Vì vậy, câu hỏi của tôi tổng quát hơn, và mặc dù tôi đoán nó có một câu trả lời khá đơn giản và do đó không thú vị, tôi không thể nghĩ làm thế nào để tìm thấy nó bằng các phương pháp công cụ tìm kiếm thông thường, vì vậy tôi chuyển sang AskUbfox: Tôi có thể có một lệnh hoặc tùy chọn nào không sử dụng để xác định gói nào / gói nào tham chiếu gói còn thiếu?

Câu trả lời:


13

Bạn có thể tìm kiếm gói với apt-cache:

apt-cache search x

Điều này sẽ xuất ra tất cả các gói theo cách này hay cách khác tạo tham chiếu đến x.


2
Chà, nghe có vẻ hợp lý ... ngoại trừ nó không hiệu quả với tôi. apt-get install libtinfo6báo cáo không có sẵn nhưng được gọi bằng gói khác, nhưng apt-cache search libtinfo6không mang lại kết quả. Có một số cách khác để làm một điều tương tự?
Erhannis

@Erhannis 'terminfo' có mang lại điều gì không? Tôi nghĩ đôi khi lỗi này xuất hiện khi một gói được đổi tên một cách chậm chạp.
Arlo James Barnes

Tôi không chắc. Tôi đã nâng cấp lên phiên bản Debian tiếp theo và gói đó dường như không còn đưa ra lỗi đó nữa. Tuy nhiên, tôi sẽ thử terminfolần sau khi nó xảy ra; nó đã xảy ra trước đây và nó có thể sẽ xảy ra lần nữa
Erhannis

23

Đôi khi điều này xảy ra vì APT không biết gì về những gì bạn đang nói, nhưng điều đó có thể được giải quyết bằng cách chạy:

sudo apt-get update

Sau khi chạy nó, thông thường lỗi sẽ biến mất vì aptapt-getbiết cách làm những gì tôi yêu cầu bây giờ.


4
Bạn có thể có nghĩa là apt-get updatetheo sau bởi apt-get upgrade -y-ybỏ qua xác nhận người dùng. Nó không có ý nghĩa khi sử dụng nó với apt-get update. Mặc dù vậy, điều này không trả lời câu hỏi nào cả.

4
@CelticWar Warrior: Về nguyên tắc, tôi đồng ý với câu trả lời này vì việc cập nhật thông tin kho lưu trữ gói có thể giải quyết vấn đề này nếu một người cố gắng cài đặt gói từ PPA được thêm gần đây và quên chạy apt-get update.
David Foerster

7
@ user589808 Tôi không nghĩ đó là lời khuyên rất tốt. Nâng cấp apt-get là không cần thiết, và đánh một cách mù quáng vào mọi thứ có thể phá vỡ nhiều thứ hơn là sửa chữa. Vì vậy, wayne đã đúng trong cú pháp hi.
điên rồ

1
apt-get updatetrả lời câu hỏi AB (gói tồn tại trong repo nhưng apt-get installapt-cachekhông biết về nó.)
dcorking

1
Đối với những người đến sau, các ý kiến ​​trên thảo luận về một phiên bản cũ hơn của câu trả lời này. Câu trả lời hiện tại sudo apt-get updatekhông có tranh cãi và là giải pháp chính xác cho tôi.
Daryn
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.