konvensi versi paket debian

35

Saya menggunakan debian / Ubuntu, dan bingung tentang versi paket. Saat menggunakan dpkg -lperintah, saya mendapatkan:

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

Kolom ketiga adalah version, tetapi semuanya "kacau" dengan cara yang tidak bisa saya mengerti. Maksud saya, paket yang berbeda menggunakan spesifikasi penamaan yang sama sekali berbeda.

Inilah pertanyaan utama:

  1. Mengapa beberapa nomor versi ada ubuntudi dalamnya, dan beberapa tidak?
  2. Apa arti semua tanda baca khusus -~+?
  3. Apa alpha, builddan dfsg? Bisakah saya menggunakannya dengan santai?
  4. vimdan paket lainnya miliki 2:. Apa artinya?
  5. Bagaimana cara "perbandingan versi" bekerja, ketika format versi bisa sangat berbeda?

Adakah yang bisa menjelaskan hal ini kepada saya? Atau di mana saya dapat menemukan dokumen resmi?

Terima kasih sebelumnya.

cizixs
sumber
Apa maksud Anda di: "Mengapa ada ubuntu di dalamnya, dan tidak ada?"
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
@ CiroSantilli709 大 抓捕 六四 事件 法轮功 yaitu mengapa beberapa nomor versi memiliki akhiran yang mengandung kata ubuntudan beberapa tidak.
rakslice

Jawaban:

50

The Pedoman Kebijakan Debian telah mengatakan tentang bidang versi, yang menjawab beberapa bagian dari pertanyaan Anda:

Format

Formatnya adalah: [epoch:]upstream_version[-debian_revision]

Tiga komponen di sini adalah:

masa

Ini adalah bilangan bulat unsigned (umumnya kecil) tunggal. Mungkin dihilangkan, dalam hal ini diasumsikan nol. Jika dihilangkan maka upstream_version mungkin tidak mengandung titik dua apa pun. Ini disediakan untuk memungkinkan kesalahan dalam nomor versi dari versi yang lebih lama dari suatu paket, dan juga skema penomoran versi paket sebelumnya, untuk ditinggalkan.

versi upstream_version

Ini adalah bagian utama dari nomor versi. Biasanya nomor versi paket asli ("upstream") dari mana file deb dibuat, jika ini berlaku. Biasanya ini akan dalam format yang sama seperti yang ditentukan oleh penulis hulu; namun, mungkin perlu diformat ulang agar sesuai dengan format dan skema perbandingan sistem manajemen paket.

Perilaku perbandingan sistem manajemen paket sehubungan dengan upstream_version dijelaskan di bawah ini. Bagian upstream_version dari nomor versi adalah wajib.

Versi upstream_versi hanya boleh berisi alfanumerik [36] dan karakter "."(berhenti penuh), "+"(plus), "-"(tanda hubung), ":"(titik dua), "~"(tilde) dan harus dimulai dengan angka. Jika tidak ada debian_revision maka tanda hubung tidak diperbolehkan; jika tidak ada zaman maka titik dua tidak diperbolehkan.

debian_revision

Bagian dari nomor versi ini menentukan versi paket Debian berdasarkan versi hulu. Ini mungkin hanya berisi alfanumerik dan karakter "."(berhenti penuh), "+"(plus), "~"(tilde) dan dibandingkan dengan cara yang sama seperti upstream_version .

Itu opsional; jika tidak ada maka upstream_version mungkin tidak mengandung tanda hubung. Format ini menggambarkan kasus di mana perangkat lunak ditulis secara khusus untuk menjadi paket Debian, di mana sumber paket Debian harus selalu identik dengan sumber asli dan oleh karena itu tidak diperlukan indikasi revisi.

Ini konvensional untuk memulai ulang debian_revision pada 1 setiap kali upstream_version ditingkatkan.

Sistem manajemen paket akan memecah nomor versi terpisah pada tanda hubung terakhir dalam string (jika ada) untuk menentukan upstream_version dan debian_revision . Tidak adanya debian_revision sama dengan debian_revision dari 0.

Perbandingan

Ketika membandingkan dua nomor versi, pertama epoch masing-masing dibandingkan, kemudian upstream_version jika epoch sama, dan kemudian debian_revision jika upstream_version juga sama. zaman dibandingkan secara numerik. Bagian upstream_version dan debian_revision dibandingkan dengan sistem manajemen paket menggunakan algoritma berikut:

Senar dibandingkan dari kiri ke kanan.

Pertama bagian awal dari setiap string yang seluruhnya terdiri dari karakter non-digit ditentukan. Kedua bagian ini (salah satunya mungkin kosong) dibandingkan secara leksikal. Jika perbedaan ditemukan, itu dikembalikan. Perbandingan leksikal adalah perbandingan nilai-nilai ASCII yang dimodifikasi sehingga semua huruf mengurutkan lebih awal dari semua non-huruf dan sehingga tilde menyortir sebelum apa pun, bahkan bagian akhir. Misalnya, bagian-bagian berikut ini dalam rangka diurutkan dari yang paling awal ke terbaru: ~~, ~~a, ~, bagian kosong, a.

Kemudian bagian awal dari sisa setiap string yang seluruhnya terdiri dari karakter digit ditentukan. Nilai numerik dari dua bagian ini dibandingkan, dan setiap perbedaan yang ditemukan dikembalikan sebagai hasil perbandingan. Untuk keperluan ini string kosong (yang hanya dapat terjadi pada akhir satu atau kedua versi string dibandingkan) dihitung sebagai nol.

Dua langkah ini (membandingkan dan menghapus string non-digit awal dan string digit awal) diulangi sampai perbedaan ditemukan atau kedua string habis.

Perhatikan bahwa tujuan zaman adalah untuk memungkinkan kita meninggalkan kesalahan dalam penomoran versi, dan untuk mengatasi situasi di mana skema penomoran versi berubah. Ini tidak dimaksudkan untuk mengatasi nomor versi yang berisi untaian huruf yang tidak dapat ditafsirkan oleh sistem manajemen paket (seperti ALPHAatau pre-), atau dengan pemesanan konyol.

ubuntuakan menunjukkan bahwa paket tersebut telah dibuat khusus untuk Ubuntu. The alphadan buildstring tampaknya tidak memiliki makna tertentu, tetapi dfsgmengacu pada paket yang telah dimodifikasi untuk memenuhi Debian Free Software Guidelines .

Flup
sumber
1
Terima kasih, ini sangat membantu. Tetapi bagaimana perbandingan versi bekerja? digit, huruf, dan ~ +, mana yang lebih dulu, dan mana yang terakhir?
cizixs
Saya telah memperluas kutipan dalam jawaban saya untuk memasukkan bagian manual yang menggambarkan perilaku perbandingan.
Flup
2
Apakah ada alat online di suatu tempat di mana saya dapat menguji bagaimana string versi ini diurutkan?
Nick
Bisakah Anda menempelkan contoh yang sama? Misalnya, mem-parsing beberapa versi di atas ke dalam bagian yang terpisah. Jika versi upstream dan versi debian dapat berisi - dan + bagaimana kita tahu di mana pemisahannya? Juga, tautan pertama tampaknya rusak.
fersarr
@fersarr Saya akan memberikan contoh kepada orang lain tapi saya sudah memperbaiki tautannya
Flup
10

XubuntuY bagian dari versi misalnya 1ubuntu1

  • Xadalah versi paket Debian. Sebagian besar paket Ubuntu didasarkan pada paket Debian, yang merupakan distro "upstream".

    Jika 0, ini berarti bahwa tidak ada paket Debian: hanya ada di Ubuntu.

    X me-reset ketika versi hulu yang sebenarnya diperbarui, misalnya Binutils 2.25 ke Binutils 2.26.

    Versi Debian ada karena Debian dapat membuat tambalan ke paket sehingga akan bekerja lebih baik di sistem Debian atau untuk rilis keamanan.

    Pengembang Debian tentu saja tertarik untuk menggabungkan tambalan kembali untuk menghindari forking.

    Setiap kali set tambalan baru dibuat, jumlah ini bertambah.

  • ubuntuY adalah opsional.

    Jika tidak ada, itu berarti paket Debian digunakan secara langsung.

    Kalau tidak, itu berarti bahwa ini adalah patch Ubuntu ke-Y yang diterapkan di atas patch Debian, seperti halnya Debian yang berlaku di atas hulu yang sebenarnya.

    Yulang saat Xmeningkat.

Jika Anda mendapatkan sumber paket dengan:

apt-get source gdb

Anda akan melihat tambalan yang diterapkan oleh Ubuntu dan Debian di:

debian/patches/

Yang lebih menarik, Anda dapat mengkloning bzrdan melihat daftar semua versi Ubuntu dengan apa yang berubah di antara mereka:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

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

Apa yang sebenarnya diwakili oleh Epoch

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

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber