Làm thế nào để tôi tìm ra kho lưu trữ mà một gói đến từ đâu?


147

Có một phương thức hoặc lệnh nào có thể cho biết gói nào đến từ kho lưu trữ nào không?


1
Điều này là mơ hồ. Ý bạn là: kho lưu trữ được kích hoạt hiện tại cung cấp một gói với tên đã cho hoặc: kho lưu trữ nào đã được sử dụng để cài đặt gói có tên đó hiện đang được cài đặt? (Cả hai đều hữu ích. Tôi đang tìm kiếm cái sau, không phải cái trước.)
Rebier Post

Câu trả lời:


112

Các lệnh cần thiết:

  • dpkg -s <package>- cho phép bạn tìm phiên bản mà bạn đã cài đặt. ( nguồn )
  • apt-cache showpkg <package>- sẽ hiển thị danh sách các Phiên bản của gói có sẵn. Đối với mỗi phiên bản, nguồn của gói, dưới dạng tên tệp chỉ mục, sẽ được cung cấp.

Nếu bạn muốn tìm nguồn của gói hiện đang được cài đặt, bạn sẽ cần đầu ra của dpkg -s <package>. Mặt khác, bạn có thể chỉ cần nhìn vào đầu ra phiên bản mới nhất bằng cách apt-cache showpkg <package>.

Thí dụ:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Từ lệnh đầu tiên, tôi có thể thấy phiên bản Liferea 1.6.2-1ubfox6 đã được cài đặt. Từ lệnh thứ hai, tôi có thể thấy rằng phiên bản đó được liệt kê trong /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Nếu không có quá nhiều nỗ lực, tôi có thể suy luận rằng dòng nguồn chứa archive.ubuntu.com, ubuntu, lucid, và main.

Và, chắc chắn, của tôi /etc/apt/sources.listchứa dòng sau đây.

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

mac, cảm ơn câu trả lời chi tiết của bạn! Thật không may, nó không giúp tôi với vấn đề ban đầu của tôi về một vấn đề phụ thuộc chưa được đáp ứng :-( Tôi đang cố gắng cài đặt libqt4-opengl và nó nói: Các gói sau có phụ thuộc chưa được đáp ứng: libqt4-opengl: Depends: libqtcore4 (= 4: 4.6.2-0ubfox5.1) nhưng 4: 4.7.0 ~ beta1 + git20100522-0ubfox1 ~ lucid1 ~ ppa1 + appmenu20100624 sẽ được cài đặt Tùy thuộc: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) nhưng 4: 4.7. 0 ~ beta1 + git20100522-0ubfox1 ~ lucid1 ~ ppa1 + appmenu20100624 sẽ được cài đặt
dfme

Thật khó để nhận ra vấn đề là gì. Bạn nên mở một câu hỏi mới để bạn có thể cung cấp chi tiết đầy đủ. Nếu bạn làm như vậy, để lại một liên kết trong một bình luận. :-)
Michael Crenshaw

4
apt-cache policy <package name>(từ: superuser.com/a/236605/37279 )
franzlorenzon

Do apt-cache {showpkg, chính sách} thực sự hiển thị nơi gói cài đặt đã được cài đặt từ đó , hoặc nơi nó sẽ được cài đặt từ lúc nó được truy vấn?
Croad Lang Sơn

1
Cái sau Nếu tôi thường sử dụng Ubuntu trustynguồn gói, sau đó tạm thời thêm utopicđể tôi sources.listđể cài đặt phiên bản 1.20ubuntu3 của init-system-helpersvà sau đó loại bỏ các repo một lần nữa từ của tôi sources.list, apt-cache showpkg init-system-helperssẽ chỉ nói dối về danh sách gói ban đầu và apt-cache policy init-system-helperssẽ chỉ rõ rõ ràng.
blubberdiblub 04/07/2015

103

Sử dụng lệnh sau. Nó có đầu ra tốt hơn:

apt-cache policy <Package Name>

Đối với Ubuntu 16.04 trở lên, có một cách ngắn hơn để làm điều đó:

apt policy <Package Name>

11
Đây là câu trả lời chính xác! Các lệnh trong câu trả lời của mac9416 cần diễn giải tẻ nhạt + đoán dựa trên đầu ra của chúng. Để biết thêm thông tin về apt-cache policyxem thêm superuser.com/a/236605/61370
pabouk

3
apt-cache policylà tốt nhưng đôi khi bạn cần apt-cache showpkgso sánh các khoản tiền MD5 từ gói. Xem thêmdebsums --changed
gavenkoa

này policytùy chọn là hữu ích nhất khi so sánh vớisources.list
vô hạn-etcetera

Đây phải là câu trả lời được chấp nhận! @pabouk nói đúng. Câu trả lời này phù hợp với câu hỏi hơn câu trả lời hiện được chấp nhận.
HEXcube

Giống như @ pablo-bianchi đã chỉ ra trong câu trả lời của mình , một cách đơn giản hơn nữa apt policy <package-name>có thể được sử dụng, từ 16.04LTS trở đi. Khi 14.04LTS trở thành EOL'd vào năm 2018, câu trả lời này có thể được chỉnh sửa để sử dụng lệnh mới hơn.
HEXcube

9

apt trên Ubuntu 16.04 trở lên

Bên cạnh apt-cache policy, showpkgshow, bây giờ chúng ta có một tiểu ban đơn giản hơn, dễ nhớ: apt(không nhầm lẫn với cổ điển apt-*):

apt policy <package> 

Hoặc thay thế với nhiều thông tin hơn apt show <package>, dòng bắt đầu bằng "Nguồn APT:" .

Mô tả: Gói này cung cấp các công cụ dòng lệnh để tìm kiếm và quản lý cũng như truy vấn thông tin về các gói dưới dạng truy cập cấp thấp vào tất cả các tính năng của thư viện libapt-pkg. Chúng bao gồm: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Các lệnh cơ bản từ apt --help

Các tiểu ban khác cũng dễ nhớ:

  • apt list - liệt kê các gói dựa trên tên gói
  • apt search - tìm kiếm trong các mô tả gói
  • apt show - hiển thị chi tiết gói
  • apt update - cập nhật danh sách các gói có sẵn
  • apt install - cài đặt gói
  • apt remove - loại bỏ các gói
  • apt purge- loại bỏ các gói và tập tin cấu hình :

    Xóa gói sẽ xóa tất cả dữ liệu được đóng gói, nhưng thường để lại các tệp cấu hình người dùng (đã sửa đổi) nhỏ, trong trường hợp xóa là một tai nạn. Chỉ cần đưa ra một yêu cầu cài đặt cho gói vô tình bị xóa sẽ khôi phục chức năng của nó như trước đây trong trường hợp đó. Mặt khác, bạn có thể loại bỏ những thức ăn thừa này bằng cách gọi thanh lọc ngay cả trên các gói đã bị xóa. Lưu ý rằng điều này không ảnh hưởng đến bất kỳ dữ liệu hoặc cấu hình được lưu trữ trong thư mục nhà của bạn.

  • apt upgrade - nâng cấp hệ thống bằng cách cài đặt / nâng cấp gói

  • apt full-upgrade - nâng cấp hệ thống bằng cách gỡ / cài đặt / nâng cấp gói
  • apt edit-sources - chỉnh sửa tệp thông tin nguồn

apt policy xxxxuất hiện giống hệt apt-cache policy xxx, có lẽ đây nên là một bình luận thay thế. Hoặc ít nhất là đề cập rằng apt showdường như cần -achuyển đổi để xem "hồ sơ bổ sung" từ các nguồn khác
Xen2050

6

Đáng buồn thay, thông tin này không được ghi lại trong quá trình cài đặt gói. Bạn có thể đoán đúng nếu kho lưu trữ vẫn nằm trong danh sách nguồn và kho lưu trữ vẫn có gói:

grep -l PKG /var/lib/apt/lists/*

Ngay cả synap cũng không thể biết nếu bạn vô hiệu hóa kho lưu trữ và cập nhật.



1

Điều này chính xác hơn một chút:

apt-cache show <packagename> | grep "Version:"

Phiên bản mới nhất thường sẽ được cài đặt trừ khi bạn đã cài đặt ghim apt hoặc cài đặt rõ ràng một phiên bản cụ thể.

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.