Uso el dpkg -l
comando 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.20101118t223039
que 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.deb
funciona, aunque-s
no funcionódpkg --info package.deb
opera 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
dpkg
comando 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-cache
depende de la configuración regional actual. Por ejemplo, en Alemania lo necesitasgrep 'Installiert:'
. Para compensar eso, use siempre LocaleC.UTF-8
cuando realice scripts. Ya seaLC_ALL=C.UTF-8; export LC_ALL
al 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
dpkg
siguiente manera,Ejemplo:
Explicación:
dpkg -l
El comando enumera todos los paquetes instalados. Esta salida estándar se introdujo como entrada alawk
comando.awk
busca 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
dpkg
primero y luego dejar que awk los filtre nuevamente? También puede solicitar el listado para un paquete único:dpkg -l <package-name>