Mengapa nama paket berisi nomor versi?

15

Saat bekerja dengan Ubuntu dan distro-distro berbasis Debian lainnya, saya perhatikan bahwa paket-paket dalam repo perangkat lunak sering berisi nomor versi utama.

Sebagai contoh,

  • Apache: apache2
  • Kucing jantan: tomcat7
  • PHP: php5
  • Anggur: wine1.4
  • MySQL: mysql-server-5.5

Namun saya perhatikan bahwa tidak ada apache1paket yang tersedia, dan serupa untuk sisanya. Jika nama paket berubah dengan pembaruan perangkat lunak, bukankah itu menghalangi salah satu tujuan utama manajemen paket (peningkatan mudah)?

Jika Apache 3 keluar besok, apakah saya harus menginstal apache3paket secara manual jika saya ingin memutakhirkan? `

Tom Marthenal
sumber

Jawaban:

26

Paket dinamai seperti itu di mana ada (atau dulu) suatu kebutuhan untuk memudahkan transisi antara dua versi utama suatu paket, dan waktu yang dibutuhkan untuk melakukannya diperkirakan akan lama. Selama masa transisi, baik versi lama dan baru tetap tersedia, dengan pengertian bahwa di masa mendatang versi lama akan dihentikan.

Terkadang periode transisi terjadi selama rilis sistem yang sedang Anda gunakan. Untuk beberapa paket, itu terjadi cukup sering sehingga Anda dapat mengharapkan untuk melihat versi paket transisi di setiap rilis sistem baru. Alat pengembangan perangkat lunak sering masuk dalam kategori ini, karena memutakhirkan ke alat baru dengan jadwal yang sama dengan rilis sistem mungkin tidak praktis. Ketergantungan perusahaan saya pada versi tertentu dari GCC, Autoconf dan Perl mungkin berada pada siklus 5 tahun, sedangkan OS saya mungkin berada pada siklus peningkatan 3 tahun. Oleh karena itu membuatnya lebih mudah bagi saya untuk mengadopsi OS baru jika itu termasuk versi lama saya dari beberapa paket selain apa pun yang saat ini pada saat OS baru sedang dikembangkan.

Di lain waktu, perubahan versi utama ini terjadi di masa lalu, di masa lalu, dan sekarang semua orang ada di versi saat ini. Inilah yang terjadi dengan Apache, misalnya. Perubahan 1,3 ke 2,0 adalah kesepakatan yang jauh lebih besar dari sudut pandang kompatibilitas daripada perubahan versi 2.x mana pun, jadi setelah semua orang keluar dari 1.3, tidak ada lagi kebutuhan untuk terus menawarkan beberapa versi Apache dalam rilis OS yang diberikan. Tapi, setelah Anda membuat semua orang menggunakan apache2paket, tidak ada argumen yang sangat baik untuk mengubah nama kembali menjadi adil apache. Itu akan menyebabkan kerumitan upgrade yang tidak perlu. Selain itu, di mana ada kebutuhan yang dirasakan di masa lalu untuk menyediakan dua versi paralel sementara, kebutuhan mungkin akan terulang di masa depan.

Praktik penamaan paket ini biasanya hanya terjadi pada pustaka atau paket inti penting. Untuk paket periferal lainnya, Anda diharapkan untuk meningkatkan ke apa pun saat ini.

Perpustakaan lebih sering diperlakukan dengan cara ini daripada aplikasi karena, berdasarkan sifatnya, paket lain bergantung padanya. Semakin populer suatu perpustakaan, semakin tidak praktis untuk menuntut agar setiap paket lain bergantung padanya dibangun kembali dan disatukan kembali secara murni sehingga perpustakaan dapat ditingkatkan ke versi utama baru tanpa periode transisi ini.

Seringkali ketika aplikasi diperlakukan dengan cara ini, itu karena mengandung elemen pustaka. Misalnya, Apache bukan hanya server web, tetapi juga menyediakan API pengembangan untuk plugin. ( mod_foodan semacamnya.) Jika seseorang memiliki mod_somethingtautan lama terhadap plugin Apache 1.3 ABI dan belum memutakhirkannya untuk menggunakan API 2.0 yang lebih baru, akan lebih mudah jika OS Anda terus menawarkan Apache 1.3 yang lama sampai semua pembuat plugin memiliki kesempatan. untuk memperbarui plugin mereka.

Warren Young
sumber
3

Dari apa yang saya lihat, alasan untuk ini adalah:

  • Bantu migrasi dalam rilis utama paket: ketika PHP 5 dirilis, mungkin yang diperlukan untuk menginstal PHP 4. Ini memungkinkan seseorang untuk memiliki pilihan antara versi (setidaknya sampai versi yang lebih lama sudah usang).

  • Terus berikan pembaruan ke versi perangkat lunak yang lebih lama (mis. Setelah Apache 3 dirilis, mungkin diperlukan untuk menambal Apache 2) tanpa memutakhirkannya ke rilis besar yang lebih baru.

Misalnya kernel Linux memiliki (pada hari ini) versi stabil 3.5, 3.4.7, 3.2.24, 2.6.35.13 dll .... Jika Anda menjalankan 2.6.35 pada suatu sistem dan Anda ingin tetap up- to-date, tetapi tidak memutakhirkan kernel ini, Anda dapat menginstal paket yang memadai.

Renan
sumber