debian / changelog에서 패키지 버전을 어떻게 추출합니까?


11

패키지 버전 번호를 얻기 위해 소스 패키지 debian/changelog파일 (또는 debian/control?)을 구문 분석하는 가장 강력한 방법은 무엇입니까 ? 다음과 같은 것 :

pkgver=$(dpkg-parsechangelog | magic_goes_here)

스크립트에서 조작 할 수 있도록 버전 번호 (및 버전 번호 만) 를 추출하려고합니다 .

dpkg-*이 목적을 위해 유틸리티 를 찾을 것으로 기대 했지만 아직 찾지 못했습니다.

답변:


18

버전 1.17.0 이상을 사용하는 경우

dpkg-parsechangelog --show-field Version

더 이상 출력을 처리 할 필요가 없습니다. 이 버전은 현재 (2014 년 2 월) 데비안 테스트에서 사용 가능합니다.


1
@RichardHansen : 죄송합니다. Debian Stable에있는 버전에서는이 플래그를 사용할 수 없습니다.
Martin Geisler

우분투 12.04와 동일합니다. 그것은 우분투 14.04에 있습니다.
Stefan

7

이를 수행하는 방법에는 여러 가지가 있습니다.

dpkg-parsechangelog | sed -n 's/^Version: //p'

또는 대안 적으로 :

dpkg-parsechangelog | grep Version: | cut -d' ' -f2-


더 - 나는 좀 더 강력한 뭔가를 기대했다 deb-control(5)man 페이지가 명확하게 형식을 설명하지 않고, 나는 어떤 가정을하고 싶지 않다. 예를 들어, 필드가 한 줄에서 시작해야한다는 것을 명확하게하지 않습니다 ( "필드는 필드 태그로만 구분됩니다"). 또한 필드는 여러 줄에 걸쳐있을 수 있으며 태그와 값 사이의 간격에 대해서는 아무 것도 말하지 Version:123않으므로 별도의 Version 필드가 아닌 이전 필드의 연속으로 해석되어야합니다 (결핍으로 인해) 콜론 뒤에 공백의).
Richard Hansen

실제로 출력 결과 dpkg-parsechangelog는 다음과 같습니다. Version: 0.6.11-2보다 강력한 debian/control형식의 구문 분석을 수행하려는 경우 python-debian또는을 사용할 수 있습니다 libparse-debcontrol-perl.
andrewsomething

1

dpkg-parsechangelogsed / grep을 통한 출력 파이프는 완전히 견고해야합니다. dpkg-parsechangelog출력 형식 및 대부분의 다른 데비안 스타일 제어 파일에 대한 자세한 내용을 보려면 RFC 822를 참조하십시오 . deb 패키지 버전에는 개행 문자, 공백 또는 기타 특수 문자 나 제어 문자 ( man deb-version) 가 포함되어 있지 않아도되므로 Version: blah출력에 " "행이 항상 표시되고 항상 단일 행이됩니다. 개인적인.

그러나 changelog에서 현재 버전 번호를 얻기 위해 실행 dpkg-parsechangelog하는 매우 무거운 프로그램입니다. 결과를 제공하기 위해 Perl을 실행하고 엄청나게 많은 수의 라이브러리를로드해야하며, 대부분 사용하지 않을 것입니다. 느린 플랫폼 또는 느린 파일 저장 매체 또는이 버전 구문 분석을 여러 번 수행해야하는 경우 상당히 느려집니다. 대신 첫 번째 줄의 첫 번째 괄호 안에있는 것을 사용하십시오.

head -1 debian/changelog | awk -F'[()]' '{print $2}'

changelog표준 형식을 사용하는 유효한 파일로 올바른 현재 패키지 버전을 얻을 수 있습니다 (비표준 debian/changelog형식은 모든 실제적인 목적으로 사용되지 않습니다).


-1

내가 본 것처럼 패키지 버전은 변경 로그 파일의 헤더 부분으로 구성됩니다. 그래서 당신은 그것을 할 수 있습니다

pkgver=$(dpkg-parsechangelog | head

예를 들어 설치된 패키지에 대해이 명령을 시도했습니다

aptitude changelog shutter | head

&

jai@frank-Jai:~$ aptitude changelog shutter | head
Get: Changelog of shutter
shutter (0.89.0-0ubuntu1) quantal; urgency=low

  * New upstream release.
   - Adds an AppIndicator (LP: #805464).
  * debian/control: Recommend libgtk2-appindicator-perl

 -- Andrew Starr-Bochicchio <a.starr.b@gmail.com>  Sat, 11 Aug 2012 17:36:18 -0400

shutter (0.88.3-1) unstable; urgency=low
jai@frank-Jai:~$ 

1
스크립트에서 조작 할 수 있도록 버전 번호와 버전 번호 원합니다 .
Richard Hansen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.