dpkg-parsechangelog
funciona, y la respuesta anterior que canaliza la salida a través de sed / grep debe ser completamente robusta. Si desea conocer detalles precisos del formato de dpkg-parsechangelog
salida y la mayoría de los otros archivos de control de estilo Debian, consulte RFC 822 . Nunca está bien que una versión del paquete deb contenga una nueva línea, espacio o cualquier otro carácter especial o de control (ver man deb-version
), por lo que la Version: blah
línea " " en la salida siempre estará presente, y siempre será una sola línea en su propio.
Sin embargo, dpkg-parsechangelog
es un programa muy pesado para ejecutarse solo para obtener el número de versión actual de un registro de cambios. Tiene que ejecutar Perl y cargar una cantidad impresionantemente grande de bibliotecas para obtener un resultado, la mayoría de los cuales no utilizará. En plataformas más lentas, o con medios de almacenamiento de archivos lentos, o cuando necesite analizar esta versión muchas veces, resultará muy lento. En su lugar, solo use lo que esté dentro del primer conjunto de paréntesis en la primera línea:
head -1 debian/changelog | awk -F'[()]' '{print $2}'
Eso le proporcionará la versión correcta del paquete actual con cualquier changelog
archivo válido que utilice el formato estándar (y los debian/changelog
formatos no estándar , para todos los fines generales prácticos, nunca se utilizan).