Câu hỏi Làm cách nào để biết được gói phần mềm Ubuntu hoặc Debian là gì?


Trên một hệ thống dựa trên Debian, bao gồm cả Ubuntu, làm thế nào có thể cho biết kho lưu trữ một gói sẽ được tải xuống, mà không thực sự bắt đầu tải xuống? aptitude show và apt-cache info sẽ hiển thị phần (ví dụ: metapackage, base, graphics), nhưng không phải kho mà một gói thuộc về (ví dụ: http://ppa.launchpad.net/mactel-support/ppa/ubuntu hoặc là http://us.archive.ubuntu.com/ubuntu/).

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

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


164
2018-02-09 19:14


gốc


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


Các câu trả lời:


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 wajig gó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 cái có sẵn từ kho lưu trữ từ xa (ftp://ftp.is.co.za/debian), cũng có cùng một phiên bản (2.0,47) là một 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ự trong đị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

202
2018-01-22 22:00



Nhưng nó không hiển thị nơi gói cài đặt đến từ đâu, phải không? - Adobe
@Adobe Trong trường hợp của tôi, 2.1 phiê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
Dấu hiệu của gói cài đặt là gì? *** hoặc là /var/lib/dpkg/status ? - SuB
Có thể là cả hai? Không chắc. - Tshepang
Khi gói chưa được cài đặt, apt-cache policy nói: Installed: (none). - John McGehee


Aha! Rõ ràng là apt lệnh không apt-cache info, nhưng thay vì, 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 lưu trữ sau /var/lib/apt/lists/.

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


27
2018-02-10 00:57



Đó là tính năng năng khiếu vẫn còn trên danh sách 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


Điều này làm việc cho tôi (cho thấy nơi gói 2vcard là):

$ 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 bộ lọc bổ sung để kiểm tra phiên bản, v.v. nếu có nhiều phiên bản.


8
2018-02-09 19:41



Thực dụng. Tôi rất ngạc nhiên khi thông tin này không thể truy cập được thông qua bất kỳ giao diện người dùng nào dpkg, Tuy nhiên. - gotgenes
@got Nó có sẵn: superuser.com/questions/106794/… - Tshepang


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

Aptitude 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) qua sudo apt install aptitude
  • không yêu cầu quyền quản trị (ít nhất là đối với lệnh bên dưới)
  • có một tốt đẹp ncurses GUI (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ự khá. Để hiển thị các phiên bản của các gói, sử dụng aptitude versions chỉ huy:

    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 ở trước mỗi chuỗi cho biết trạng thái của gói, tôi được cài đặt và p được thanh lọc (hoặc không bao giờ được cài đặt), ổn định, thử nghiệm và không ổn định là định nghĩa kho, số cuối cùng là ưu tiên pin.

Một thông báo trước về các phiên bản gần đây của aptitude đáng nhắc đến ở đâ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 regex ma thuật một chút để tìm kiếm theo tên nghiêm ngặt, ví dụ aptitude versions ^kde-workspace$.


8
2018-01-12 11:32



Lệnh Nice nhưng nó không liệt kê kho lưu trữ theo yêu cầu. - bjhend
Thực ra nó có. - TranslucentCloud
Bạn không hiểu. Các PPA bổ sung có thể được cài đặt. Điều quan trọng là phải biết một gói là từ một PPA như vậy. Trên 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ơ các vấn đề. - reinierpost
Có, bạn nói đúng, với versions bạn có thể chỉ cần kiểm tra các giá trị ghim thích hợp của các gói đã cho, chứ không phải các repos liên quan. Nó vẫn còn hữu ích mặc dù nếu bạn biết tất cả các repos của bạn và làm thế nào họ được ghim. - TranslucentCloud


Đá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ể thực hiện một dự đoán phong nha nếu kho lưu trữ vẫn còn 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 nó là một dạng khác của cùng một thông tin từ grep.

Ngay cả synaptic cũng không thể nói (trong màn hình Origin) nếu bạn vô hiệu hóa kho lưu trữ và cập nhật.


6
2017-10-20 21:42





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%.


2
2018-01-22 15:55