Không thể xác định vị trí gói trong khi cố gắng cài đặt gói với APT


209

Khi tôi cố gắng cài đặt bất kỳ gói nào thông qua dòng lệnh, tôi gặp lỗi.

$ sudo apt-get install <package>
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package <package>

có ai có thể giúp tôi trong việc này không?


5
Điều này đang xuất hiện gần đây vì Máy chủ 18.04 có vũ trụ, đa vũ trụ và backport bị tắt theo mặc định.
wjandrea

1
Có vấn đề launchpad để cải thiện gợi ý hữu ích được đưa ra khi nhập lệnh không được cài đặt không? (Chỉ cần gợi ý rằng nó nằm trong kho không được kích hoạt sẽ rất hữu ích)
Thorbjørn Ravn Andersen

Đây là thứ tôi đã đạt được rất nhiều khi tôi xây dựng các container, thường là với cả Docker và Singularity. Trong các thùng chứa Singularity, bạn có các tùy chọn BootStrap khác nhau, trong số chúng có debootstrapdocker. Vì một số lý do, nếu tôi sử dụng debootstrapđể bắt đầu với một hình ảnh Ubuntu cơ bản (ví dụ xenial), tôi đã gặp lỗi này trong đó một số gói không thể tìm thấy apt-get. Giải pháp cuối cùng là chuyển sang dockerBootStrap, sau đó nó hoạt động trở lại.
dùng5359531

Điều này đang ngăn cản sự tiến bộ của tôi trong vài ngày qua và đó không phải là do vũ trụ, đa vũ trụ hoặc backport bị vô hiệu hóa, như wjandrea gợi ý.
Jackalope

@Jackalope Sau đó, có thể tên gói không chính xác hoặc bạn cần chạy sudo apt update. Sử dụng apt-cache searchtheo sau bởi một thuật ngữ tìm kiếm để tìm kiếm tên gói chính xác.
mchid

Câu trả lời:


155

Đầu tiên, kiểm tra xem gói thực sự tồn tại:

  1. Truy cập gói.ubfox.com với trình duyệt web.
  2. Cuộn xuống "Tìm kiếm thư mục gói"
  3. Nhập gói mà bạn đang cố cài đặt vào trường "Từ khóa".

    Bật "Chỉ hiển thị kết quả khớp chính xác:"

    Thay đổi "Phân phối" thành phiên bản Ubuntu bạn đang sử dụng.

    nhập mô tả hình ảnh ở đây

Nếu không có kết quả , gói bạn đang tìm kiếm không tồn tại và các bước tiếp theo sẽ không hoạt động. Nó có thể yêu cầu PPA của bên thứ ba hoặc phương pháp cài đặt thay thế.

Nếu kết quả được tìm thấy , gói tồn tại và bạn có thể tiếp tục với các bước sau:

  1. Mở nguồn phần mềm (hoặc phần mềm & cập nhật trong 13.04+) bằng cách tìm kiếm nó trong Dash.
  2. Mở tab "Phần mềm Ubuntu".
  3. Đảm bảo rằng 4 hộp kiểm đầu tiên trên tab này được bật:

    nhập mô tả hình ảnh ở đây

  4. Cập nhật danh sách gói, sau đó kiểm tra với các lệnh sau:

    sudo apt-get cập nhật
    sudo apt-get cài đặt <TEST_PACKAGE>
    

44
Tôi thấy rằng một đơn giản sudo apt-get updatelà đủ để sửa nó cho tôi. Số dặm của bạn có thể thay đổi.
Edward Falk

1
sudo apt-get updatecũng hoạt động với tôi trên Ubuntu trên Windows 10 (điều này rất quan trọng vì UI được tham chiếu trong nửa sau của câu trả lời này không tồn tại trên hệ thống đó).
James

1
phần mềm và cập nhật ảnh chụp màn hình đã cứu tôi !!
Kalpesh Soni

Đừng quên tìm kiếm launchpad.net là tốt!
Jonathan

1
Tôi đang chạy máy chủ của mình từ trình bao và không thể mở GUI. Có thể giải quyết điều này chỉ với dòng lệnh?
Ulysses Alves

81

Có rất nhiều câu hỏi về chủ đề này. Ở đây tôi cung cấp một câu trả lời cơ bản / chung chung.

Khi apt-get installkhông thể tìm thấy gói, gói bạn muốn cài đặt không thể tìm thấy trong kho mà bạn đã thêm (những gói trong /etc/apt/sources.listvà dưới /etc/apt/sources.list.d/).

Quy trình (chung) sau đây giúp giải quyết điều này:

  1. Hãy chắc chắn rằng bạn đã kích hoạt kho Ubuntu:

    Để kích hoạt tất cả các kho ( main, universe, restricted, multiverse), sử dụng các lệnh sau:

    sudo add-apt-repository main
    sudo add-apt-repository universe
    sudo add-apt-repository restricted
    sudo add-apt-repository multiverse
    

    Truy cập Trợ giúp để biết thêm thông tin.

  2. Để tìm PPA cho nhiều gói hơn:

    • Chuyển đến Tìm kiếm gói Ubuntu . (Đã giải thích trong câu trả lời này )
    • Đối với các kho lưu trữ bên ngoài, hãy truy cập Cập nhật Ubuntu và tìm kiếm theo mànnút. hoặc Truy cập PPA .
    • Hoặc Tìm kiếm trong Launchpad ppa
    • Tìm ppa thích hợp theo phiên bản phát hành Ubuntu của bạn.
  3. Thêm PPA (theo dòng lệnh) :

    Sử dụng lệnh này:

    sudo add-apt-repository ppa:<repository-name>
    

    Ghé thăm cộng đồng Ubuntu để biết thêm thông tin.

  4. Đừng quên cập nhật (hãy chú ý đến những thay đổi của bạn):

    Điều cần thiết là chạy lệnh này sau khi thay đổi bất kỳ kho lưu trữ nào:

    sudo apt-get update
    

    Chọn máy chủ tải xuống tốt nhất có thể giúp tăng tốc cập nhật.

  5. Cuối cùng cài đặt gói:

    sudo apt-get install <package>
    

    Tham khảo Quản lý gói theo dòng lệnh .

    Bổ sung / Mẹo : bạn có thể tìm thấy tên gói chính xác (tức là tên trong kho lưu trữ) bằng cách sử dụng apt-cache search <package-name>.



Lưu ý : Nếu gói không có sẵn trên kho lưu trữ, thì bạn phải đợi cho đến khi có sẵn (trong trường hợp phiên bản mới / cập nhật) hoặc sử dụng các quy trình cài đặt khác ngoài việc apt-getbiên dịch từ nguồn, tải xuống tệp nhị phân thực thi, v.v.


3
Nó cũng có thể là người dùng đang tìm kiếm libname, khi nó libname2ở trong Debian / Ubuntu.
saiarcot895

3
Đầu tiên, là tùy thuộc vào gói và bạn đang thực hiện một số giả định. Đầu tiên, bạn cho rằng OP đã xác định đúng tên gói, như được chỉ ra bởi saiarcot895. Thứ hai bạn đang giả sử các gói có sẵn. Nói chung, tốt nhất là trước tiên xác định vấn đề. Sau đó, nếu có thể cài đặt từ các kho lưu trữ. Trừ khi có một nhu cầu cụ thể, ppa là một lựa chọn thứ hai. Nếu gói không nằm trong kho hoặc ppa, nó có thể cần được biên dịch từ nguồn. Bạn thực sự không có đủ thông tin.
Panther

@ saiarcot895 @ bodhi.zazen: Câu trả lời sửa đổi với việc cung cấp apt-cache searchđể tìm tên gói chính xác từ kho lưu trữ.
Pandya

người đàn ông trả lời tuyệt vời, bạn là người nên chiến thắng
sdream

9

xbmc chỉ có sẵn trong kho vũ trụ , chỉ kể từ Ubuntu 12.04 (chính xác). Nếu bạn có bản phát hành Ubuntu cũ hơn, bạn sẽ cần nâng cấp hoặc nhận xbmc từ nơi khác.

Nếu bạn có Ubuntu 12.04, hãy đảm bảo rằng bạn đã bật kho vũ trụ . Bạn có thể xem những kho lưu trữ nào bạn đã kích hoạt trong tệp /etc/apt/sources.list(và trong các tệp trong thư mục /etc/apt/sources.list.d). Kiểm tra xem tệp này có chứa một dòng như

deb http://al.archive.ubuntu.com/ubuntu/ precise universe

hoặc là

deb http://zw.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse

Nếu bạn chỉ tìm thấy một dòng như

deb http://mn.archive.ubuntu.com/ubuntu/ precise main restricted

và không có dòng nào universe, thêm universevào cuối dòng đó hoặc một dòng riêng với precise universe, như minh họa ở trên.

Nếu bạn cần sửa đổi /etc/apt/sources.list, hãy chạy sudo apt-get updatesau đó, sau đó thử cài đặt lại. Nếu gói vẫn không được tìm thấy, đăng nội dung đầy đủ /etc/apt/sources.listvà đầu ra của sudo apt-get update.


@EliahKagan Tôi không nghĩ câu trả lời của mình có thể được diễn giải theo cách đó, tôi đã cố gắng làm rõ. Tại sao không alzw? (Tôi cố gắng chọn một chiếc gương thích hợp cho OP khi họ đưa ra manh mối, nhưng ở đây tôi không có ý kiến ​​gì.)
Gilles

5

Tôi mới sử dụng Ubuntu nhưng tôi đang viết điều này khi tôi phát hiện ra một số giải pháp để tránh lỗi "Không thể định vị gói" này. Có ba trường hợp điều này có thể xảy ra với một cú sốc.

  1. Sau khi cài đặt Ubuntu nếu bạn không cập nhật, theo sau là Nâng cấp, Điều này có thể xảy ra.
  2. Nếu có nhiều cập nhật phần mềm sẽ xảy ra trong tương lai, hãy đảm bảo tất cả các cập nhật bảo mật / cập nhật được khuyến nghị đều bị tắt bằng cách nhập " Trình quản lý cập nhật " khi nhấn Alt+ F2.
  3. Sự cố Một và Hai có thể xảy ra ngay cả sau khi cập nhật hoặc xóa tất cả các cập nhật. Nhưng giải pháp vĩnh cửu là: Thử điểm 1 & 2, sau đó gõ sudo apt-get killmanager, nếu không hoạt động, không có vấn đề gì tiến hành gõ sudo apt-get update, sau đó gõ sudo apt-get upgrade.

Bây giờ bạn sẽ có thể cài đặt bất kỳ phần mềm nào thông qua Terminal.


Nếu bạn vẫn gặp lỗi trên dòng "sudo apt-get update", hãy thử sử dụng "sudo apt-get nâng cấp". Điều này sẽ làm việc .. Các bạn !! Vì Linux rất nhạy cảm với trường hợp, vui lòng đảm bảo bạn sử dụng tất cả các lệnh bằng các chữ cái nhỏ hơn như "sudo" thay vì "Sudo"
Shaan Sundar

5

Trong trường hợp cố gắng cài đặt một tập tin:

sudo apt-get install libstdc++.so.6

thay vì một gói Bạn nhận được thông báo lỗi:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

bởi vì bạn đã cố cài đặt một tệp libstdc++.so.6mà bạn không thể cài đặt, vì nó nằm trong gói debian.

Bạn có thể sử dụng apt-fileđể tìm kiếm gói chứa tệp đó. Để cài đặt nó, gõ:

sudo apt-get install apt-file

Sau đó, bạn phải cập nhật chỉ mục.

sudo apt-file update

Sau đó, bạn có thể tìm kiếm gói chứa tệp libstdc++.so.6:

sudo apt-file find libstdc++.so.6

Sau đó, bạn tìm thấy rất nhiều gói có chứa các tập tin tìm kiếm. Trong ví dụ này tôi chỉ dán một kết quả tìm kiếm:

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6

Sau đó, bạn có thể cài đặt gói cần thiết libstdc++6:

sudo apt-get install libstdc++6
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.