데비안 패키지 버전 규칙


34

데비안 / 우분투를 사용하고 있으며 패키지 버전에 대해 혼란스러워합니다. dpkg -l명령을 사용할 때 나는 얻는다 :

ii  vim                                 2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor
ii  vim-common                          2:7.3.429-2ubuntu2.1                Vi IMproved - Common files
ii  vim-runtime                         2:7.3.429-2ubuntu2.1                Vi IMproved - Runtime files
ii  vim-tiny                            2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor - compact version
ii  virt-what                           1.11-1                              detect if we are running in a virtual machine
ii  w3m                                 0.5.3-5ubuntu1                      WWW browsable pager with excellent tables/frames support
ii  watershed                           6                                   reduce superfluous executions of idempotent command
ii  wget                                1.13.4-2ubuntu1                     retrieves files from the web
ii  whiptail                            0.52.11-2ubuntu10                   Displays user-friendly dialog boxes from shell scripts
ii  whoopsie                            0.1.33                              Ubuntu crash database submission daemon
ii  wimlib9                             1.5.0-1~webupd8~precise             Library to extract, create, modify, and mount WIM files
ii  wimtools                            1.5.0-1~webupd8~precise             Tools to extract, create, modify, and mount WIM files
ii  wireless-tools                      30~pre9-5ubuntu2                    Tools for manipulating Linux Wireless Extensions
ii  wpasupplicant                       0.7.3-6ubuntu2.1                    client support for WPA and WPA2 (IEEE 802.11i)
ii  x11-common                          1:7.6+12ubuntu2                     X Window System (X.Org) infrastructure
ii  x11-utils                           7.6+4ubuntu0.1                      X11 utilities
ii  xauth                               1:1.0.6-1                           X authentication utility
ii  xbitmaps                            1.1.1-1                             Base X bitmaps
ii  xclip                               0.12-1                              command line interface to X selections
ii  xfonts-encodings                    1:1.0.4-1ubuntu1                    Encodings for X.Org fonts
ii  xfonts-utils                        1:7.6+1                             X Window System font utility programs
ii  xkb-data                            2.5-1ubuntu1.3                      X Keyboard Extension (XKB) configuration data
ii  xml-core                            0.13                                XML infrastructure and XML catalog file support
rc  xpdf                                3.02-21build1                       Portable Document Format (PDF) reader
ii  xterm                               271-1ubuntu2.1                      X terminal emulator
ii  xz-lzma                             5.1.1alpha+20110809-3               XZ-format compression utilities - compatibility commands
ii  xz-utils                            5.1.1alpha+20110809-3               XZ-format compression utilities
ii  zabbix-agent                        1:1.8.11-1                          network monitoring solution - agent
ii  zlib1g                              1:1.2.3.4.dfsg-3ubuntu4             compression library - runtime
ii  zlib1g-dev                          1:1.2.3.4.dfsg-3ubuntu4             compression library - development
ii  zsh                                 4.3.17-1ubuntu1                     shell with lots of features

세 번째 열은입니다 만 version, 이해할 수없는 방식으로 모두 "지워졌습니다". 다른 패키지는 완전히 다른 이름 지정 사양을 사용한다는 의미입니다.

주요 질문은 다음과 같습니다.

  1. 일부 버전 번호는 왜 포함 ubuntu되어 있습니까?
  2. 모든 특수 구두점 -~+은 무엇을 의미합니까?
  3. 무엇 alpha, build그리고 dfsg? 그냥 부담없이 사용할 수 있습니까?
  4. vim그리고 다른 패키지가 있습니다 2:. 그게 무슨 뜻이야?
  5. 버전 형식이 매우 다른 경우 "버전 비교"는 어떻게 작동합니까?

누구든지 나에게 이것을 설명해 주시겠습니까? 아니면 공식 문서를 어디서 찾을 수 있습니까?

미리 감사드립니다.


"왜 그들에 우분투가 있고 그렇지 않은가?"
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
@ CiroSantilli709 大 抓捕 六四 事件 法轮功 즉, 일부 버전 번호에는 왜 단어가 포함 ubuntu되지 않은 접미사가 있습니다.
rakslice

답변:


50

데비안 정책 안내서 (Debian Policy Manual) 질문의 일부에 응답 버전 필드에 대한 대답이있다 :

체재

형식은 다음과 같습니다. [epoch:]upstream_version[-debian_revision]

여기에 세 가지 구성 요소가 있습니다.

시대

이것은 부호없는 단일 정수 (일반적으로 작은 정수)입니다. 생략 될 수 있으며,이 경우 0이 가정됩니다. 생략하면 upstream_version에 콜론이 포함되지 않을 수 있습니다. 이전 버전의 패키지 버전 번호와 패키지의 이전 버전 번호 체계에서 실수를 남길 수 있도록 제공됩니다.

업스트림 _ 버전

버전 번호의 주요 부분입니다. 해당되는 경우 일반적으로 .deb 파일이 만들어진 원본 ( "업스트림") 패키지의 버전 번호입니다. 일반적으로 이것은 업스트림 작성자가 지정한 형식과 동일합니다. 그러나 패키지 관리 시스템의 형식 및 비교 체계에 맞게 다시 포맷해야 할 수도 있습니다.

upstream_version에 대한 패키지 관리 시스템의 비교 동작은 아래에 설명되어 있습니다. 버전 번호 의 upstream_version 부분은 필수입니다.

upstream_version는 영숫자 [36] 상기 문자 함유 할 수있다 "."(마침표) "+"(플러스), "-"(하이픈) ":"(결장), "~"(틸드)과 숫자로 시작한다. debian_revision 이 없으면 하이픈이 허용되지 않습니다. 에포크 가 없으면 콜론이 허용되지 않습니다.

debian_revision

버전 번호의이 부분은 업스트림 버전을 기반으로 데비안 패키지의 버전을 지정합니다. 영숫자와 문자 "."(완전 정지), "+"(플러스), "~"(물결표) 만 포함 할 수 있으며 upstream_version 과 같은 방식으로 비교됩니다 .

선택 사항입니다. 존재하지 않으면 upstream_version 은 하이픈을 포함하지 않을 수 있습니다. 이 형식은 소프트웨어가 데비안 패키지로 특별히 작성된 경우를 나타냅니다. 데비안 패키지 소스는 항상 원래 소스와 동일해야하므로 개정 표시가 필요하지 않습니다.

upstream_version 이 증가 할 때마다 1 에서 debian_revision 을 다시 시작하는 것이 일반적 입니다.

패키지 관리 시스템은 문자열의 마지막 하이픈 (있는 경우)에서 버전 번호를 구분하여 upstream_versiondebian_revision 을 결정합니다 . debian_revision 이 없으면 0 의 debian_revision 과 같습니다 .

비교

두 버전 번호를 비교하면, 각각의 제 에포크를 비교, 에포크 동일하고이면 upstream_version debian_revision 경우 upstream_version는 또한 동일하다. 에포크는 수치 적으로 비교됩니다. upstream_versiondebian_revision 부분은 다음과 같은 알고리즘을 사용하여 패키지 관리 시스템 비교 :

문자열은 왼쪽에서 오른쪽으로 비교됩니다.

먼저 숫자가 아닌 문자로 구성된 각 문자열의 초기 부분이 결정됩니다. 이 두 부분 (하나는 비어있을 수 있음)은 어휘 적으로 비교됩니다. 차이가 발견되면 리턴됩니다. 어휘 비교는 모든 문자가 모든 비 문자보다 먼저 정렬되고 물결표가 부분의 끝 부분까지 정렬되도록 수정 된 ASCII 값의 비교입니다. 예를 들어, 다음과 같은 부분이 초기부터 최근에 정렬 된 순서에 : ~~, ~~a, ~, 비어있는 부분 a.

그런 다음 완전히 숫자로 구성된 각 문자열의 나머지 부분이 결정됩니다. 이 두 부분의 숫자 값이 비교되고 발견 된 차이가 비교 결과로 반환됩니다. 이러한 목적을 위해 빈 문자열 (비교되는 하나 또는 두 버전 문자열의 끝에서만 발생할 수 있음)은 0으로 계산됩니다.

차이가 발견되거나 두 문자열이 모두 소모 될 때까지이 두 단계 (초기 비 숫자 문자열과 초기 숫자 문자열 비교 및 ​​제거)가 반복됩니다.

에포크 (epoch)의 목적은 버전 넘버링에서 실수를 버리고 버전 넘버링 체계가 변경되는 상황에 대처할 수 있도록하는 것입니다. 패키지 관리 시스템이 해석 할 수없는 (예 : ALPHA또는 pre-) 문자열을 포함하는 버전 번호 또는 어리석은 순서 로 처리하지 마십시오 .

ubuntu패키지가 우분투를 위해 특별히 제작되었음을 나타냅니다. alphabuild문자열은 특별한 의미를 갖고있는 것 같다,하지만하지 않는 dfsg한 패키지를 의미 수정 을 준수 데비안 자유 소프트웨어 가이드 라인 .


1
고마워요, 이것은 많은 도움이됩니다. 그러나 버전 비교는 어떻게 작동합니까? numerics, characters 및 ~ + 중 어느 것이 먼저, 어떤 것이 마지막입니까?
cizixs

나는 비교 동작을 설명하는 매뉴얼 섹션을 포함하도록 대답에서 인용을 확장했습니다.
Flup

2
이 버전 문자열이 어떻게 정렬되는지 테스트 할 수있는 온라인 도구가 있습니까?
Nick

같은 예제를 붙여 주시겠습니까? 예를 들어 위의 일부 버전을 별도의 부분으로 구문 분석합니다. 업스트림 버전과 데비안 버전 모두에-와 +가 포함될 수 있다면 분리가 어디에 있는지 어떻게 알 수 있습니까? 또한 첫 번째 링크가 끊어진 것 같습니다.
fersarr

@fersarr 나는 다른 사람들에게 예제를 남길 것이지만 나는 링크를 고쳤다.
Flup

10

XubuntuY 버전의 일부 예 : 1ubuntu1

  • X데비안 패키지 버전입니다. 대부분의 우분투 패키지는 "업스트림"배포판 인 데비안 패키지를 기반으로합니다.

    인 경우 0데비안 패키지가 없음을 의미합니다. 우분투에만 존재합니다.

    X 실제 업스트림 버전이 업데이트되면 재설정됩니다 (예 : Binutils 2.25에서 Binutils 2.26으로).

    데비안 버전은 데비안이 패키지를 패치하여 데비안 시스템이나 보안 릴리스에서 더 잘 작동 할 수 있기 때문에 존재합니다.

    데비안 개발자는 물론 포크를 피하기 위해 패치를 다시 병합하는 데 관심이 있습니다.

    새로운 세트 패치가 작성 될 때마다이 수가 증가합니다.

  • ubuntuY 선택 사항입니다.

    없으면 데비안 패키지가 직접 사용 된 것입니다.

    그렇지 않으면, 데비안이 실제 업스트림 위에 적용되는 것과 마찬가지로 데비안 패치 위에 적용되는 Yth Ubuntu 패치입니다.

    YX증가 하면 재설정합니다 .

다음과 같은 패키지 소스를 얻는 경우 :

apt-get source gdb

우분투와 데비안이 적용한 패치는 다음과 같습니다 :

debian/patches/

더 흥미로운 bzr것은 모든 우분투 버전을 복제하여 그 사이에 변경된 내용을 볼 수 있다는 것입니다.

bzr branch ubuntu:gdb
cd gdb
bzr log | less

참조 : https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

Epoch가 실제로 나타내는 것

https://askubuntu.com/questions/441879/why-do-some-packages-have-extra-numbers-on-the-front-of-their-version-string

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.