Я использую 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 эти строки становятся все длиннее и длиннее. Есть ли более простой способ?
источник
dpkg --info package.deb
работает, хотя-s
не сделалdpkg --info package.deb
работает с файлами пакетов,dpkg -s <packagename>
работает с именами пакетов - файл не требуетсяисточник
dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ...
dpkg-query --showformat='${Version}\n' --show python3-lxml
.Это не
dpkg
команда, а apt-show-versionПример:
источник
Я думаю, что aneeshep's - лучший ответ, поскольку ваш вопрос указывает на использование dpkg. Но для полноты картины, вот еще один способ:
Или только для номера версии:
источник
apt-cache
зависит от текущей локали. Например в Германии вам нужноgrep 'Installiert:'
. Чтобы компенсировать это, всегда используйте LocaleC.UTF-8
при написании сценариев. Либо сLC_ALL=C.UTF-8; export LC_ALL
самого начала сценария, либо для каждого конкретного случая что-то вроде:LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}'
Другой способ найти версию установленного пакета,
dpkg
как показано ниже,Пример:
Объяснение:
dpkg -l
Команда выводит список всех установленных пакетов. Этот стандартный вывод был передан в качестве ввода вawk
команду.awk
ищет соответствующее имя пакета в стандартном вводе ( столбец 2 ), если находит, то захватывает соответствующую строку. И, наконец, печатает значение ( столбец 3 ), которое фактически представляло версию пакета.В соответствии с вышеизложенным, столбец 2 представляет имя пакета , столбец 3 представляет версию пакета , столбец 4 представляет архитектуру, а столбец 5 представляет описание пакета .
источник
dpkg
а затем позволить awk снова их фильтровать? Вы также можете запросить список для одного пакета:dpkg -l <package-name>