Dpkg ile kurulu bir paketin sürüm numarasını nasıl bulabilirim?

70

Yüklediğim bir paketin sürümünü öğrenmek için dpkg -l komutunu kullanıyorum. Örneğin:

dpkg -l network-manager

paketin üzerindeki bilgileri döndürür:

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                   Description
+++-=========================-=========================-==================================================================
ii  network-manager           0.8.3~git.20101118t223039 network management framework daemon

Gördüğünüz gibi, 0.8.3~git.20101118t223039 değerini döndürür; bu, sürümü kırpmaktadır (bu sorunun amacı için uzun bir yol seçtim). Bunu geçmişte çözdüğüm yol, onu genişletmek için aptalca uzun bir COLUMNS argümanı geçirmektir:

COLUMNS=200 dpkg -l network-manager

bana sürüm numarasının tamamını veriyor, ama aynı zamanda bir sürü önemsiz:

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                                      Description
+++-============================================-============================================-========================================================================================================
ii  network-manager                              0.8.3~git.20101118t223039.d60a988-0ubuntu1   network management framework daemon

Artık 0.8.3~git.20101118t223039.d60a988-0ubuntu1 olan tam sürüm numarasını görebiliyorum.

Bunun yüklü bir paketin sürüm numarasını bulmanın uygun bir yolu olmadığını hissediyorum. Bu, geçmişte hiçbir zaman gerçekten bir sorun değildi, ancak sürümlerde "ubuntu" ve PPA'ların çoğalmasıyla bu dizeler daha uzun ve uzun sürüyor. Daha kolay bir yolu var mı?

    
sordu Jorge Castro 30.11.2010 07:20

5 cevap

73
dpkg -s <packagename> | grep '^Version:'

e. q:.

dpkg -s network-manager | grep '^Version:'

Örnek çıktı:

Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
    
verilen cevap aneeshep 30.11.2010 07:27
29
dpkg-query --showformat='${Version}' --show python3-lxml
    
verilen cevap A T 22.12.2015 03:16
24

dpkg komutunu kullanmıyor ancak apt-show-sürümleri

Örnek:

$ apt-show-versions network-manager  
network-manager/maverick uptodate 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
    
verilen cevap Isaiah 30.11.2010 07:37
14

Aneeshep'in, dpkg kullanarak sorunuzu belirttiği en iyi cevap olduğunu düşünüyorum. Ama bütünlük uğruna, işte başka bir yol:

apt-cache policy network-manager 
network-manager:
  Installed: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
  Candidate: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
  Version table:
 *** 0.8.1+git.20100810t184654.ab580f4-0ubuntu2 0
        500 http://us.archive.ubuntu.com/ubuntu/ maverick/main i386 Packages
        100 /var/lib/dpkg/status

Veya sadece sürüm numarası için:

apt-cache policy network-manager | grep 'Installed:' | cut -c 14-
0.8.1+git.20100810t184654.ab580f4-0ubuntu2
    
verilen cevap andrewsomething 30.11.2010 19:59
4

Yüklü paketin sürümünü aşağıdaki gibi dpkg aracılığıyla bulmak için başka bir yöntem

dpkg -l | awk '=="package-name" { print  }'  

Örnek:

$ dpkg -l | awk '=="network-manager" { print  }'
0.9.8.0-0ubuntu22

Açıklama:

dpkg -l komutu kurulu tüm paketleri listeler. Bu standart çıktı, awk komutuna girdi olarak beslendi. awk , standart girişte karşılık gelen paket adını arar ( sütun 2 ) bulursa o zaman karşılık gelen çizgiyi alır. Ve sonunda, aslında paket sürümünü temsil eden ( sütun 3 ) değerini yazdırır.

$ dpkg -l
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

Yukarıdakilere göre, sütun 2 paket adını , sütun 3 paket sürümünü , sütun 4 mimariyi ve sütunu temsil eder. 5, paket açıklamasını temsil eder.

    
verilen cevap Avinash Raj 30.03.2014 10:46

Etiketlerdeki diğer soruları oku