Làm cách nào để biết gói ảo có được cài đặt trên hệ thống Debian không?


16

Một số gói, có một Provides:tiêu đề. Ví dụ, gói postfixtrên Debian Wheezy có Provides: mail-transport-agent.

Gói mail-transport-agentkhông tồn tại về mặt vật lý được coi là gói "ảo".

Làm thế nào tôi có thể biết, trên một hệ thống dựa trên Debian, nếu một gói ảo nhất định được "cài đặt" (hoặc "được cung cấp")? Tôi có thể liệt kê mọi gói ảo "được cung cấp" không?

Gợi ý : để liệt kê mọi gói ảo hiện có, đã cài đặt hay chưa, hãy thực hiện:aptitude search "~v"


1
Hiện tại tôi không có debian, nhưng cài đặt chạy khô có làm được việc không?
13 lúc 0 giờ 45 phút

Câu trả lời:


15

Để liệt kê các gói cung cấp mail-transport-agent:

$ aptitude search '~Pmail-transport-agent'
p   citadel-mta                     - complete and feature-rich groupware server
p   courier-mta                     - Courier mail server - ESMTP daemon        
p   dma                             - lightweight mail transport agent          
p   esmtp-run                       - user configurable relay-only MTA - the reg
p   exim4-daemon-heavy              - Exim MTA (v4) daemon with extended feature
p   exim4-daemon-light              - lightweight Exim MTA (v4) daemon          
p   masqmail                        - mail transport agent for intermittently co
p   msmtp-mta                       - light SMTP client with support for server 
p   nullmailer                      - simple relay-only mail transport agent    
i   postfix                         - High-performance mail transport agent     
p   sendmail-bin                    - powerful, efficient, and scalable Mail Tra
p   ssmtp                           - extremely simple MTA to get mail off the s
p   xmail                           - advanced, fast and reliable ESMTP/POP3 mai

Làm cho nó aptitude search '~Pmail-transport-agent ~i'chỉ liệt kê các gói đã cài đặt (nếu có).

Để liệt kê tất cả các gói ảo được cung cấp bởi các gói hiện được cài đặt:

aptitude search '~Rprovides:~i ~v'

Xem hướng dẫn sử dụng năng khiếu để được giải thích về các mẫu tìm kiếm.


Chấp nhận câu trả lời này vì được sử dụng tiêu chuẩn aptitude. Tôi thích cách giải thích của @ umläute.
Totor 31/12/13

Trên Debian Jessie, tôi chỉ cố gắng aptitude search '~Pmysql-server ~i'mang đến cho mariadb-server-10.0mariadb-server-core-10.0, nhưng khi tôi làm aptitude search '~Rprovides:~i ~v', tôi không thấy mysql-servertrong danh sách ... Tuy nhiên, tôi thấy virtual-mysql-client, virtual-mysql-client-core, virtual-mysql-servervirtual-mysql-client-coretrong danh sách.
Típ


10

vấn đề ở đây là có một sự khác biệt tinh tế giữa các gói ảo và các gói được cung cấp bởi các gói khác.

sự khác biệt là, một gói có thể cung cấp một gói thực sự , không chỉ là một gói ảo .

dù sao đi nữa, sau đây sẽ tìm kiếm tất cả các gói cung cấp một gói và sẽ in cả tên gói và các gói mà nó cung cấp:

grep-available -sPackage  -sProvides -FProvides -e '^.'

để tìm xem có gói nào được cài đặt trên hệ thống của bạn cung cấp một gói nhất định không (ví dụ: đại lý vận chuyển thư), hãy sử dụng

grep-status -sPackage -sProvides -FProvides "mail-transport-agent"

3
Lưu ý: các lệnh grep-availablegrep-statuscó sẵn khi bạn cài đặt dctrl-tools gói.
Totor

1

Bạn có thể phát hiện sự hiện diện của một gói ảo nhất định bằng cách sử dụng apt-cache showpkg <virtual>để hiển thị danh sách các gói ứng viên và sau đó dpkg -l <canddate> <candidate> ...để hiển thị trạng thái cài đặt của các ứng viên.

Ví dụ:

$ apt-cache showpkg awk
$ dpkg -l original-awk mawk gawk

Đây là một bản in đầy đủ:

$ apt-cache showpkg awk
Package: awk
Versions: 

Reverse Depends: 
  base-files,awk
  base-files,awk
Dependencies: 
Provides: 
Reverse Provides: 
mawk:i386 1.3.3-17ubuntu2
gawk:i386 1:4.0.1+dfsg-2.1ubuntu2
original-awk 2012-12-20-1
mawk 1.3.3-17ubuntu2
gawk 1:4.0.1+dfsg-2.1ubuntu2

$ dpkg -l original-awk mawk gawk
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  gawk           1:4.0.1+dfsg amd64        GNU awk, a pattern scanning and p
ii  mawk           1.3.3-17ubun amd64        a pattern scanning and text proce
dpkg-query: no packages found matching original-awk

Tôi tin dpkgapt-cachelà công cụ cấp thấp hơn aptitude, grep-availablegrep-status. Sử dụng các công cụ cấp thấp hơn có thể hoặc không thể là một lợi ích, tùy thuộc vào yêu cầu cụ thể của bạn.


-1

Bạn có thể nhận được tất cả các gói ảo từ DANH SÁCH TÁC GIẢ CỦA TÊN GỌI VIRTUAL . Để xác định xem gói ảo có được cài đặt không, tôi sử dụng dpkg -lvà thực tế là nó có mã thoát là 0 nếu gói được cài đặt và mã thoát là 1 nếu không được cài đặt.

dpkg -l mail-transport-agent &> /dev/null; echo $?

Không, điều này không hoạt động. dpkg -l mail-transport-agentcó thể trả về 0 ngay cả khi không có gói nào cung cấp gói hiện đang được cài đặt. Tôi nghĩ rằng nó dựa trên sự hiện diện /var/dpkg/lib/availablenhưng tôi không chắc chắn. Tôi đã kiểm tra dpkg -l footrả về 1 cho gói mà tôi chưa bao giờ cài đặt nhưng 0 cho gói mà tôi vừa thanh trừng.
Gilles 'SO- ngừng trở nên xấu xa'
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.