Bir Debian sistemine sanal bir paketin “kurulu” olup olmadığını nasıl bilebilirim?


16

Bazı paketlerin bir Provides:başlığı vardır. Örneğin, postfixDebian Wheezy'deki paket var Provides: mail-transport-agent.

Paket mail-transport-agentfiziksel olarak var olmayan bir "sanal" paket olarak kabul edilir.

Debian tabanlı bir sistemde, verilen bir sanal paketin "kurulu" (veya "sağlanmış") olduğunu nasıl bilebilirim? Her "sağlanan" sanal paketi listeleyebilir miyim?

İpucu : Yüklü olsun veya olmasın mevcut her sanal paketi listelemek için şunları yapın:aptitude search "~v"


1
Şu anda bir debian'ım yok, ama kuru bir kurulum işi yapmaz mı?
jthill

Yanıtlar:


15

Şunları sağlayan paketleri listelemek için 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

Bunu aptitude search '~Pmail-transport-agent ~i'yalnızca kurulu paketleri (varsa) listelemek için yapın .

Şu anda yüklü paketler tarafından sağlanan tüm sanal paketleri listelemek için:

aptitude search '~Rprovides:~i ~v'

Arama düzenlerinin açıklaması için yetenek kılavuzuna bakın .


Bu cevap kabul çünkü standart kullanır aptitude. @ Umläute açıklamasını seviyorum.
Aralık'ta Totor

Debian Jessie, ben sadece denedim aptitude search '~Pmysql-server ~i'veren mariadb-server-10.0ve mariadb-server-core-10.0, ancak ben ne zaman aptitude search '~Rprovides:~i ~v', ben görmüyorum mysql-serverAncak, ben görüyorum ... listede virtual-mysql-client, virtual-mysql-client-core, virtual-mysql-serverve virtual-mysql-client-corelistedeki.
16'da Totor

1
@figtrap Daha hızlı, elbette, ama çalışmıyor .
Gilles 'SO- kötü olmayı bırak'

10

buradaki sorun, sanal paketler ve diğer paketler tarafından sağlanan paketler arasında küçük bir fark olmasıdır .

Fark bir paket olabilir yani, sağlamak bir gerçek , hem de sadece bir paket sanal paket.

her neyse, aşağıdakiler bir paket sağlayan tüm paketleri arayacak ve hem paket adını hem de sağladığı paketleri yazdıracaktır:

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

sisteminizde belirli bir paket (ör. posta-taşıma aracısı) sağlayan herhangi bir paketin yüklü olup olmadığını öğrenmek için şunu kullanın:

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

3
Not: komutları grep-availableve paketi grep-statusyükledikten sonra kullanabilirsiniz dctrl-tools.
Totor

1

apt-cache showpkg <virtual>Aday paketlerinin listesini görüntülemek ve ardından dpkg -l <canddate> <candidate> ...adayların kurulum durumunu görüntülemek için kullanarak belirli bir sanal paketin varlığını algılayabilirsiniz .

Örneğin:

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

İşte tam bir çıktı:

$ 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

İnanıyorum dpkgve apt-cachedaha alt düzey araçları vardır aptitude, grep-availableve grep-status. Özel gereksinimlerinize bağlı olarak daha düşük seviye aletlerin kullanılması bir fayda sağlayabilir veya olmayabilir.


-1

Tüm sanal paketleri SANAL PAKET İSİMLERİNİN YETKİLİ LİSTESİNDEN alabilirsiniz . Sanal bir paketin yüklü olup olmadığını belirlemeye gelince, paketin kurulu dpkg -lolması durumunda çıkış kodu 0, kurulu değilse 1 çıkış kodu olması gerçeğini kullanıyorum .

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

Hayır, bu işe yaramıyor. dpkg -l mail-transport-agentşu anda yüklü olan bir paket olmasa bile 0 döndürebilir. Bence bu mevcudiyete dayanıyor /var/dpkg/lib/availableama emin değilim. Hiç yüklemediğim dpkg -l foobir paket için 1, temizlediğim bir paket için 0 döndürdüğünü kontrol ettim.
Gilles 'SO- kötü olmayı kes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.