Я использую 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 -l команда содержит список всех установленных пакетов.Этот стандартный вывод был передан в качестве входных данных в awk команда.awk выполняет поиск соответствующего имени пакета в стандартном вводе(колонка 2) если он находит, то он захватывает соответствующую строку. И, наконец, выводит значение (колонка 3), который на самом деле представляет версию пакета.
$ dpkg -lDesired=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 представляет описание упаковки.