Uso el dpkg -lcomando para averiguar qué versión de un paquete he instalado. Por ejemplo:
dpkg -l network-manager
devuelve la información en el paquete:
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
Como puede ver, devuelve lo 0.8.3~git.20101118t223039que está mal porque trunca la versión (he elegido una larga para esta pregunta). La forma en que he resuelto esto en el pasado es pasar un argumento COLUMNAS estúpidamente largo para que se expanda:
COLUMNS=200 dpkg -l network-manager
que me da el número de versión completo, pero también un montón de basura:
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
Ahora puedo ver el número de versión completo, que es 0.8.3~git.20101118t223039.d60a988-0ubuntu1.
Tengo la sensación de que esta no es la forma correcta de encontrar el número de versión de un paquete instalado. Esto nunca fue realmente un problema en el pasado, pero con la incorporación de "ubuntu" en las versiones y la proliferación de PPA, estas cadenas son cada vez más largas. hay una manera mas facil?
fuente

dpkg --info package.debfunciona, aunque-sno funcionódpkg --info package.debopera en archivos de paquete,dpkg -s <packagename>opera en nombres de paquete - no se requiere archivofuente
dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ...dpkg-query --showformat='${Version}\n' --show python3-lxml.No está usando el
dpkgcomando sino apt-show-versionesEjemplo:
fuente
Creo que aneeshep es la mejor respuesta, ya que su pregunta especifica el uso de dpkg. Pero para completar, aquí hay otra forma:
O solo por el número de versión:
fuente
apt-cachedepende de la configuración regional actual. Por ejemplo, en Alemania lo necesitasgrep 'Installiert:'. Para compensar eso, use siempre LocaleC.UTF-8cuando realice scripts. Ya seaLC_ALL=C.UTF-8; export LC_ALLal comienzo del guión o caso por caso, algo como:LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}'Otro método para encontrar la versión de un paquete instalado de la
dpkgsiguiente manera,Ejemplo:
Explicación:
dpkg -lEl comando enumera todos los paquetes instalados. Esta salida estándar se introdujo como entrada alawkcomando.awkbusca el nombre del paquete correspondiente en la entrada estándar ( columna 2 ) si encuentra y luego toma la línea correspondiente. Y finalmente imprime el valor de ( columna 3 ) que en realidad representa la versión del paquete.De acuerdo con lo anterior, la columna 2 representa el nombre del paquete , la columna 3 representa la versión del paquete , la columna 4 representa la arquitectura y la columna 5 representa la descripción del paquete .
fuente
dpkgprimero y luego dejar que awk los filtre nuevamente? También puede solicitar el listado para un paquete único:dpkg -l <package-name>