web-dev-qa-db-ja.com

dpkgを使用してインストール済みパッケージのバージョン番号を確認するにはどうすればよいですか?

dpkg -lコマンドを使用して、インストールしたパッケージのバージョンを確認します。例えば:

dpkg -l network-manager

パッケージに関する情報を返します。

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

ご覧のとおり、0.8.3~git.20101118t223039を返しますが、これはバージョンを切り捨てるので間違っています(この質問の目的のために長いバージョンを選択しました)。私が過去にこれを解決した方法は、愚かな長いCOLUMNS引数を渡してそれを拡張することです:

COLUMNS=200 dpkg -l network-manager

これにより、バージョン番号全体だけでなく、大量のジャンクも取得できます。

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

これで、0.8.3~git.20101118t223039.d60a988-0ubuntu1という完全なバージョン番号が表示されます。

これは、インストールされたパッケージのバージョン番号を見つける適切な方法ではないと感じています。これは実際には過去の問題ではありませんでしたが、バージョンに「ubuntu」が追加され、PPAが増えたことで、これらの文字列はますます長くなっています。もっと簡単な方法はありますか?

80
Jorge Castro
dpkg -s <packagename> | grep '^Version:'

e。 g .:

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

サンプル出力:

Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
81
aneeshep
dpkg-query --showformat='${Version}' --show python3-lxml
35
A T

dpkgコマンドを使用していませんが、 apt-show-versionsInstall banshee

例:

$ apt-show-versions network-manager  
network-manager/maverick uptodate 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
25
Isaiah

あなたの質問はdpkgの使用を指定しているので、aneeshepが最良の答えだと思います。しかし、完全を期すために、別の方法があります。

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

または、バージョン番号だけの場合:

apt-cache policy network-manager | grep 'Installed:' | cut -c 14-
0.8.1+git.20100810t184654.ab580f4-0ubuntu2
15
andrewsomething

以下のようにdpkgを介してインストール済みパッケージのバージョンを見つける別の方法、

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

例:

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

説明:

dpkg -lコマンドは、インストールされているすべてのパッケージをリストします。この標準出力は、awkコマンドへの入力として供給されました。awkは、標準入力( 2)見つかった場合、対応する行を取得します。最後に、実際にパッケージバージョンを表す(column 3)の値を出力します。

$ 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

上記によれば、列2はパッケージ名を表し、列3はパッケージバージョンを表し、列4はアーキテクチャを表し、列5は-を表しますパッケージの説明

5
Avinash Raj