Как я могу найти номер версии установленного пакета через 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 эти строки становятся все длиннее и длиннее. Есть ли более простой способ?
6 ответов
dpkg -s <packagename> | grep '^Version:'
например:
dpkg -s network-manager | grep '^Version:'
Образец вывода:
Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Это не использование dpkg
команда но apt-show-версии
Пример:
$ apt-show-versions network-manager
network-manager/maverick uptodate 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Я думаю, что aneeshep's - лучший ответ, поскольку ваш вопрос указывает на использование dpkg. Но для полноты картины, вот еще один способ:
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
Еще один способ найти версию установленного пакета через 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), если находит, то захватывает соответствующую строку. И, наконец, печатает значение (столбец 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 представляет описание пакета.
Команда
apt -qq list <package-name>
показывает, установлен ли пакет, и возвращает полный номер версии.
Пример 1 – использование
$ apt -qq list network-manager
network-manager/now 1.10.14-0ubuntu2 amd64 [installed,local]
Пример 2 – использование
-qq
а также
*
$ apt -qq list virtualbox-6*
virtualbox-6.0/unknown 6.0.24-139119~Ubuntu~bionic amd64
virtualbox-6.1/unknown,now 6.1.16-140961~Ubuntu~bionic amd64 [installed]
Пример 3 – использование
-qqa
$ apt -qqa list keepassxc
keepassxc/bionic,now 2.6.2-1ppa1~bionic1 amd64 [installed]
keepassxc/bionic 2.3.1+dfsg.1-1 amd64