Làm thế nào để biết từ kho lưu trữ Ubuntu hoặc Debian mà một gói đến?


168

Trên hệ thống dựa trên Debian, bao gồm Ubuntu, làm thế nào người ta có thể biết gói nào sẽ được tải xuống từ gói nào mà không thực sự bắt đầu tải xuống? aptitude showapt-cache infosẽ hiển thị phần (ví dụ: siêu dữ liệu, cơ sở, đồ họa), nhưng không hiển thị kho lưu trữ mà gói đó thuộc về (ví dụ: http://ppa.launchpad.net/mactel-support/ppa/ubfox hoặc http: // us .archive.ubfox.com / ubfox / ).

Khi cài đặt gói, kho lưu trữ thực tế xuất hiện trong quá trình tải xuống (nó được in ra trong đầu ra "tải xuống từ ..." từ apt và các chương trình tương tự), nhưng làm thế nào để có được thông tin về kho chứa gói (hoặc cụ thể phiên bản của một gói) mà không cần tải xuống và cài đặt nó trước?

Ngoài ra, làm thế nào người ta có thể xác định kho lưu trữ nguồn cho gói đã được cài đặt?


1
tôi thấy đây là một trong những thiếu sót của Apt; Thật không dễ để biết kho lưu trữ nào cung cấp một gói nhất định trong các công cụ cài đặt gói.
quack quixote

Câu trả lời:


203

Tôi chạy apt-cache policy <package name>:

$ apt-cache policy wajig
wajig:
  Installed: 2.1
  Candidate: 2.1
  Version table:
 *** 2.1 0
        100 /var/lib/dpkg/status
     2.0.47 0
        500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages
        500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages

Điều đó có nghĩa là có ba wajiggói:

  • Một cái đã được cài đặt ( /var/lib/dpkg/status)

  • Một cái có sẵn từ một kho lưu trữ cục bộ ( file:/home/wena/.repo_bin/)

  • Một ftp://ftp.is.co.za/debianphiên bản có sẵn từ kho lưu trữ từ xa ( ), cũng có cùng phiên bản ( 2.0.47 ) với phiên bản trong kho lưu trữ cục bộ


Ngoài ra, apt-cache madison <package name>sẽ hiển thị thông tin tương tự ở định dạng bảng.

 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe amd64 Packages
 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe Sources

Nhưng nó không hiển thị gói cài đặt đến từ đâu, phải không?
Adobe

2
@Adobe Trong trường hợp của tôi, 2.1phiên bản không có sẵn từ bất kỳ kho lưu trữ nào. Nó được xây dựng tại địa phương.
tshepang

2
Dấu hiệu của gói cài đặt là gì? ***hay /var/lib/dpkg/status?
SuB

Có thể là cả hai? Không chắc.
tshepang

Khi gói không được cài đặt, apt-cache policynói : Installed: (none).
John McGehee

28

Aha! Rõ ràng, aptlệnh thích hợp không phải apt-cache info, mà thay vào đó , apt-cache showpkg.

$ apt-cache showpkg linux-generic
Package: linux-generic
Versions: 
2.6.31.19.32 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_karmic-security_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c

2.6.31.14.27 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c


Reverse Depends: 
Dependencies: 
2.6.31.19.32 - linux-image-generic (5 2.6.31.19.32) 
2.6.31.14.27 - linux-image-generic (5 2.6.31.14.27) 
Provides: 
2.6.31.19.32 - 
2.6.31.14.27 - 
Reverse Provides: 

Các File:dòng cung cấp thông tin kho sau /var/lib/apt/lists/.

một báo cáo lỗi aptitudekhông thể hiển thị kho lưu trữ nguồn , nhưng có vẻ như hiện tại tính năng này vẫn nằm trong danh sách mong muốn.


Tính năng năng khiếu đó vẫn còn trên danh sách whisky 8 năm sau và tôi không biết tại sao câu trả lời này ( apt-cache showpkg) không được đánh dấu là đúng.
Csaba Toth

8

Điều này hoạt động với tôi (hiển thị gói 2vcard):

$ grep 2vcard /var/lib/apt/lists/* | grep "Filename:"

/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages:Filename: pool/universe/2/2vcard/2vcard_0.5-3_all.deb

Bạn có thể áp dụng lọc bổ sung để kiểm tra các phiên bản, v.v., nếu có nhiều phiên bản.


Thực dụng. dpkgMặc dù vậy, tôi ngạc nhiên rằng thông tin này không thể truy cập được thông qua bất kỳ mặt trước nào .
gotgenes


8

Tôi tự hỏi tại sao không ai nhắc đến aptitude. Tôi sử dụng nó mọi lúc.

Năng khiếu là:

  • được vận chuyển theo mặc định với nhiều bản phân phối dựa trên Debian. Có thể được cài đặt để khác (như Ubuntu) thông quasudo apt install aptitude
  • không yêu cầu đặc quyền quản trị (ít nhất là cho lệnh bên dưới)
  • có một ncursesGUI đẹp (nhưng hầu hết thời gian được sử dụng mà không có nó)
  • cung cấp một đầu ra thực sự đẹp. Để hiển thị các phiên bản của gói, sử dụng aptitude versionslệnh:

    me@wheezy:~$ aptitude versions kde-standard
    Package kde-standard:                        
    i A 5:77+deb7u1     stable              500
    p A 5:84            testing,unstable    130
    
  • không có sức mạnh siêu bò

Chữ cái phía trước mỗi chuỗi biểu thị trạng thái của gói, i được cài đặt và p bị xóa (hoặc không bao giờ được cài đặt), ổn định , kiểm trakhông ổn định là các định nghĩa kho lưu trữ, cuối cùng là số ưu tiên pin .

Một cảnh báo liên quan đến các phiên bản gần đây của năng khiếu đáng được đề cập ở đây: theo mặc định, nó hiển thị tất cả các gói, bao gồm tên bạn tìm kiếm, vì vậy hãy sử dụng phép thuật regex một chút để tìm kiếm theo tên nghiêm ngặt, ví dụ aptitude versions ^kde-workspace$.


1
Lệnh đẹp nhưng nó không liệt kê kho lưu trữ theo yêu cầu.
bjhend

Thật ra nó có .
translucentCloud

Bạn không hiểu. PPA bổ sung có thể được cài đặt. Điều quan trọng là phải biết liệu một gói là từ một PPA như vậy. Thực tế, đó là những gì tôi đang cố gắng tìm ra ngay bây giờ - nếu có, tôi có thể loại bỏ PPA, giảm nguy cơ vấn đề.
Revierpost

Có, bạn đã đúng, với versionsbạn chỉ cần kiểm tra các giá trị ghim apt của các gói đã cho, không phải các repos liên quan. Nó vẫn hữu ích mặc dù nếu bạn biết tất cả các repos của bạn và cách chúng được ghim.
translucentCloud

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/*

apt-cache showpkg đang hiển thị dữ liệu từ cơ sở dữ liệu kho lưu trữ (không phải những gì được cài đặt) vì vậy đây là một dạng khác của cùng thông tin từ grep.

Ngay cả synap cũng không thể biết (trong màn hình Origin) nếu bạn tắt kho lưu trữ và cập nhật.


2

Hoặc, lấy cảm hứng từ Sunny bạn có thể thử:

# list installed restricted packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'restricted' && echo $i; done

# list installed multiverse packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'multiverse' && echo $i; done

ps. không chính xác 100%.

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.