dpkg-parsechangelog
работает, и более ранний ответ, передающий вывод через sed / grep, должен быть полностью устойчивым. Если вы хотите узнать точные детали формата dpkg-parsechangelog
вывода и большинства других управляющих файлов в стиле debian, см. RFC 822 . Никогда не допустимо, чтобы версия пакета deb содержала символ новой строки, пробел или любые другие специальные или управляющие символы (см. man deb-version
), Поэтому Version: blah
строка " " в выходных данных всегда будет присутствовать и всегда будет одной строкой в ее своя.
Тем не менее, dpkg-parsechangelog
это очень тяжелая программа, запускаемая только для получения номера текущей версии из журнала изменений. Он должен запустить Perl и загрузить впечатляюще большое количество библиотек, чтобы получить результат, большинство из которого вы не будете использовать. На более медленных платформах или с медленными носителями для файлов, или когда вам нужно много раз анализировать эту версию, она будет мучительно медленной. Вместо этого просто используйте все, что находится в первом наборе скобок в первой строке:
head -1 debian/changelog | awk -F'[()]' '{print $2}'
Это даст вам правильную текущую версию пакета с любым допустимым changelog
файлом, использующим стандартный формат (а нестандартные debian/changelog
форматы, для всех практических общих целей, никогда не используются).